highflybird
发表于 2012-6-4 10:41:09
我现在说的点是你开始提到的点。不是我后来说的那点。
另外,建议你检查图形是否有错误后重新导出 DXF再测试。
lzz0517
发表于 2012-6-4 10:52:28
highflybird 发表于 2012-6-4 10:41 static/image/common/back.gif
我现在说的点是你开始提到的点。不是我后来说的那点。
另外,建议你检查图形是否有错误后重新导出 DXF再测 ...
-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
那你能告诉我,在这里用来计算的坐标(3217725.0267,532343.1616)是怎么计算的呢?
highflybird
发表于 2012-6-4 10:56:53
这个不是我计算得来的,是用vlax函数得到的。
lzz0517
发表于 2012-6-4 11:07:32
怪不得咯,我就是想通过椭圆弧的参数来进行计算,通过别的函数来获取,里面的算法是怎么样的呢?vlax函数这个是什么语言的?
highflybird
发表于 2012-6-4 11:08:37
我这有个怀疑,因为你给出的椭圆长短比太接近了,引起了角度计算上的误差。
lzz0517
发表于 2012-6-4 11:18:13
我当时也想过,读取参数,判断长短半径是否很接近,如果是,就把它当圆弧来计算,不是就按椭圆弧来计算,得到的结果依然不对,这个让我很郁闷!不过要是能知道vlax函数里面的原理就好了!
highflybird
发表于 2012-6-4 11:23:35
本帖最后由 highflybird 于 2012-6-4 11:25 编辑
哦,我看到缘故了。
楼主忘记检查这个椭圆的 210选项了,就是法线矢量。
这个椭圆弧的法线矢量是 (0 0 -1)注意正是这个-1,意味这这个椭圆弧是个3维旋转了180度的。就是可能是跟XY平面镜像,或者旋转了的。
210
0.0
220
0.0
230
-1.0
也就是说,如果要在平面上正常显示的话,看起来的起点角度,实际上是终点角度,它们是相反的。
lzz0517
发表于 2012-6-4 11:25:20
这个三维参数要怎么用呢?我只懂二维的旋转平移!
highflybird
发表于 2012-6-4 11:35:42
本帖最后由 highflybird 于 2012-6-4 12:26 编辑
假设法线矢量是 '(0 0 -1)
意味着你最终要用如下的矩阵再乘以你先前的变换矩阵
-1 0 0
0 1 0
0 0 -1
开始的变换矩阵写错了,现已经纠正。
lzz0517
发表于 2012-6-4 11:41:22
本帖最后由 lzz0517 于 2012-6-4 11:50 编辑
那这个计算坐标的时候,角度要先换过来吗?就是说起点X=长半径*端点角度的余弦值?进行矩陈乘法时还有顺序问题,这个顺序是怎么样的?
页:
1
2
3
4
[5]
6
7
8
9
10
11