del-geo 0.1.5

2D/3D geometry utility coddes
Documentation
pub fn nearest_to_line3<T>(
    line_org_a: &nalgebra::Vector3<T>,
    line_dir_a: &nalgebra::Vector3<T>,
    line_org_b: &nalgebra::Vector3<T>,
    line_dir_b: &nalgebra::Vector3<T>)
    -> (T, T, T, nalgebra::Vector3<T>, nalgebra::Vector3<T>)
    where T: nalgebra::RealField + Copy
{
    let xaa = line_dir_a.dot(line_dir_a);
    let xab = line_dir_b.dot(line_dir_a);
    let xbb = line_dir_b.dot(line_dir_b);
    let scale = xaa * xbb - xab * xab;
    let xac = line_dir_a.dot(&(line_org_b - line_org_a));
    let xbc = line_dir_b.dot(&(line_org_b - line_org_a));
    let da = xbb * xac - xab * xbc;
    let db = xab * xac - xaa * xbc;
    let scaled_neraest_a = line_org_a.scale(scale) + line_dir_a.scale(da);
    let scaled_nearest_b = line_org_b.scale(scale) + line_dir_b.scale(db);
    (scale, da, db, scaled_neraest_a, scaled_nearest_b)
}