几何尺寸与公差论坛------致力于产品几何量公差标准GD&T (GDT:ASME)|New GPS(ISO)研究/CAD设计/CAM加工/CMM测量  


返回   几何尺寸与公差论坛------致力于产品几何量公差标准GD&T (GDT:ASME)|New GPS(ISO)研究/CAD设计/CAM加工/CMM测量 » 酉空间:CAX软件开发(一)基础理论 » 计算机图形学 » 图形算法
用户名
密码
注册 帮助 会员 日历 银行 搜索 今日新帖 标记论坛为已读


回复
 
主题工具 搜索本主题 显示模式
旧 2008-09-12, 11:59 AM   #1
huangyhg
超级版主
 
huangyhg的头像
 
注册日期: 04-03
帖子: 18592
精华: 36
现金: 249466 标准币
资产: 1080358888 标准币
huangyhg 向着好的方向发展
默认 【转帖】求GdI 测量Bezier曲线的长度!

7 楼zzwu(未名)回复于 2002-08-27 09:14:10 得分 0

给个思路:
因Bezier曲线画到屏幕上去时,实际都是用一系列短的线段连接而成,所以要测量Bezier曲线的长度,只要把所包含的各线段的长度累加一下就可得到.
这是近似值,但是要把短线段的长度不断缩小,就可以得到任意高的精度.
Top

8 楼zhangyan_qd(doggyzone)回复于 2002-08-27 11:38:29 得分 0

如果这哥们是用API画的怎么办?
我们简化一下问题吧,zzwu看来你对图形学有一定的研究,如何在已知三次Bezier曲线四个控制点的情况下求出Bezier曲线的长度?给个数学推导。Top

9 楼handsomge(汗衫)回复于 2002-08-27 14:44:37 得分 0

呵呵,高手出现了,鄙人是用API画的Top

10 楼painache(SystemOfaDown)回复于 2002-08-27 16:16:07 得分 0

给定顶点后,BEZIER的参数方程积分,应该可以得到长度。或者把BEZIER所在路径分支进行FLATTENPATH,得到线段,然后用GETPATH取得路径的信息,这样也许可以得到线段的长度,再加起来就是BEZIER的长度。

这都是粗略的想法。没经过实验。

同时,关注这个问题!!!Top

11 楼zzwu(未名)回复于 2002-08-28 08:39:29 得分 0


已知三次Bezier曲线四个控制点
Pi(Xi,Yi,Zi),i=0,1,2,3
的情况下,求出Bezier曲线的长度的数学推导如下:

1.写出x,y,z用参数t表示的方程:
x(t)=Sigma(Xi*B(i,n,t)),
y(t)=Sigma(Yi*B(i,n,t)),
z(t)=Sigma(Zi*B(i,n,t));
其中B(i,n,t)=C(n,i)*t^i*(1-t)^(n-i),
C(n,i)=n!/(i!*(n-i)!)
Sigma为对i求和,i=0,n
当控制点Pi(Xi,Yi,Zi)的值给定情况下,以上都是t的3次方程.

2.Bezier曲线从P0到P3的长度L:

L = S[x(t)*dt + y(t)*dt + z(t)+dt)],

其中S[...]代表对t的定积分, t的范围从0到1


Top

12 楼handsomge(汗衫)回复于 2002-08-28 09:00:02 得分 0

谢谢!Top

13 楼zhangyan_qd(doggyzone)回复于 2002-08-28 09:52:00 得分 0

我得想想,好像zzwu的求法有问题.....Top

14 楼zzwu(未名)回复于 2002-08-28 15:42:50 得分 0

积分表达式最后面有一点错, 想大家看得出来的: z(t)+dt)] 应改成 z(t)*dt]Top

15 楼zhangyan_qd(doggyzone)回复于 2002-08-28 16:47:53 得分 0

不是这个,这是笔误。我是在想曲线积分这样对吗?这好像既不是第一类曲线积分也不是第二类曲线积分......Top

16 楼handsomge(汗衫)回复于 2002-08-29 08:46:39 得分 0

GZGZTop

17 楼zzwu(未名)回复于 2002-08-29 09:18:19 得分 0

zhangyan_qd(doggyzone):

你有道理, 在积分表达式

L = S[x(t)*dt + y(t)*dt + z(t)*dt]

的每一项中,还应含有对应轴的单位矢量,也就是应是矢量和,而非标量和,否则结果变大了. 此外,每一段合成的矢量还应取绝对值,所以整个应改为:

L = S[|x(t)*i*dt + y(t)*j*dt + z(t)*k*dt|]

