3

在我当前的 OpenGL 项目中,我试图让链的链接拥抱贝塞尔曲线的轮廓。我怎样才能找到曲线上两点之间的角度,以便我可以定位链的链接,使它们跟随曲线。

是曲线和链条的图片,我需要一些旋转链接的方法,以便它们跟随曲线。

这里有人知道怎么做吗?

4

3 回答 3

4

也许这样的东西你需要的。

如何计算贝塞尔曲线的切线

这在网上很难找到。一定是知道的人都知道的秘密。哦,你可以找到数学公式,但如果你不是数学家,解释它们很有趣。那么糟糕的开发人员该怎么办呢?回学校去。

我花了几天时间在这个头骨上敲打我的头骨。我用谷歌搜索了我的大脑(一旦我的头骨被充分撞击,这会更容易)。然后是一个阳光明媚的星期六,我躲在开发人员的地牢里,让我疲惫的骨头休息。我把电视放在我面前,维基百科在右边,我懒洋洋地在看它们之间切换。

继续阅读...

于 2009-07-05T19:43:35.713 回答
1

让贝塞尔曲线上的点为 A 和 B。标准化向量 AB,使其长度为 1。让其为 AB_norm。然后使用 asin(AB_norm.y) 或 acos(AB_norm.x) 来获取角度。那么,0 度角是向右的水平矢量。C 风格的伪代码如下:

 get_angle(Point A, Point B) {
   AB.x = B.x - A.x;
   AB.y = B.y - A.y;
   length = sqrt(AB.x * AB.x + AB.y * AB.y);

   AB_norm.y /= AB.y / length;
   angle = asin(AB_norm.y);
   // or
   // AB_norm.x /= AB.x / length;
   // angle = acos(AB_norm.x);
 }

 angle = get_angle(A, B);
 glRotatef(angle, 0.0f, 0.0f, 1.0f);
 // Draw the chain link here
于 2009-07-05T19:38:27.410 回答
0

你需要一些数学。您可以找到切线、法线和副法线向量,然后可以找到角度。如果您仍然感兴趣,请告诉我,我对此主题有一些详细信息。

于 2012-08-10T13:22:32.377 回答