Welkom op de Nederland Computer Kennisnetwerk!  
 
Zoeken computer kennis
Home Hardware Netwerken Programmering Software Computerstoring Besturingssysteem
Computer Kennis >> Programmering >> C /C + + Programming >> Content
Hoe te snijcirkels Berekenen in C + +
Het berekenen van de snijpunten van twee cirkels is een wat lastig probleem in de meetkunde , maar de oplossing is simpel en eenvoudig te implementeren in C + + . Je zal een soort van punt class beschikbaar die elementaire rekenkunde , zoals optellen en aftrekken van 2 - dimensionale punten kan verwerken . Als je er geen hebt , kunt u een std :: vector gebruik van de Standard Template Library op dezelfde manier . < : Wat je
Point klasse die behandelt elementaire rekenkundige
Toon Meer Aanwijzingen
Check for Special Cases
1

Bereken de afstand tussen de cirkels ' centra nodig br

Point > delta = p2 - p1 ; float distanceSquared = delta.X * delta.X + delta.Y * delta.Y ; float afstand = sqrt ( distanceSquared ) ;

controleren 2 als de cirkels zijn volledig gescheiden van elkaar . In dit geval zal de afstand tussen de middelpunten van de cirkels groter dan de som van de radii , dus er is geen manier kunnen kruisen . Als dit het geval is , omgaan met de fout op welke manier het beste werkt voor uw programma

if ( distSquared > ( R1 + R2 ) * ( R1 + R2 ) ) return noIntersections ; .
Goedkope 3

Controleer als er een cirkel is volledig binnen de andere . In dit geval , zal er ook geen oplossingen

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

Controleer 4 indien de cirkels identiek . Dit betekent dat er een oneindig aantal oplossingen - een voor elk punt op de cirkel

if ( distSquared == 0 && r1 == r2 ) return infiniteIntersections ; .
< . br > Vind de Kruisingen
5

Bereken de afstand van het centrum van de eerste cirkel om het akkoord verbinden de snijpunten

float
chordDistanceSquared = ( r1 * r1 - r2 * r2 - distSquared ) * ( * r1 r1 - r2 * r2 - distSquared ) /( 4 * distSquared ) ; float chordDistance = sqrt ( chordDistanceSquared ) ;
6

Bereken de helft van de lengte van het akkoord : < br >

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

Vind de punt in het midden van het akkoord :

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

Bereken de locaties van de snijpunten met de informatie die je tot nu toe hebt berekend :

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

Previous: Next:
  C /C + + Programming
·Visual C Projects 
·Hoe zorg ervoor Maak een objec…
·Wat is het belang van het lere…
·Hoe een String Take Van een In…
·Hoe maak je een C + + computer…
·Hoe maak je een CFG File Met V…
·Hoe kan ik een string omzetten…
·Programma's in C + + dat een z…
·Hoe maak je een IRC Spybot Cre…
  Related Articles
Hoe maak je een Combo Box Maak in Visual…
Hoe maak je een Check Box Maak in Visual…
Hoe maak je een tekstvak maken in Visual…
Hoe maak je een optie Box in Visual Basi…
Hoe maak je een schijf keuzelijst in Vis…
Hoe kan ik een keuzelijst maken in Visua…
Hoe kan ik een Picture Box Maak in Visua…
Hoe een bestand keuzelijst Maak in Visua…
Hoe kan ik een afbeelding Box Maak in Vi…
  Programmering Articles
·Hoe te gebruiken VB te schrijven Compute…
·Hoe maak je een DirectShow Camera Applic…
·Hoe te Games ontwerpen in Java 
·Hoe te SAS Software gebruiken 
·Hoe een Applet Maak & C + + 
·Hoe je HTML tekst Wijzig Met JavaScript …
·Hoe kan ik codes krijgen voor Dev - C + …
·Hoe een bestand te creëren uploaden Rou…
·Hoe laag Prioriteit Verwijder in MySQL 
Copyright © Computer Kennis http://www.nldit.com