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;
}
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为弧度表示
double Phi = angle(v1, v2);
return cos(phi)*v1 + sin(phi)/sin(Phi)*(v2 - cos(Phi)*v1);
if (fabs(v1.rad - v2.rad) > 1e-10)
{
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,

View File

@ -156,18 +156,15 @@ namespace gctl
point3dc line_on_plane(const point3dc &face_p, const point3dc &face_nor,
const point3dc &line_p, const point3dc &line_nor);
/**
* @brief
*
*
*
* @brief
*
* @param[in] v1
* @param[in] v2
* @param[in] phi ()
* @param[in] v1
* @param[in] v2
* @param[in] arc ()
*
* @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
*