mv tarck_ellipsoid track_sphere_arc

This commit is contained in:
张壹 2024-11-06 16:50:15 +08:00
parent d701c6234b
commit 39eed90abb
2 changed files with 16 additions and 12 deletions

View File

@ -128,11 +128,18 @@ gctl::point3dc gctl::geometry3d::line_on_plane(const point3dc &face_p, const poi
return m; return m;
} }
gctl::point3dc gctl::geometry3d::track_ellipse(const point3dc &v1, const point3dc &v2, double phi) gctl::point3ds gctl::geometry3d::track_sphere_arc(const point3ds &v1, const point3ds &v2, double arc)
{ {
// Phi为弧度表示 if (fabs(v1.rad - v2.rad) > 1e-10)
double Phi = angle(v1, v2); {
return cos(phi)*v1 + sin(phi)/sin(Phi)*(v2 - cos(Phi)*v1); throw std::runtime_error("[gctl::geometry3d::track_sphere_arc] Invalid radius.");
}
point3dc p1 = v1.s2c(), p2 = v2.s2c();
double Phi = angle(p1, p2); // Phi为弧度表示
point3dc pc = cos(arc)*p1 + sin(arc)/sin(Phi)*(p2 - cos(Phi)*p1);
return pc.c2s();
} }
gctl::point3dc gctl::geometry3d::dot_on_plane(const point3dc &face_dot, const point3dc &face_nor, gctl::point3dc gctl::geometry3d::dot_on_plane(const point3dc &face_dot, const point3dc &face_nor,

View File

@ -156,18 +156,15 @@ namespace gctl
point3dc line_on_plane(const point3dc &face_p, const point3dc &face_nor, point3dc line_on_plane(const point3dc &face_p, const point3dc &face_nor,
const point3dc &line_p, const point3dc &line_nor); const point3dc &line_p, const point3dc &line_nor);
/** /**
* @brief * @brief
*
*
*
* *
* @param[in] v1 * @param[in] v1
* @param[in] v2 * @param[in] v2
* @param[in] phi () * @param[in] arc ()
* *
* @return * @return
*/ */
point3dc track_ellipse(const point3dc &v1, const point3dc &v2, double phi); point3ds track_sphere_arc(const point3ds &v1, const point3ds &v2, double arc);
/** /**
* @brief * @brief
* *