MCPcopy Create free account
hub / github.com/apple/ml-pointersect / compute_point_ray_distance_c

Function compute_point_ray_distance_c

pointersect/pr/cpp/pr.cpp:741–763  ·  view source on GitHub ↗

Compute the distance between a point and its projection on a ray. Args: p_p: (3, ) float pointer to xyz p_ro: (3, ) float pointer to xyz of ray origin p_rd: (3, ) float pointer to ray direction (normalized) Returns: dist: float t: float

Source from the content-addressed store, hash-verified

739// t: float
740//
741inline std::tuple<float, float> compute_point_ray_distance_c(
742 const float * p_p, // (3,)
743 const float * p_ro, // (3,)
744 const float * p_rd // (3,)
745) {
746 float dv[3] = {
747 p_p[0] - p_ro[0],
748 p_p[1] - p_ro[1],
749 p_p[2] - p_ro[2]
750 };
751
752 float t = dv[0] * p_rd[0] + dv[1] * p_rd[1] + dv[2] * p_rd[2];
753
754 float dd[3] = {
755 p_p[0] - (p_ro[0] + t * p_rd[0]),
756 p_p[1] - (p_ro[1] + t * p_rd[1]),
757 p_p[2] - (p_ro[2] + t * p_rd[2])
758 };
759
760 float dist = sqrt(dd[0] * dd[0] + dd[1] * dd[1] + dd[2] * dd[2]);
761
762 return std::make_tuple(dist, t);
763}
764
765
766

Callers 1

Calls

no outgoing calls

Tested by

no test coverage detected