GEOperpendicularToLine

Top  Previous  Next

Fällt das Lot von einem Punkt auf eine Gerade.

Gegeben sind die beiden Referenzpunkte einer Geraden und ein Punkt in der Ebene. Die Prozedur berechnet den Schnittpunkt des Lotes vom Punkt auf die Gerade, wobei gleichzeitig festgestellt wird, ob dieser Punkt auch auf der Strecke zwischen den beiden Punkten der Geraden liegt.

Parameter

xPoint (DOUBLE)                                        [IN]

yPoint (DOUBLE)                                        [IN]

Von diesem Punkt aus wird das Lot auf die durch (x1Line,y1Line) und (x2Line,y2Line) spezifizierte Gerade berechnet. Es ist kein Fehler, wenn dieser Punkt selbst auf der Geraden liegt.

x1Line (DOUBLE)                                       [IN]

y1Line (DOUBLE)                                       [IN]

Dies ist der erste Punkt zum Festlegen der Geraden, auf die das Lot gefällt wird.

x2Line (DOUBLE)                                       [IN]

y2Line (DOUBLE)                                       [IN]

Dies ist der zweite Punkt zum Festlegen der Geraden, auf die das Lot gefällt wird.

xHit (DOUBLE *)                                [IN/OUT]

yHit (DOUBLE *)                                [IN/OUT]

Die Koordinaten des Lotpunktes werden berechnet und dann in die Variablen xHit und yHit geschrieben. xHit und yHit müssen auf Variablen vom Typ DOUBLE zeigen, also initialisiert sein.

notBetweenPoints (int *)                    [IN/OUT]

Hier liefert die Prozedur FALSE zurück, wenn der Lotpunkt zwischen den Punkten (x1,y1) und (x2,y2) liegt. Wenn der Lotpunkt außerhalb dieser Strecke liegt, steht hier TRUE. notBetweenPoints muss ein gültiger Zeiger sein. Der Wert ist größer als 0, wenn der Lotpunkt hinter (x2,y2) liegt, der Wert ist kleiner 0, wenn der Lotpunkt vor (x1,y1) liegt.

Ergebnis

---

Deklaration

#include "basic.h"

 

void DLLENTRY GEOperpendicularToLine(

     DOUBLE      xPoint,

     DOUBLE      yPoint,

     DOUBLE      x1Line,

     DOUBLE      y1Line,

     DOUBLE      x2Line,

     DOUBLE      y2Line,

     DOUBLE * xHit,

     DOUBLE * yHit,

     int *    notBetweenPoints

);