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

GEOintersectArcArc

GEOintersectCircleArc

GEOintersectCircleCircle

GEOintersectCircleLine

GEOintersectLineArc

GEOintersectLineLine2

GEOintersectLineSpline

GEOintersectStraightArc

GEOintersectStraightCircle

GEOintersectStraightLine

GEOintersectStraightStraight

GEOintersectStraightVector

GEOintersectVectorVector