【问题标题】:Drawing curve working for all the quadrants / Finding dynamic control points for the Bézier curve绘制适用于所有象限的曲线/寻找贝塞尔曲线的动态控制点
【发布时间】:2014-05-15 09:20:21
【问题描述】:

问题是如果有人点击角度 abc,如图所示。 1,然后应该画出如图所示的曲线。 2 使用核心图形。我尝试使用贝塞尔曲线,但不同象限中的形状需要动态控制点,这非常复杂(我猜)。任何人都可以为此提出解决方案吗?

【问题讨论】:

    标签: ios core-graphics uibezierpath bezier coordinate-transformation


    【解决方案1】:

    如果我理解正确,那么你需要知道的是,如何在不同的象限中找到合适的控制点。这个link 会给你你想要的。如果您想绘制三次贝塞尔曲线,那么第 18 页适合您。但是,我建议您完整阅读它以更好地理解贝塞尔曲线。

    本文给出的公式将帮助您准确地为一个象限绘制椭圆弧。您可以使用角度定义您的象限。要使用本文找到控制点,您需要提供以下数据:

    • 开始和结束角度(将定义您的象限)
    • 根据你的身材曲线半径

    【讨论】:

    • @ blancos ,感谢您的链接,但我找到了另一种更简单的方法来破解这个问题,而不是深入研究计算适合所有象限的控制点的数学。
    【解决方案2】:

    我没有计算数学,而是想以编程方式绘制适合所有象限的曲线。

    算法如下: (这是一种为所有象限找到完美的贝塞尔曲线控制点的算法这意味着您将获得贝塞尔曲线的动态控制点。)

    题目:给定3个点a、b、c,任务是画出夹角abc的曲线(曲线结构固定如题中的图所示)。

    1. 在函数中取所有 3 个点 a、b、c。

    2. 将所有 3 个点 a、b、c 转换为相对于 a 点的原点。

    3. 判断第三个点 c 是在左边还是右边。

    4. 旋转第二个点 b 使其与 x 轴重合。

    5. 在第 4 步之后,您处于零位。

      (在这里您可以根据需要选择贝塞尔曲线的控制点。您不必解决控制点的任何关系。您可以仅使用简单的加/减数学来设置控制点。)控制点在这里获得的所有象限都是完美的。

    6. 在第 5 步之后,我们得到了 Bézier 曲线的所有控制点,现在将所有这些点移到原始位置,
      一种。首先旋转点b和两个控制点(通过步骤4中b的旋转角度)
      湾。将所有点平移回其原始位置(即相对于点 a - 从步骤 1 反转变换)。

    现在您获得了适用于所有象限的三次贝塞尔曲线所需的控制点。
    使用贝塞尔曲线函数绘制曲线。

    【讨论】:

      猜你喜欢
      • 2011-08-21
      • 2018-03-10
      • 1970-01-01
      • 2011-02-26
      • 1970-01-01
      • 1970-01-01
      • 2014-09-29
      • 2017-05-18
      • 1970-01-01
      相关资源
      最近更新 更多