Υπολογίστε την απόσταση μεταξύ των κέντρων των κύκλων : < br > Point
 δέλτα = p2 - p1 ? επιπλέουν distanceSquared = delta.X * delta.X + delta.Y * delta.Y ? απόσταση float = sqrt ( distanceSquared ) ? 2 
 
 Έλεγχος αν οι κύκλοι είναι εντελώς ξεχωριστό από το άλλο. Στην περίπτωση αυτή, η απόσταση μεταξύ των κέντρων των κύκλων θα είναι μεγαλύτερη από το άθροισμα των ακτίνων τους, οπότε δεν υπάρχει κανένας τρόπος που μπορούν να τέμνονται. Αν αυτή είναι η περίπτωση , να διαχειριστεί το σφάλμα με οποιονδήποτε τρόπο λειτουργεί καλύτερα για το πρόγραμμά σας 
 
 εάν ( distSquared > ( r1 + r2 ) * ( r1 + r2 ) ) noIntersections επιστροφή? . 
 Η Φτηνές 3 
 Ελέγξτε εάν ένας κύκλος είναι εντελώς μέσα στο άλλο . Σε αυτή την περίπτωση , θα είναι επίσης δεν υπάρχουν λύσεις 
 
 αν ( distSquared < ( r1 - r2 ) * ( r1 - r2 ) ) επιστρέφει noInersections ? . 
 Η 
 4 Ελέγξτε εάν η κύκλοι είναι πανομοιότυπα. Αυτό σημαίνει ότι υπάρχει ένας άπειρος αριθμός των λύσεων - ένα για κάθε σημείο του κύκλου 
 
 αν ( distSquared == 0 && r1 == r2 ) infiniteIntersections επιστροφή? . 
 Η < br > Βρείτε το Διασταυρώσεις 
 5 
 Υπολογίστε την απόσταση από το κέντρο του πρώτου κύκλου με τη χορδή που συνδέει τα σημεία τομής 
 
 επιπλέουν chordDistanceSquared = ( r1 r1 * - . r2 * r2 - distSquared ) * ( r1 * r1 - r2 * r2 - distSquared ) /( 4 * distSquared ) ? επιπλέουν chordDistance = sqrt ( chordDistanceSquared ) ? 
 Η 6 
Υπολογίστε το μισό του μήκους της χορδής : < br >
 επιπλέουν halfChordLength = sqrt ( r1 r1 * - chordDistanceSquared ) ? 
 Η 7 
 Βρείτε το σημείο στο κέντρο της χορδής : 
 
 Point chordMidpoint = p1 + chordDistance * δέλτα /sqrt ( distSquared ) ? 
 8 
 Υπολογίστε τις θέσεις των σημείων τομής , χρησιμοποιώντας τις πληροφορίες που έχετε υπολογίζεται μέχρι στιγμής : 
 
 Intersection1.x = chordMidpoint.x + chordDistance * ( p2.y - p1.y ) /απόσταση? Intersection1.y = chordMidpoint.y + chordDistance * ( p2.x - p1.x ) /απόσταση? Intersection2.x = chordMidpoint.x - chordDistance * ( p2.y - p1 . y ) /απόσταση? Intersection2.y = chordMidpoint.y - chordDistance * ( p2.x - p1.x ) /απόσταση? 
 Η 
 εικόνων
           
Πνευματικά δικαιώματα © Γνώση Υπολογιστών Όλα τα δικαιώματα κατοχυρωμένα