Mais

Como calcular o centro e o raio de um círculo com base em pontos


Eu tenho um conjunto de pontos de latitude / longitude. Preciso calcular o ponto central e o raio de um círculo que abrangerá todos os pontos.

O sistema de coordenadas usado é latitude / longitude de acordo com o Google Maps.

Eu usei anteriormente o Think-Geo MapSuite, onde poderia chamar uma função, fornecer uma coleção de pontos e receber uma caixa delimitadora. Eu usaria a caixa delimitadora para instruir o mapa a ser exibido em um local e escala específicos.

O conjunto de ferramentas que estou usando agora é o Xamarin Forms. Esta é uma ferramenta de plataforma cruzada que fornece um invólucro de alto nível em plataformas móveis. Para iOS, são mapas da Apple, Android é Google Maps e Windows Phone é Bing Maps. É uma nova ferramenta, então o invólucro é muito básico no momento. Só posso fornecer um ponto central e um raio para instruir o mapa onde ele deve ser exibido.

No final das contas, preciso do código C #, mas o pseudocódigo ou qualquer outro tipo seria de grande ajuda.


Primeiro você tem que calcular o centroide do seu polígono, ou seja, seu conjunto de Lon / Lat. Isso é matemática simples, consulte Wikipedia, por exemplo: Centróide de polígono

Em seguida, calcule a distância deste centróide a cada coordenante de seu conjunto usando Pitágoras simples. O maior valor será o raio do seu círculo.

1 grau na latitude é equivalente a 111 km, 1 grau na longitude é cercacos (Lat) * 111km

Observe que, como você tem coordenadas geográficas de Lat / Lon (e não valores cartesianos), esse cálculo não é 100% exato. No entanto, deve satisfazer suas necessidades, desde que a área não seja muito grande (digamos, alguns quilômetros).


Eu acho que você realmente não precisa de um círculo / raio. Se o objetivo é apenas obter todos os pontos na tela, você pode apenas calcular a caixa delimitadora e, a partir dela, calcular a posição central e a extensão (distância do centro até qualquer borda que esteja mais distante).

Claro, a API é péssima e você tem que fornecer uma distância em metros, mas você só tem em graus. Portanto, provavelmente será necessária uma multiplicação aproximada da maior das distâncias em graus por 111.319,9 para obter metros.

A caixa delimitadora em pontos é simples - comece com as coordenadas do primeiro ponto, a seguir itere sobre todos os outros pontos e estenda a caixa delimitadora se o ponto estiver fora da caixa delimitadora que você possui.

Isso é muito básico, mas se você precisar em C #, poste a estrutura de dados inicial que você tem e eu posso fazer um rascunho.


Verifique se a abordagem abaixo funciona

  1. Encontre o casco convexo desses pontos
  2. Encontre o centroide do polígono do casco convexo - que se torna o centro
  3. A maior distância do centroide ao conjunto de pontos é o raio do círculo desejado

Para C #, consulte este tópico ou este


Xamarin.Forms Map Polygons and Polylines

Os elementos Polygon, Polyline e Circle permitem que você destaque áreas específicas em um mapa. Um polígono é uma forma totalmente fechada que pode ter um traço e uma cor de preenchimento. Uma polilinha é uma linha que não envolve totalmente uma área. Um círculo destaca uma área circular do mapa:

As classes Polygon, Polyline e Circle derivam da classe MapElement, que expõe as seguintes propriedades vinculáveis:

  • StrokeColor é um objeto Color que determina a cor da linha.
  • StrokeWidth é um objeto flutuante que determina a largura da linha.

A classe Polygon define uma propriedade vinculável adicional:

Além disso, as classes Polygon e Polyline definem uma propriedade GeoPath, que é uma lista de objetos Position que especificam os pontos da forma.

A classe Circle define as seguintes propriedades vinculáveis:

  • Center é um objeto Position que define o centro do círculo, em latitude e longitude.
  • Raio é um objeto Distância que define o raio do círculo em metros, quilômetros ou milhas.
  • FillColor é uma propriedade Color que determina a cor dentro do perímetro do círculo.

