skg123 发表于 2015-8-21 18:02:03

坐标系换算

本帖最后由 skg123 于 2015-8-22 13:17 编辑

假设一个块内的坐标点是: 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                      BY highflybird
http://bbs.mjtd.com/thread-93828-2-1.html    引用帖子中的 17楼

上面是数学坐标系的转换公式,
在测量学里还有建筑坐标转换到大地坐标,公式推导原理是一样的,就是要注意XY轴的对调关系。


实例演算:
X'OY'坐标系上的已知P'点坐标(1.9226,2.3196),缩放比例不考虑,U,V,W为1;
求P'点归算到XOY坐标系时的坐标值?
X'=cos(a)*x - sin(a)*y + X0
=1.9226*cos(44°17′18″)-2.3196*sin(44°17′18″)+32.409
=1.3763-1.6605+32.409
=32.16555
Y'=sin(a)*x +cos(a)*y +Y0
=1.9226*sin(44°17′18″)+2.3196*cos(44°17′18″)+14
=1.3425+1.6605+14
=17.003

以上是坐标系的换算方法。
本人本想推导从P点以O点为基点旋转一个角度到P'点位置,已知P点坐标,求P'点坐标的公式。不过上图的的公式在实践应用中也有价值。


edata 发表于 2015-8-21 22:03:16

很实用的算法。。。

USER2128 发表于 2015-8-22 07:43:24

支持楼主,算法具有实用价值

skg123 发表于 2015-10-19 17:56:50

本帖最后由 skg123 于 2015-10-19 18:15 编辑

推导从P点以O点为基点旋转一个角度到P'点位置,已知P点坐标,求P'点坐标的程序
(defun c:tt ( /)
   (setq pt0 (getPoint "\n 请选择旋转基点<旋转中心>:"))
   (setq pt1 (getPoint "\n 请选择旋转点:"))
(command "line" pt0 pt1 "")
   (setq ang0(anglept0 pt1 ))
   (setq ang01 ( getreal"\n 输入旋转角度<30.2525=30度25分25秒>:"))
(setq du (fix ang01))
    (setq fen(/ (fix (* 100 (- ang01 du)))) );
    (setq aa(/ fen 0.06) )
    (setq miao(/ (- (* ang01 100) (fix (* ang01 100))) 36) )
    (setq jd1 (+ du (/ aa 1000) miao))
   ; (setq ANG1 (/ (* (- 360 jd1 ) pi) -180) );角度换算成弧度
   (setq ANG1 (/ (* jd1 pi) 180) );角度换算成弧度
(setq pt3(polar Pt0 (+ ANG0 ANG1 )(distancept0pt1 ) ));计算旋转后的点坐标
(command "line" pt0 pt3 "")
(princ "\n 程序结束!")
)

看天的小树 发表于 2015-12-15 08:45:09

是否是线性组合,矩阵算法吗??
页: [1]
查看完整版本: 坐标系换算