X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=simgear%2Fmath%2Fvector.cxx;h=75a0cb7af08ad7581e583491bb1d075bdaa1adcc;hb=4c79263dcff9072897089540be9876d6f21b794c;hp=600d391d15ef76e2e06376bd08b5991d484d4146;hpb=5173d709e090b953eaf800cbcd1bf897de332a12;p=simgear.git diff --git a/simgear/math/vector.cxx b/simgear/math/vector.cxx index 600d391d..75a0cb7a 100644 --- a/simgear/math/vector.cxx +++ b/simgear/math/vector.cxx @@ -28,102 +28,6 @@ #include "vector.hxx" -#include "mat3.h" - - -// Map a vector onto the plane specified by normal -void map_vec_onto_cur_surface_plane(MAT3vec normal, MAT3vec v0, MAT3vec vec, - MAT3vec result) -{ - MAT3vec u1, v, tmp; - - // calculate a vector "u1" representing the shortest distance from - // the plane specified by normal and v0 to a point specified by - // "vec". "u1" represents both the direction and magnitude of - // this desired distance. - - // u1 = ( (normal vec) / (normal normal) ) * normal - - MAT3_SCALE_VEC( u1, - normal, - ( MAT3_DOT_PRODUCT(normal, vec) / - MAT3_DOT_PRODUCT(normal, normal) - ) - ); - - // printf(" vec = %.2f, %.2f, %.2f\n", vec[0], vec[1], vec[2]); - // printf(" v0 = %.2f, %.2f, %.2f\n", v0[0], v0[1], v0[2]); - // printf(" u1 = %.2f, %.2f, %.2f\n", u1[0], u1[1], u1[2]); - - // calculate the vector "v" which is the vector "vec" mapped onto - // the plane specified by "normal" and "v0". - - // v = v0 + vec - u1 - - MAT3_ADD_VEC(tmp, v0, vec); - MAT3_SUB_VEC(v, tmp, u1); - // printf(" v = %.2f, %.2f, %.2f\n", v[0], v[1], v[2]); - - // Calculate the vector "result" which is "v" - "v0" which is a - // directional vector pointing from v0 towards v - - // result = v - v0 - - MAT3_SUB_VEC(result, v, v0); - // printf(" result = %.2f, %.2f, %.2f\n", - // result[0], result[1], result[2]); -} - - -// Given a point p, and a line through p0 with direction vector d, -// find the shortest distance from the point to the line -double fgPointLine(MAT3vec p, MAT3vec p0, MAT3vec d) { - MAT3vec u, u1, v; - double ud, dd, tmp; - - // u = p - p0 - MAT3_SUB_VEC(u, p, p0); - - // calculate the projection, u1, of u along d. - // u1 = ( dot_prod(u, d) / dot_prod(d, d) ) * d; - ud = MAT3_DOT_PRODUCT(u, d); - dd = MAT3_DOT_PRODUCT(d, d); - tmp = ud / dd; - - MAT3_SCALE_VEC(u1, d, tmp);; - - // v = u - u1 = vector from closest point on line, p1, to the - // original point, p. - MAT3_SUB_VEC(v, u, u1); - - return sqrt(MAT3_DOT_PRODUCT(v, v)); -} - - -// Given a point p, and a line through p0 with direction vector d, -// find the shortest distance (squared) from the point to the line -double fgPointLineSquared(MAT3vec p, MAT3vec p0, MAT3vec d) { - MAT3vec u, u1, v; - double ud, dd, tmp; - - // u = p - p0 - MAT3_SUB_VEC(u, p, p0); - - // calculate the projection, u1, of u along d. - // u1 = ( dot_prod(u, d) / dot_prod(d, d) ) * d; - ud = MAT3_DOT_PRODUCT(u, d); - dd = MAT3_DOT_PRODUCT(d, d); - tmp = ud / dd; - - MAT3_SCALE_VEC(u1, d, tmp);; - - // v = u - u1 = vector from closest point on line, p1, to the - // original point, p. - MAT3_SUB_VEC(v, u, u1); - - return ( MAT3_DOT_PRODUCT(v, v) ); -} - // Given a point p, and a line through p0 with direction vector d, // find the shortest distance (squared) from the point to the line