社区
数据结构与算法
帖子详情
求算法思路:如何判断指定的点最接近于贝塞尔曲线的第几段?
cuixiping
2010-07-01 02:01:11
如上图,ABC是一条贝塞尔曲线,A',B',B'',C'是控制点。这些点的坐标已知。
现在已知点D的坐标,且确定点D接近曲线(到曲线的最近距离小于某个临界值s)。
曲线有可能旋转,交叉。
求D点最接近于曲线的第几段?
(如果在AB段,返回1;如果在BC段,返回2;类推)
求给个思路,或者给个资料
...全文
334
8
打赏
收藏
求算法思路:如何判断指定的点最接近于贝塞尔曲线的第几段?
如上图,ABC是一条贝塞尔曲线,A',B',B'',C'是控制点。这些点的坐标已知。 现在已知点D的坐标,且确定点D接近曲线(到曲线的最近距离小于某个临界值s)。 曲线有可能旋转,交叉。 求D点最接近于曲线的第几段? (如果在AB段,返回1;如果在BC段,返回2;类推) 求给个思路,或者给个资料
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
donkey301
2010-07-06
打赏
举报
回复
根据四个点求出三次Bezier曲线的参数表示(X(t), Y(t))
D的坐标设为(Xd,Yd)
(X(t)-Xd)^2 + (Y(t)-Yd)^2 = s^2
求出t的值,看看有没有在[0,1]区间的,有则表示在这条曲线上,没有就不在。
超级大笨狼
2010-07-04
打赏
举报
回复
贝塞尔曲线是由点和斜率来描述曲线的,那其实就可以根据点和斜率确定的直线分割的平面集合来判断属于那一段。
比如:AA,BB,CC这三条直线把平面分成了几块,你从D点引一个向X轴的抽象射线,就知道D点在线的哪一侧了。
budweiser
2010-07-02
打赏
举报
回复
按3楼的方法不错 不过可以改进一下。
只有处于两个边缘的两端 取 2个端点和2个控制点构成四边形, 其余的段可以由与其相邻的 4个 控制点来构成四边形。 然后判断 点是否在某个四边形内 就可以的得知 是在贝塞尔曲线的第几段。
[Quote=引用 3 楼 cuixiping 的回复:]
每一段的2个端点和2个控制点构成一个四边形(如[AA'B'B],[BB''C'C]),感觉应该可以计算点和这些四边形的关系来判断,但是具体如何我还不清楚。
[/Quote]
cuixiping
2010-07-02
打赏
举报
回复
是个复杂的问题。
FancyMouse
2010-07-01
打赏
举报
回复
如果单单是判断一个点的话遍历所有段是避免不了的。如果有很多点需要判断的话先把每段曲线围在一个矩形框里然后丢进4叉树组织起来,对于一般情况的大量查询会改善一点。
当然还是有特殊数据能够搞挂这个的,比如D点不在某个矩形内(乃如果说D很接近某个矩形的话那这个一般不会发生),或者曲线十分特殊,原地来回摆动然后D正好在正中间之类。
cuixiping
2010-07-01
打赏
举报
回复
每一段的2个端点和2个控制点构成一个四边形(如[AA'B'B],[BB''C'C]),感觉应该可以计算点和这些四边形的关系来判断,但是具体如何我还不清楚。
cuixiping
2010-07-01
打赏
举报
回复
这个算法不好,计算量太大,特别是曲线很长的时候。
FancyMouse
2010-07-01
打赏
举报
回复
不管是几阶的贝塞尔,每一段都可以写成参数方程的形式。把参数方程写出来然后把距离写成关于参数t的函数最后最优化这个函数就完了。
C#图形学-
贝塞尔曲线
离散化
算法
是将连续的
贝塞尔曲线
分割成多个小线段,每个线段近似于低阶
贝塞尔曲线
。这样做可以使我们在屏幕上以有限的像素
点
绘制出曲线,同时保持较好的视觉效果。在C#中,可以使用递归或插值方法进行离散化。 ...
用Opengl实现三次
贝塞尔曲线
三次
贝塞尔曲线
是其中的一种,它通过四个控制
点
来定义,其中第一个和最后一个
点
是曲线的起
点
和终
点
,中间的两个
点
则是曲线的控制
点
,它们影响曲线的形状和弯曲程度。 三次
贝塞尔曲线
的数学公式如下: \[ P(t) = (1-...
bezier曲线的生成
算法
该
算法
通过不断细分
贝塞尔曲线
,直到得到线性段,从而计算出所需
点
的坐标。 在提供的压缩包文件中,可能包含以下内容: 1. `复件 bezier.rar`:可能是原始的
贝塞尔曲线
算法
实现,可能包含源代码、数据文件或者相关...
VC6.0绘制经过多
点
的平滑曲线形成闭合区域
这可以通过添加一条从最后一个控制
点
到第一个控制
点
的直线段实现,使得曲线首尾相连。此外,为了保证平滑过渡,可能会对起
点
和终
点
进行特殊处理,比如使用相同权重的两个控制
点
或者通过调整曲线参数。 在VC6.0环境...
曲线拟合程序
贝塞尔曲线
的特性是,起
点
和终
点
始终与第一和最后一个控制
点
对齐,中间的控制
点
则影响曲线的形状和弯曲度。 在VB6.0中实现曲线拟合,我们需要定义数据
点
,然后使用B样条或贝塞尔函数计算出对应的曲线。这通常涉及到...
数据结构与算法
33,029
社区成员
35,337
社区内容
发帖
与我相关
我的任务
数据结构与算法
数据结构与算法相关内容讨论专区
复制链接
扫一扫
分享
社区描述
数据结构与算法相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章