其中i,j,k分别为x,y,z轴上的单位向量.


Top

18 楼zhangyan_qd(doggyzone)回复于 2002-08-29 11:07:52 得分 0

zzwu,看来你对图形学真的是挺有兴趣的,不过我觉得呢,如果你认为我说的有道理的话,我建议你能加强一下你的数学基础。呵呵,没有别的意思,我是读图形学的硕士,爱好CG这一行的人很少,很高兴能有和同道交流的机会。搞CG数学一定要过关,这真的是基础。
你后面的式子道理是对的,但直接用坐标来积分就不对了,请你想想看。其实这就是对1进行第一类的曲线积分。我给出它的数量形式。具体的推导可以参见同济《高等数学》:)
L=S[sqrt(x'(t)^2 + y'(t)^2 + z'(t)^2)dt]Top

19 楼zhangyan_qd(doggyzone)回复于 2002-08-29 11:14:27 得分 55

直接用曲线积分求是没有问题的,我一开始没有推荐这种方法,是因为我在想有没有计算量更小的方法。要知道,算这个数值积分是挺费时间的。即使知道了定积分表达式,要算出数来还要一些数值方法的处理,比如高斯求积变换什么的。这个问题用龙贝格加速应该有比较好的结果,但我想直接通过画线的过程统计出一共画了多少个像素出来(不是精确值,也不一定是楼主想要的,我只是锻炼一下思维:)。想了几天也没有好的方法,我想我们的讨论基本上可以告一段落了,暂时就按数值积分的路子走吧。不过求任意曲线长度的问题,我们还可以继续探讨下去。
huangyhg离线中   回复时引用此帖
GDT自动化论坛(仅游客可见)
旧 2008-09-12, 12:00 PM   #2
huangyhg
超级版主
 
huangyhg的头像
 
注册日期: 04-03
帖子: 18592
精华: 36
现金: 249466 标准币
资产: 1080358888 标准币
huangyhg 向着好的方向发展
默认 回复: 【转帖】求GdI 测量Bezier曲线的长度!

有关Bezier曲线的讨论在任何一本<计算机图形学>中都有.我身边的五本书中就如此:
1.<对话式计算机图形显示原理>W.M.Newman等,科学出版社,317-323页
2.<计算机图形显示和图像出力的算法>Pavlidis,科学出版社,204-213页
3.<计算机图学的数学基础>D.F.Rogers等,人民出版社,110-114页
此外,还有清华,复旦的本图形学书上也有.
__________________
借用达朗贝尔的名言:前进吧,你会得到信心!
[url="http://www.dimcax.com"]几何尺寸与公差标准[/url]
huangyhg离线中   回复时引用此帖
旧 2008-09-12, 12:04 PM   #3
huangyhg
超级版主
 
huangyhg的头像
 
注册日期: 04-03
帖子: 18592
精华: 36
现金: 249466 标准币
资产: 1080358888 标准币
huangyhg 向着好的方向发展
默认 回复: 【转帖】求GdI 测量Bezier曲线的长度!

有关Bezier曲线的讨论在任何一本<计算机图形学>中都有.我身边的五本书中就如此:
1.<对话式计算机图形显示原理>W.M.Newman等,科学出版社,317-323页
2.<计算机图形显示和图像出力的算法>Pavlidis,科学出版社,204-213页
3.<计算机图学的数学基础>D.F.Rogers等,人民出版社,110-114页
此外,还有清华,复旦的本图形学书上也有.


http://research.microsoft.com/~holl...cbezarclen.html

有数学描述和实现代码
__________________
借用达朗贝尔的名言:前进吧,你会得到信心!
[url="http://www.dimcax.com"]几何尺寸与公差标准[/url]
huangyhg离线中   回复时引用此帖
回复


主题工具 搜索本主题
搜索本主题:

高级搜索
显示模式

发帖规则
不可以发表新主题
不可以回复主题
不可以上传附件
不可以编辑您的帖子

vB 代码开启
[IMG]代码开启
HTML代码关闭



所有的时间均为北京时间。 现在的时间是 04:21 AM.


于2004年创办,几何尺寸与公差论坛"致力于产品几何量公差标准GD&T | GPS研究/CAD设计/CAM加工/CMM测量"。免责声明:论坛严禁发布色情反动言论及有关违反国家法律法规内容!情节严重者提供其IP,并配合相关部门进行严厉查处,若內容有涉及侵权,请立即联系我们QQ:44671734。注:此论坛须管理员验证方可发帖。
沪ICP备06057009号-2
更多