Se a propriedade StrokeColor não for especificada, o traço assumirá o padrão de preto. Se a propriedade FillColor não for especificada, o preenchimento será transparente por padrão. Portanto, se nenhuma propriedade for especificada, a forma terá um contorno preto sem preenchimento.


Raio e Diâmetro

O raio é uma linha do ponto central de um círculo a qualquer parte do círculo. Este é provavelmente o conceito mais simples relacionado aos círculos de medição, mas possivelmente o mais importante.

O diâmetro de um círculo, em contraste, é a distância mais longa de uma borda do círculo até a borda oposta. O diâmetro é um tipo especial de corda, uma linha que une quaisquer dois pontos de um círculo. O diâmetro é duas vezes maior que o raio, portanto, se o raio for de 2 polegadas, por exemplo, o diâmetro será de 4 polegadas. Se o raio fosse de 22,5 centímetros, o diâmetro seria de 45 centímetros. Pense no diâmetro como se você estivesse cortando uma torta perfeitamente circular bem no centro, de modo que tenha duas metades iguais da torta. A linha onde você corta a torta em dois seria o diâmetro.


Como calcular o centro e o raio de um círculo com base em pontos - Sistemas de Informação Geográfica


Esta calculadora utiliza estas equações:

& # 160 comprimento do arco & # 160 = & # 160 [raio & # 8226 ângulo central (radianos)]

& # 160 comprimento do arco & # 160 = & # 160 circunferência & # 8226 [ângulo central (graus) & # 247 360]
& # 160 onde circunferência & # 160 = & # 160 [2 & # 8226 & # 960 & # 8226 raio]

Conhecendo duas dessas três variáveis, você pode calcular a terceira. Ainda mais facil, esta calculadora pode resolver isso para você.

Comece clicando em "Comprimento do arco", "Raio" ou "Ângulo central".
Insira as 2 linhas de dados.
Clique em "CALCULAR" e você tem sua resposta.
Clicar em "RESET" limpa todas as caixas.

Problemas de exemplo 1) Um círculo tem um raio de 7 e um ângulo central de 2 radianos. Qual é o comprimento do arco?
Clique no botão "Comprimento do arco", insira o raio 7 e o ângulo central = 2.
Clique em "CALCULAR" e sua resposta é 14.
Esta calculadora também aceita entrada em graus e radianos.
Para este problema, vamos tentar alguns dados novos.
1b) Raio = 3,6 & # 160 ângulo central 63,8 graus. O comprimento do arco é igual?
Clique no botão "Comprimento do arco", insira o raio 3,6 e clique no botão "GRAUS". Insira o ângulo central = 63,8 e clique em "CALCULAR" e sua resposta é Comprimento do arco = 4,0087.

2) Um círculo tem um comprimento de arco de 5,9 e um ângulo central de 1,67 radianos. Qual é o raio?
Clique no botão "Raio", insira o comprimento do arco 5,9 e o ângulo central 1,67.
Clique em "CALCULAR" e sua resposta é raio = 3,5329.
Vamos tentar inserir os graus novamente. 2b) O comprimento do arco de um círculo é 4,9 com um ângulo central de 123 graus. Qual é o raio?
Clique no botão "Raio", insira o comprimento do arco = 4,9 e clique no botão "GRAUS". Insira ângulo central = 123 e clique em "CALCULAR" e sua resposta é Raio = 2,2825.

3) Um ângulo tem um comprimento de arco de 2 e um raio de 2. Qual é o ângulo central?
Clique no botão "Ângulo central", insira o comprimento do arco = 2 e raio = 2.
Clique em "CALCULAR" e sua resposta é 1 Radiano e 57,296 graus.


3 respostas 3

Aqui está uma linha para obter uma equação cartesiana implícita:

A partir daqui, podemos usar a técnica desta resposta:

