Java 如何在3D中计算圆的切线?
我需要帮助来计算三维空间中圆的切线,这是我到目前为止得到的 切线用蓝线表示,这是我从朋友那里得到的计算切线的方法Java 如何在3D中计算圆的切线?,java,trigonometry,geometry,processing,Java,Trigonometry,Geometry,Processing,我需要帮助来计算三维空间中圆的切线,这是我到目前为止得到的 切线用蓝线表示,这是我从朋友那里得到的计算切线的方法 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; }
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 );
}
}
两个点之间的Vec3D GetTangent(Vec3D p1,Vec3D p2){
Vec3D r=新的Vec3D(p1.x-p2.x,
p1.y-p2.y,
p1.z-p2.z);
r、 规范化();
返回r;
}
void getTangents(){
Vec3D-p0,p1;
对于(int i=1;i<曲线长度+1;i++){
p0=点[i%曲线长度];
p1=点[(i+1)%curve_length];
切线[i%曲线长度]=两点之间的GetTangent(p0,p1);
}
}
任何帮助都将非常感谢基本上,你可以找到从你需要的点到圆心的切线的向量,并取该向量的叉积以及圆的法线(取圆心的2个点加上圆心得到一个平面方程)
如果你对叉积进行规格化,你会得到该点的法向量/切向量。基本上,你会找到从需要切线的点到圆心的向量,并得到该向量的叉积和圆的法向量(取圆的两个点加上圆心,得到一个平面方程)
如果对该叉积进行规格化,则得到该点的法线/切线向量。在代码中用i-1替换i:
p0 = points[(i-1) % curve_length];
我假设您的点在圆上的间距相等,因此上一点和下一点之间的直线将平行于当前点的切线。在代码中用I-1替换I:
p0 = points[(i-1) % curve_length];
我假设你的点在圆上的间隔相等,因此上一点和下一点之间的直线将平行于当前点的切线。作为旁注:
I
最好是I作为旁注:I
最好是I