2017-04-09 2 views
0

Betrachten Sie die folgende Gleichheit und Anleitung:Projizieren eines Punkts in einem Segment: Was passiert, wenn die Extremitäten eines Segments dieselbe Koordinate haben?

p = ((x - a).(b - a))/((b - a).(b - a)) (b - a) + a

Wo a und b die Extremitäten des Segments sind, x der Punkt, den wir in diesem Segment und p die Projektion von x in diesem Segment projizieren wollen. Alle sind Vektorpunkte.

Jetzt ist der Code, der p 's X-Koordinate:

  coords_p.add(
       "" 
         + (

         ((test_x - segment_first_point_x) * (segment_last_point_x - segment_first_point_x)) // "((x - a).(b - a))" 
           /
           (// "((b - a).(b - a))" 
             (segment_last_point_x - segment_first_point_x) * (segment_last_point_x - segment_first_point_x) 

           ) 

           * 
           (segment_last_point_x - segment_first_point_x) // "* (b - a)" 

         + 

         segment_first_point_x) // " + a" 
     ); 

nun das gleiche für p' gesetzt s Y-Koordinate:

 coords_p.add(
       "" 
         + (

         ((test_y - segment_first_point_y) * (segment_last_point_y - segment_first_point_y)) // "((x - a).(b - a))" 
           /
           (0.00001+ // "((b - a).(b - a))" 
             (segment_last_point_y - segment_first_point_y) * (segment_last_point_y - segment_first_point_y) 

           ) 

           * 

           (segment_last_point_y - segment_first_point_y) // "* (b - a)" 

         + 

         segment_first_point_y) // " + a" 

     ); 

Wie Sie sehen können, wenn segment_last_point_y == segment_first_point_y OR | segment_last_point_x == segment_first_point_x, der Nenner der Division wird 0 sein.

Einer der Koordinaten p (oder beide) ist also ein NaN ("Not A Number"): es wird ungültig sein.

Also ich denke, ich habe nicht verstanden, wie man einen Punkt projiziert ... Könnten Sie mich bitte aufklären?

Antwort

1

Hallo wieder :) Das Problem in der Berechnung von p ist, sollte es nicht seine OR, wie Sie beschreiben, sollte es UND weil der Nenner des Koeffizienten in der p-Formel ist (b - a) (b - a). Dies sollte genau dann 0 sein, wenn a und b der gleiche Punkt sind, dh Sie haben kein Liniensegment.

Verwandte Themen