【问题标题】:Finding control points for bezier curve寻找贝塞尔曲线的控制点
【发布时间】:2011-08-21 23:02:21
【问题描述】:

您好 stackoverflow 的用户!

首先我想说这是我的第一篇文章,我一直在从这个网站上挖金子,我喜欢它,而且那里的每个人都足够聪明,可以给出解决方案。

所以基本上是在写一个游戏,我有贝塞尔曲线来控制演员的移动位置。我只使用了 3 个点(开始、控制 1、结束),一切都很好。

现在我想创建一条在 t = 0.5 处通过某个点 (r1) 的贝塞尔曲线。问题是我的起点、终点和我的点 (r1) 在 t=0.5,我需要找到控制点。

对不起,如果我解释得不好,希望大家能理解。

感谢您的任何回复:)

【问题讨论】:

  • 是 r1 是曲线起点和终点之间的中点(或顶点)吗?
  • 贝塞尔曲线需要两个控制点。你把你的观点合并在一起了吗?还是你有其他的简化?
  • @ja72:ActionScript3 的绘图 API 目前只支持一个控制点的贝塞尔曲线。带有 2 个控制点的“真实”贝塞尔曲线即将出现在 Flash Player 11 中。
  • @ja72:当然,这只是在您使用绘图 API 而不是滚动自己的曲线的情况下。
  • 是的,r1 是中点,如果正确的话,你可以使用 2 到 n 个点来绘制贝塞尔曲线

标签: actionscript-3 math bezier


【解决方案1】:

查看Asymptote (here) 的文档,该文档对 a 样条曲线进行了几何解释。对于中点 (t=-.5),该点位于下方的 m_5 点。如果您使用一个控制点,它们 c_0 和 c_1 是重合的,从而简化了数学运算。如果在 (t=0.5) 你的 y 值是 y_c 并且开始和结束值分别是 z_0z_1 那么控制点在

c = (8*y_c-z_0-z_1)/6

x 值执行相同操作。

【讨论】:

  • 我明白你在说什么,但我无法弄清楚那个等式中的 8 和 6,你从哪里得到的?! ://
  • 来自y = z_0 (1-t)^3 + c_0 * 3*(1-t)^2*t + c_1 * 3*(1-t)*t^2 + z_1*t^3c = c_0 = c_1y(t=0.5)=y_c
【解决方案2】:

查看我几天前提出的问题:Given f(x) linear function, how to obtain a Quadratic Bezier control point。我认为这正是您所需要的。

【讨论】:

    猜你喜欢
    • 2018-03-10
    • 2012-07-13
    • 1970-01-01
    • 2011-03-11
    • 1970-01-01
    • 2015-04-30
    • 1970-01-01
    • 1970-01-01
    • 2011-04-26
    相关资源
    最近更新 更多