问题
好的,基本上我想要做的是在给定 X 位置时计算三次曲线/贝塞尔曲线/样条曲线上的 Y 位置。
我在 Stack Overflow 和 Google 上到处搜索,我能找到任何真正有效的东西!
曲线点
x1 = 50d;
y1 = 400d / 2d + 100d;
x2 = 400d;
y2 = 400d / 2d + 100d;
x3 = 600d - 400d;
y3 = 400d / 2d - 100d;
x4 = 600d - 50d;
y4 = 400d / 2d - 100d;
我计算“600 - 400”而不只是写“200”的原因是因为在我的代码中“600”实际上是窗口的宽度,三次曲线在其中渲染。因此它实际上说“宽度- 在我的代码中为 400"。
所以下面的代码,可以在给定 T 时计算三次曲线上的 X 和 Y!
t = 0.5d;
cx = 3d * (x2 - x1);
cy = 3d * (y2 - y1);
bx = 3d * (x3 - x2) - cx;
by = 3d * (y3 - y2) - cy;
ax = x4 - x1 - cx - bx;
ay = y4 - y1 - cy - by;
point_x = ax * (t * t * t) + bx * (t * t) + cx * t + x1;
point_y = ay * (t * t * t) + by * (t * t) + cy * t + y1;
同样,当您知道 X 位置时,我要计算的是曲线的 Y 位置。但我唯一能计算出的是在给定 T 时曲线上的 X 和 Y 位置。
这是我的第一篇文章,所以如果有些东西没有 100% 正确地写出来,我深表歉意!