A massagem manual deste resultado leva à forma

o que significa que o resultado é um círculo com centro <(a ^ 2 + 1) / (a ​​^ 2 - 1), 0> e raio Abs [2 a / (1 - a ^ 2)].

Para valores concretos de a, isso pode ser feito da seguinte maneira.

Aprendi uma coisa muito legal, mas não consigo encontrar a referência. Provavelmente de um dos autores das Pérolas de Indra.

Há uma correspondência um a um entre círculos e matrizes Hermitianas de determinante negativo. Assim, qualquer círculo pode ser representado pela matriz Hermitiana

onde o número complexo $ p $ é o centro do círculo, e o número real $ r $ é o raio do círculo.

O mapeamento de um círculo de entrada para um círculo de saída é realizado por $ G = (M ^ <-1>) ^ cdot H cdot M ^ <-1> $, onde $ M = <,> $ na transformação Mobius. Em forma de componente,

$ G = left [ begin d ^ * & amp -c ^ * -b ^ * & amp a ^ * end right] cdot left [ begin 1 & amp -p -p ^ * & amp | p | ^ 2-r ^ 2 end right] cdot left [ begin d & amp -b -c & amp a end right] $

onde o sobrescrito $ * $ indica conjugação complexa. O resultado é outra matriz hermitiana

$ G = left [ begin A & amp B B ^ * & amp C end right] = left [ begin 1 & amp -q -q ^ * & amp | q | ^ 2-s ^ 2 end right] $

correspondendo a um novo círculo com centro $ q $ e raio $ s $.

MobiusMap encontra os coeficientes $ $ da matriz hermitiana $ G $, e forma o círculo de saída a partir delas. Tem um caso especial quando $ A = 0 $, resultando em uma linha $ U x + V y + W = 0 $. As razões tomadas para formar o círculo de saída são independentes de o mapeamento ter ou não determinante de unidade.

Seu mapeamento é $ M = < <1,1 >, <1, -1 > > $. A matriz hermitiana correspondente ao círculo mapeado é $ G = < <1 - r ^ 2, 1 + r ^ 2 >, <1 + r ^ 2, 1 - r ^ 2 > > $. Assim, o centro $ q = - / A = frac$, e o raio $ s = frac <2r>$ .


Como calcular o centro e o raio de um círculo com base em pontos - Sistemas de Informação Geográfica

Exemplo: Insira estes três pontos (5, 8) (7, 6) e (9, 2) clique em "ENTER"
O centro do círculo está localizado em (-2, -1) com raio = 11,402 e
a equação do círculo é (x +2) & # 178 + (y +1) & # 178 = 130

Vamos pegar três pontos e encontrar o centro e a equação de um círculo.

Ponto A (9, 2)
Ponto B (3, -4)
Ponto C (5, -6)

Primeiro, precisaremos determinar o inclinações de duas linhas - linhas AB e BC.

Agora, precisamos encontrar o coordenada 'x' do centro do círculo que é:

xctr = [declive AB * declive BC * (Y3 -Y1) + declive AB * (X2 + X3) - declive BC * (X1 + X2)] & # 247 [2 * (declive AB - declive BC)]
xctr = [(1 * -1 * (-6 -2)) + (1 * (3 + 5)) - (-1 * (9 + 3))] & # 247 2 * (1 --1)
xctr = (-1 * (-8)) + 8 - (- 12) & # 247 4
xctr = (8 + 8 + 12) & # 247 4
xctr = 7

Para encontrar o coordenada 'y' do centro do círculo, usamos esta fórmula:

yctr = - (1 / declive AB) * (xctr - [(x1 + x2) / 2)] + (y1 + y2) / 2
yctr = - (1/1) * (7 - [(9 +3) / 2]) + (2 -4) / 2
yctr = (-1 * (7 -6)) - (2/2)
yctr = (-1 * 1) -1
yctr = -2

Circle's Center está localizado em: (7, -2)

Finalmente, para calcular o raio do círculo, usamos esta fórmula:

