作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我目前通过将某些 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) 之间画一条线得到了正确的结果
任何人都可以告诉我为什么会这样,并提供对给定贝塞尔点绘制切线和法线的见解。
最佳答案
尽管 P'(t)
有时称为切线,但它实际上是曲线的导数,也就是速度。如果曲线在 2d 空间中,并且它的点以米为单位测量,那么 P'(t)
的单位将为 米/秒。在“5 米”和“6 米/秒”之间画一条线没有意义,因为它们是不同空间中的点。
您应该做的是在“曲线上的点”和“如果对象从曲线上分离并继续以当前速度移动 1 秒时对象所在的位置”之间画一条线。即介于 P(t)
和 P(t) + dt * P'(t)
之间。
关于opengl - 在贝塞尔曲线opengl中绘制切线和法线到每个点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39798195/
我是一名优秀的程序员,十分优秀!