highflybird 发表于 2012-5-31 17:15:11

椭圆弧如果仅仅是旋转了,不会改变其角度的,不管是列表显示,还是DXF数值。

lzz0517 发表于 2012-6-1 08:35:42

本帖最后由 lzz0517 于 2012-6-1 08:37 编辑

highflybird 发表于 2012-5-31 17:15 static/image/common/back.gif
椭圆弧如果仅仅是旋转了,不会改变其角度的,不管是列表显示,还是DXF数值。
我已经找到计算角度的方法了,只是现在要计算块中包含图形的坐标,这个问题,我用了两种方法进行求解都得不到正确的答案,第一种通过旋转平移求椭圆弧的起始和终止坐标,第二种通过直线与椭圆弧曲线相交求起始和终止坐标,这两种方法的解是相同的,都得不到CAD中显示的坐标值!
所以,我想问下你能不能告诉我怎么求解块中包含的倾斜椭圆弧的起始和终止坐标的方法!

highflybird 发表于 2012-6-1 09:09:51

贴个图片吧,把你要求的点的坐标,图元和过程讲清楚

lzz0517 发表于 2012-6-1 09:39:10

本帖最后由 lzz0517 于 2012-6-1 09:49 编辑

这个图整个块的全景,这个图是求解的椭圆弧的起始和终止点坐标,Drawing9.rar是DXF源文件,
现在就是说通过DXF文件中提供的信息,比如插入点的数据,相关椭圆弧的数据,求解相应的坐标,这个坐标要与CAD中拆解块后显示的一样

要求的椭圆弧的数据:圆心(3217176.690239313,532617.0907392278),相对于圆心的长轴端点坐标(45.66621877367426,337.0426302735758),长短半径比例(0.9999999999977266),记录的起始弧度(2.35439212168697),终止弧度(3.641394339275362)。
块的插入点数据:坐标(-399474.1637001187,3238438.33505016),缩放比例X=-1.0,Y=1,旋转角度=106.4911716322804。

highflybird 发表于 2012-6-1 10:35:42

本帖最后由 highflybird 于 2012-6-1 10:38 编辑


上面的lisp程序供你参考。

已知了某个插入块,就能得到其变换矩阵,然后对某个点进行矩阵变换就可以了。

lzz0517 发表于 2012-6-1 15:29:11

highflybird 发表于 2012-6-1 10:35 static/image/common/back.gif
上面的lisp程序供你参考。

已知了某个插入块,就能得到其变换矩阵,然后对某个点进行矩阵变换就可以了 ...

之前没学过有关lisp程序的知识,所以现在一边看lisp入门一边看你的这个程序好难懂,能不能提供一个纯数学公式或者用C/C#/C++写的函数也行!

highflybird 发表于 2012-6-1 16:12:30

假设一个块内的坐标点是: x ,y ,z ,且一般不考虑法线矢量。
插入块的缩放比例是u, v ,w
块的旋转角度是a
块的插入点坐标是 x0,y0,z0
那么这个点在世界坐标是是:
u*cos(a)*x - v*sin(a)*y + X0,
u*sin(a)*x +v*cos(a)*y +Y0,
w*Z0

highflybird 发表于 2012-6-1 16:15:00

lzz0517 发表于 2012-6-1 15:29 static/image/common/back.gif
之前没学过有关lisp程序的知识,所以现在一边看lisp入门一边看你的这个程序好难懂,能不能提供一个纯数学 ...

经过验证,符合你说的坐标:
'CAL >> Expression:
-1*cos(106.49117163)*3217725.0267-1*sin(106.49117163)*532343.1616+(-399474.16370
012)=3489.30538
-1*sin(106.49117163)*3217725.0267+1*cos(106.49117163)*532343.1616+3238438.335050
16=1964.32284

lzz0517 发表于 2012-6-1 16:25:33

本帖最后由 lzz0517 于 2012-6-1 16:26 编辑

highflybird 发表于 2012-6-1 16:15 static/image/common/back.gif
经过验证,符合你说的坐标:
'CAL >> Expression:
-1*cos(106.49117163)*3217725.0267-1*sin(106.49117 ...
谢谢回答,请问一下你这个坐标求的是椭圆弧的圆心坐标吗?
还是别的坐标?
如果是圆心的坐标的话,跟在CAD上显示的是不一样的!

highflybird 发表于 2012-6-1 16:27:09

我这里求的是椭圆弧形的端点
你可以把 x,y,z换成块内的其他坐标也行,譬如圆心。
页: 1 [2] 3 4 5 6 7 8 9 10 11
查看完整版本: 椭圆弧旋转后计算角度问题