如何计算 3D 圆的切线?

Ric*_*hez 0 java processing geometry trigonometry

我需要帮助来计算 3D 空间中圆的切线,这是我到目前为止所拥有的 在此输入图像描述

在此输入图像描述

切线用蓝线表示,这是我从朋友那里得到的计算它们的方法

Vec3D getTangentBetweenTwoPoint( Vec3D p1, Vec3D p2 ) {
Vec3D r = new Vec3D( p1.x - p2.x,
                     p1.y - p2.y,
                     p1.z - p2.z );
  r.normalize();
  return r;
}

void getTangents() {
  Vec3D p0, p1;
  for ( int i = 1; i < curve_length + 1; i++ ) {
    p0 = points[i % curve_length];
    p1 = points[(i+1) % curve_length];
    tangents[i % curve_length] = getTangentBetweenTwoPoint( p0, p1 );
  }
}
Run Code Online (Sandbox Code Playgroud)

任何帮助都感激不尽

Tho*_*mas 6

基本上,您可以找到从需要切线的点到圆心的向量,并取该向量与圆法线的叉积(通过取圆的 2 个点加上圆心得到,结果为平面方程)。

如果对该叉积进行归一化,您将获得该点的法线/切线向量。