Programação  
 
Conhecimento computador >> Programação >> C /C + + programação >> 
Como calcular interseção Circles em C + +
Cálculo dos pontos de intersecção de dois círculos é um problema um pouco complicado na geometria , mas a solução é fácil e simples de implementar em C + +. Você vai precisar de algum tipo de classe de ponto disponível que pode lidar com a aritmética básica, como adição e subtração de pontos 2- dimensionais. Se você não tiver um, você pode usar um std :: vector da Standard Template Library , da mesma forma . Coisas que você precisa
classe Point que lida com aritmética básica
Show Mais instruções
Verificar Casos Especiais
1

Calcule a distância entre os centros dos círculos :

Ponto delta = p2 - p1 ; flutuar distanceSquared = delta.X * delta.X + delta.Y * delta.Y ; flutuador distância = sqrt ( distanceSquared );
2

Verificação se os círculos são completamente separadas umas das outras . Neste caso , a distância entre os centros dos círculos irá ser maior do que a soma dos seus raios , de modo que não há nenhuma maneira que se pode cortar . Se este for o caso, tratar o erro de qualquer maneira que funciona melhor para o seu programa

if ( distSquared > ( R1 + R2 ) * ( R1 + R2 )) noIntersections retorno ; .

3

Verifique se um círculo é completamente dentro do outro. Neste caso, haverá também há soluções

if ( distSquared <( r1 - r2) * ( r1 - r2) ) retornar noInersections ; .
4

Verifique se o círculos são idênticos . Isto significa que há um número infinito de soluções - um para cada ponto no círculo

if ( distSquared == 0 && r1 == r2) infiniteIntersections retorno ; .

Encontre o Interseções
5

Calcule a distância do centro do primeiro círculo para o acorde que liga os pontos de intersecção

flutuar chordDistanceSquared = (R1 * r1 - . r2 r2 * - distSquared ) * ( * r1 r1 - r2 * r2 - distSquared ) /( 4 * distSquared ) ; flutuar chordDistance = sqrt ( chordDistanceSquared ) ;
6

Calcular a metade do comprimento da corda :

flutuar halfChordLength = sqrt ( r1 * r1 - chordDistanceSquared );
7

Encontre o ponto no centro da corda :

ponto chordMidpoint = p1 + chordDistance * delta /sqrt ( distSquared );
8

Calcule as localizações dos pontos de intersecção , utilizando as informações que você já calculou até agora:

Intersection1.x = chordMidpoint.x + chordDistance * ( p2.y - p1.y ) /distância ; Intersection1.y = chordMidpoint.y + chordDistance * ( p2.x - p1.x ) /distância ; Intersection2.x = chordMidpoint.x - chordDistance * ( p2.y - p1 . y) /distância ; Intersection2.y = chordMidpoint.y - chordDistance * ( p2.x - p1.x ) /distância ;

Anterior :

Próximo : No
  Os artigos relacionados
·Como usar a função atoi 
·Como depurar C + + Tags 
·Como limitar a casa decimal em Linguagem C 
·Como usar uma função GetOpenFileName 
·Como escrever um programa C + + computador que calcula …
·Como converter uma String para um gráfico em C + + 
·Como Alfabetizar uma matriz em C + + 
·Objetivo Questionamento em C Programação 
·Como Ler MDB para ODBC 
·Como compilar Flex para iPhone 
  Artigos em destaque
·Como depurar vazamentos de memória em GDB 
·Como compilar Flex para iPhone 
·Como escrever código para o iPhone 
·Como ler um arquivo linha de cada vez na C 
·XCode : Como criar uma gota 
·As vantagens de LINQ 
·Como escrever um programa C + + computador que calcula …
·Como conectar VB6.0 & VC + + 
·Como atualizar o Xcode De Terminais 
·Como converter C + + ASCII para UTF8 
Cop e direita © Conhecimento computador http://ptcomputador.com Todos os Direitos Reservados