raio = Raiz quadrada [(x1 -xCtr) ^ 2 + (y1 -yCtr) ^ 2)]
onde (x1, y1) pode ser algum dos três pontos, mas vamos usar (9, 2)
raio = Raiz quadrada [(9 -7) ^ 2 + (2 --2) ^ 2)]
raio = Raiz quadrada [(2) ^ 2 + (4) ^ 2)]
raio = Raiz quadrada (20)
raio = 4,472135955

Para calcular o equação do círculo, insira esses três números nesta equação.


Sua entrada: encontre o centro, área, circunferência (perímetro), raio, diâmetro, interceptações xe interceptações y do círculo $$ x ^ <2> + y ^ <2> = 9 $$.

Gráfico: para representar graficamente o círculo, visite a calculadora de gráficos circulares (escolha a opção "Implícito").

Centro: $$ left (0,0 right) $$.

Raio: $$ 3 $$.

Diâmetro: $$ 6 $$.

Circunferência: $$ 6 pi approx 18.8495559215388 $$.

Área: $$ 9 pi aproximadamente 28,2743338823081 $$.

Excentricidade: $$ 0 $$.

Excentricidade linear: $$ 0 $$.

interceptações x: $$ left (-3, 0 right), left (3, 0 right) $$.

interceptações y: $$ left (0, -3 right), left (0, 3 right) $$.


Tente você mesmo

Mas você pode ver uma equação de círculo e não sei disso!

Porque pode não estar no bom "Formulário Padrão" acima.

Como exemplo, vamos colocar alguns valores em a, be r e, em seguida, expandi-los

É uma equação circular, mas "disfarçada"!

Então, quando você vir algo assim, pense "hmm. isso poderia seja um círculo! "

Na verdade, podemos escrever em "Forma geral" colocando constantes em vez de números:

Observação: o formulário geral sempre tem x 2 + y 2 para os dois primeiros termos.


Como funciona a calculadora

A calculadora calcula o ponto médio geográfico com base na suposição de uma Terra esférica. O ponto médio geográfico para quaisquer dois pontos na superfície da Terra está localizado na metade do caminho ao longo da rota do grande círculo, que é a rota mais curta que passa entre os dois pontos, e seria como esticar uma corda entre os dois pontos em um globo mundial e encontrar o meio a corda. O ponto médio geográfico para três ou mais pontos na superfície da Terra é o centro de gravidade (centro de massa ou localização média) para todos os pontos.

Para ajudar a visualizar o conceito de centro de gravidade, imagine que um pequeno peso está posicionado na localização de várias cidades em um globo mundial. Agora imagine que o globo possa girar livremente até que a parte mais pesada do globo seja puxada pela gravidade até que esteja voltada para baixo. A parte mais baixa (e mais pesada) do globo é o centro de gravidade e o ponto médio geográfico de todas as cidades ponderadas. Consulte Métodos de cálculo para obter uma descrição detalhada.


Calculando Pontos Intermediários do Grande Círculo

Em certas circunstâncias, você pode querer dividir um grande círculo em intervalos regulares. O recurso de Pontos Intermediários do Grande Círculo fará exatamente isso. Você pode ativar esse recurso selecionando Cálculos -> Ponto Intermediário do Grande Círculo no menu da janela principal.

Além das coordenadas geográficas para dois pontos na superfície da Terra, o cálculo dos Pontos Intermediários do Grande Círculo requer que você insira a porcentagem da distância ao longo do grande círculo, conectando a Posição 1 e a Posição 2, na qual a Posição 3 se encontra. Depois de selecionar suas unidades de saída e esferóide, pressione o botão Calcular para calcular os resultados. Este cálculo retornará a distância do grande círculo entre a Posição 1 e a Posição 2, a distância do grande círculo entre a Posição 1 e a Posição 3 e a longitude e latitude para a Posição 3.


Assista o vídeo: Omkrets og areal av en sirkel (Outubro 2021).