Definition at line 975 of file lwlinearreferencing.c.
976{
981
982
983
984
985
986
987
988
989
990
991
992 pv.
x = (p1->
x - p0->
x);
993 pv.
y = (p1->
y - p0->
y);
994 pv.
z = (p1->
z - p0->
z);
995
996
997
998 qv.
x = (q1->
x - q0->
x);
999 qv.
y = (q1->
y - q0->
y);
1000 qv.
z = (q1->
z - q0->
z);
1001
1002
1006
1007
1008 double dv2 =
DOT(dv, dv);
1009
1010
1011 if (dv2 == 0.0)
1012 {
1013
1014 return t0;
1015 }
1016
1017
1018 w0.
x = (p0->
x - q0->
x);
1019 w0.
y = (p0->
y - q0->
y);
1020 w0.
z = (p0->
z - q0->
z);
1021
1022
1023
1024
1025
1026
1027 double t = -
DOT(w0, dv) / dv2;
1028
1029
1030 if (t > 1.0)
1031 {
1032
1033
1034 t = 1;
1035 }
1036 else if (t < 0.0)
1037 {
1038
1039 t = 0;
1040 }
1041
1042
1043
1047
1051
1052 t = t0 + (t1 - t0) * t;
1053
1054
1055 return t;
1056}
References DOT, POINT3DZ::x, POINT4D::x, POINT3DZ::y, POINT4D::y, POINT3DZ::z, and POINT4D::z.
Referenced by lwgeom_cpa_within(), and lwgeom_tcpa().