GEOintersectLineLine |
Top Previous Next |
Berechnung des Schnittpunktes zweier Strecken. Mit dieser Funktion wird der Schnittpunkt zweier Strecken, welche durch ihre Anfangs- und Endpunkte gegeben sind, berechnet. Liegt der Schnittpunkt der Linien auf einer oder auf beiden Verlängerungen so wird auch dieser berechnet. Alle Parameter, deren Werte nicht benötigt werden, dürfen mit NULL-Zeigern belegt werden. Der Unterschied zwischen Schnitt auf der Verlängerung und parallel ist nur durch Auswerten der restlichen Parameter zu erreichen. Diese werden nicht verändert, wenn die beiden Strecken parallel verlaufen. Parameter x1 (double) [IN] y1 (double) [IN] x2 (double) [IN] y2 (double) [IN] Start- und Endpunkt der ersten Linie x3 (double) [IN] y3 (double) [IN] x4 (double) [IN] y4 (double) [IN] Start- und Endpunkt der zweiten Linie xs (double *) [OUT] ys (double *) [OUT] Berechneter Schnittpunkt der beiden Linien. s12 (double *) [OUT] Faktor, mit dem der Vektor (x1,y1)->(x2,y2) multipliziert werden muss, um zum Schnittpunkt zu gelangen. s34 (double *) [OUT] Faktor, mit dem der Vektor (x3,y3)->(x4,y4) multipliziert werden muss, um zum Schnittpunkt zu gelangen. Ergebnis (int) [OUT] 1 Schnittpunkt liegt auf beiden Linien 0 Schnittpunkt außerhalb der Linien oder es gibt keinen Schnittpunkt. Deklaration #include "basic.h"
int DLLENTRY GEOintersectLineLine( double x1, double y1, double x2, double y2, double x3, double y3, double x4, double y4, double * xs, double * ys, double * s12, double * s34 ); Beispiel status = GEOintersectLineLine(0.0, 0.0, 500.0, 500.0, 50.0, 450.0, 350.0, 150.0, &xs, &ys,&s12,&s34) Die Variable status erhält den Wert 1, d.h. die Linien schneiden sich im Punkt xs=250, ys=250. status = GEOintersectLineLine(0.0, 0.0, 150.0, 150.0, 50.0, 450.0, 350.0, 150.0, &xs, &ys) Die Variable status erhält den Wert 0, d.h. der Schnittpunkt liegt in einer (oder beiden) Verlängerung bei xs=250, ys=250. status = GEOintersectLineLine(0.0, 0.0, 500.0, 500.0, 50.0, 150.0, 300.0, 400.0, &xs, &ys) Die Variable status erhält den Wert 0, d.h. die Linien schneiden sich nicht, da sie parallel sind. Verwandte Funktionen
|