Definition at line 981 of file lwlinearreferencing.c.
982{
987
988
989
990
991
992
993
994
995
996
997
998 pv.
x = (p1->
x - p0->
x);
999 pv.
y = (p1->
y - p0->
y);
1000 pv.
z = (p1->
z - p0->
z);
1001
1002
1003
1004 qv.
x = (q1->
x - q0->
x);
1005 qv.
y = (q1->
y - q0->
y);
1006 qv.
z = (q1->
z - q0->
z);
1007
1008
1012
1013
1014 double dv2 =
DOT(dv, dv);
1015
1016
1017 if (dv2 == 0.0)
1018 {
1019
1020 return t0;
1021 }
1022
1023
1024 w0.
x = (p0->
x - q0->
x);
1025 w0.
y = (p0->
y - q0->
y);
1026 w0.
z = (p0->
z - q0->
z);
1027
1028
1029
1030
1031
1032
1033 double t = -
DOT(w0, dv) / dv2;
1034
1035
1036 if (t > 1.0)
1037 {
1038
1039
1040 t = 1;
1041 }
1042 else if (t < 0.0)
1043 {
1044
1045 t = 0;
1046 }
1047
1048
1049
1053
1057
1058 t = t0 + (t1 - t0) * t;
1059
1060
1061 return t;
1062}
References DOT, POINT3DZ::x, POINT4D::x, POINT3DZ::y, POINT4D::y, POINT3DZ::z, and POINT4D::z.
Referenced by lwgeom_cpa_within(), and lwgeom_tcpa().