【问题标题】:deCasteljau algorithm on bezier surfaces贝塞尔曲面上的 deCasteljau 算法
【发布时间】:2014-07-14 20:09:06
【问题描述】:

大家好,我有 2 个与 Decasteljau 算法相关的问题,它们更多的是一般性问题,但如果我是对的,它可以帮助解决许多问题。这里是:

我们有一些表面:Ʃ(i=0,n) Ʃ(j=o,m) Bi,n(U),Bi,m(v) Pi,j 我发现的分析表明,首先我们采取一个参数 u=uo 的一些值,然后我们迭代其他参数 v -> 1 得到一组点,然后将 u 递增一个等....for 循环在代码语言中的 for 循环中。我的问题是我们可以修复一个参数 U=Uo 表示任何值,然后只计算参数 v 上的点?因为一条曲线上的所有点也在曲面上,如果曲线之间的距离接近于零(实际上是迭代),我们可以应用DeCasteljau 算法仅适用于仅迭代一个参数的一组曲线。或者我有什么问题?:) 第二个问题是我还没有真正弄清楚我们真正需要 DeCasteljau 算法来做什么,除非我们手动绘制曲线?如果我们知道曲线的阶数,我们可以轻松地为该曲线阶数形成 Bernstain 多项式并计算给定参数值的点.因为当你打开 Decasteljau 时,你得到的是 Bernstain 多项式? 所以就像我说的,请帮助我弄错了吗?

【问题讨论】:

    标签: algorithm bezier surface


    【解决方案1】:

    是的,您可以修复一个参数(例如 U)并更改另一个参数 (V) 以生成 iso-U 曲线。

    您可以看到这些东西,就好像您有一个 NxM 控制点数组。如果您对 U 执行第一次插值(实际上是涉及 N 个控制点的 M 个插值),您将获得 M 个定义贝塞尔曲线的新控制点。通过改变 U,曲线在空间中移动。

    使用 De Casteljau 算法是为了方便:它通过使用控制点之间的级联线性插值来计算插值。直接计算 Bernstein 多项式需要预先计算系数,并且即使使用 Horner 方案也不会更快,并且在数值上可能不太稳定。

    De Casteljau 的算法还因其几何解释以及与细分过程的联系而受到赞赏:如果您只想为 Bezier 曲线的一部分构建控制点,De Calsteljau 提供了它们。

    【讨论】:

    • 所以如果我理解你真的只能对一组曲线进行递归,对于一个参数来获得你在表面上需要的所有点。
    • 是的,要对曲面进行网格划分,您需要计算 N 条曲线(由 M 组控制点定义),并在每条曲线上计算 M 个顶点。
    • 说到 DeCasteljau,我不确定你说了什么,但如果我错了,请纠正我,因为你听起来好像你知道你在说什么。当你说“系数”时,你指的是控制点坐标,对吗?如果是这种情况,我们首先将它们放在首位。当谈到霍纳时,不建议使用它,因为它容易出错,尤其是当系数变化很大时
    • 系数是您根据控制点坐标和二项式数计算得出的系数,无论是在伯恩斯坦基还是规范基 (1,t, t²,t³...) 中。不稳定性不是由于霍纳的方案,而是由于多项式表示本身。
    • 嗯,现在我不确定我是否得到了你。假设我们有三阶曲线 bernstains,它为我们提供了这条曲线上的点(以及它本身的曲线)是:(1-t)3* Po+3t(1-t)2*P1+3t2(1-t) *P2+t3*P3 其中 P0,P1,P2,P3 是控制点的坐标。我只是应用了这些,没有任何进一步的计算。对不起如果我问的是愚蠢的东西,我最近对这个话题很感兴趣
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-04-17
    • 1970-01-01
    • 1970-01-01
    • 2011-08-03
    • 1970-01-01
    • 2011-04-26
    • 1970-01-01
    相关资源
    最近更新 更多