【发布时间】:2016-09-30 18:48:07
【问题描述】:
我目前通过将某些 4 阶贝塞尔曲线相加来生成贝塞尔曲线。我正在使用GL_LINES。我需要在每个贝塞尔点绘制切线、法线和副法线。
据我所知,要在任何给定的 t 值处找到切线,方程是
P'(t) = 4 * (1-t)^3 *(P1 - P0) + 12 *(1-t)^2*t*(P2-P1) + 12 * (1-t) * t^2 * (P3-P2) + 4 * t^3 * (P4-P3)
我目前正在以下列方式使用上述等式。
temp = 1-t;
tangentPoints[val].XYZW[j] = (4 * pow(temp, 3)*(V[k + 1].XYZW[j] - V[k].XYZW[j])) + (12 * pow(temp, 2)*t*(V[k + 2].XYZW[j] - V[k + 1].XYZW[j])) + (12 * (temp)*pow(t, 2)*(V[k + 3].XYZW[j] - V[k + 2].XYZW[j])) + (4 * pow(t, 3)*(V[k + 4].XYZW[j] - V[k + 3].XYZW[j]));
其中 j 对应于 x、y、z 值,tangentPoints 是我为顶点定义的结构。 V是控制点的顶点数组。
我只是在贝塞尔曲线上的点(比如 x)之间画一条线,对于值 t 和它对应的切线值(比如 dx) 然而,在绘制(x,dx)之间的切线时,我得到了这样的东西(从(x,dx)画一条线)。
但是当我将贝塞尔点添加到每个相应的切点时,我得到了正确的图像,即通过在 (x,x+dx) 之间画一条线得到正确的结果
谁能告诉我为什么会这样,并提供一个关于绘制给定贝塞尔点的切线和法线的见解。
【问题讨论】: