首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Bezier曲线绘制步骤的选择

Bezier曲线绘制步骤的选择
EN

Stack Overflow用户
提问于 2015-07-09 20:27:17
回答 1查看 772关注 0票数 1

Bezier曲线是一条参数曲线,即有一个参数t,在该参数下,可以求多项式,以求曲线上各点的位置。

一些常见情形的多项式可以在案例上找到。

要在屏幕上画出一条贝塞尔曲线,就可以用很小的一小步来计算从01的多项式在不断增加t时的作用。然而,这将是非常浪费的,因为一般来说,参数"space“不对应于屏幕"space",即几个小步骤可能落在一个像素上。

我的问题是:如何找到最小的一步,使笛卡儿距离从前一点增加至少一个像素?

换句话说:我想在屏幕上画一个Bezier曲线。如何选择t应该增长的(统一)步骤,这样我就不会再多画一个像素了?我不介意当t增长过快时的“洞”,我只是不想重新绘制已经绘制的像素。

编辑

我所说的“如何找到”是指O(1)。是的,我可以使用德卡斯尔焦算法,但我希望有一种快速“猜测”最佳t步骤的方法。

EN

回答 1

Stack Overflow用户

发布于 2015-07-10 03:55:27

上面的注释(jozxyqk)给了您一个提示。我会用样条图的递归二进制除法来尝试。

假设您从参数空间的粗略分辨率开始(delta_t = 0.1),它给出了样条曲线s,s(t=0),s(t=0.1),…,s(t=0.9),s(t=1)上的11个点。计算s(t_i)和s(t_i+1)之间的距离。如果它>1,则在这两个点之间进行二进制细分。等等..。

但老实说,我想计算所有点的速度更快--一个更高的分辨率--没有任何递归循环或细分。特别是当您使用多线程编程时。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31327561

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档