2011-05-08 126 views
0

我需要帮助来计算3D空间中的圆的tangets,这是我迄今为止 enter image description here如何计算3D圆的切线?

enter image description here

切线由蓝线表示的,这是我从拿到方法一个朋友来计算他们

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); 
    } 
} 

任何帮助将非常感激

+0

作为附带说明:'I Thomas 2011-05-08 16:22:12

回答

3

基本上,你会发现从宝矢量诠释你所需要的切线为以圆的中心,并采取向量的叉积,以及圆的正常的(你采取圆的2分外加导致平面方程中心获得)。

如果您正常化跨产品,你得到该点的正常/切向量。

0

替换我的i-1在你的代码在这里:

p0 = points[(i-1) % curve_length]; 

我假设你点上圆等距间隔,所以以前的点和下一个点之间的线将平行于在当前点相切。