0

我正在使用 flex,尽管我认为这是一个独立于语言的问题。我正在尝试使用curveTo(二次贝塞尔函数,我不相信Flex有任何其他函数,如果有,请纠正我!)点1和3是“节点”,点1和3是“节点” 2是拖动手柄。

我想要的不是让线点 2 弯曲,而是实际上穿过它。我设法通过侥幸实现了这个工作 - 通过将(点 1 和 3 之间的线的中点之间的距离)和点 2 加倍。

不过,这并没有把它放在线路的顶点,只是在靠近它的某个地方。

有人有什么想法吗?

安德鲁

4

3 回答 3

0

Bezier 样条不会通过其控制点,但 Catmull Rom 样条会。

B(t) = ((2*P1)+(-P0+P2)*t + (2*P0-5*P1+4*P2-P3)*t*t + (-P0+3*P1-3*P2+P3)*t*t*t )) / 2

尽管这是三次样条而不是二次样条。你可以尝试制作P1=P2

于 2011-08-12T14:05:16.677 回答
0

使用公式计算二次贝塞尔曲线

B(t) = (1-t)(1-t)*P0 + 2(1-t)t*P1 + t*t*P2

其中 P0、P1 和 P2 是您指定的 3 个点。曲线从 P0 开始并在 P2 结束 t 范围从 0 到 1 顶点应在 t = 0.5 处达到,因此尝试将 P0、P2 和 t = 0.5 插入公式中,将其设置为您希望顶点到的点是并从公式中提取 P1

于 2010-07-05T17:22:02.613 回答
0

我们这个公式:B'(t) = 3 (1 - t) 2 (P1 - P0) + 6 (1 - t) t (P2 - P1) + 3 t2 (P3 - P2)

您可以使用导数来找到最大值和最小值。

于 2017-10-28T23:31:46.503 回答