(setq ang(* 0.25 pi))
(polar(mapcar'+ p0(list X Y 0))(+(angle p0 p1)ang)(distance p1 p0)) 用polar的计算
guosheyang 发表于 2023-7-19 20:49
x=484.937 y=348.189 左下角点 p0(758.191 -682.822 0.0) 左上角点p1 (758.191 -520.267 0.0)旋转 ...
我试试,刚才用几个简单点试的
guosheyang 发表于 2023-7-19 20:51
(setq ang(* 0.25 pi))
(polar(mapcar'+ p0(list X Y 0))(+(angle p0 p1)ang)(distance p1 p0)) 用pola ...
放在原点0,0,0就可以。可能还是要考虑x0y0
gaics 发表于 2023-7-19 21:09
放在原点0,0,0就可以。可能还是要考虑x0y0
嗯原点时是对的
guosheyang 发表于 2023-7-19 21:14
嗯原点时是对的
(mapcar'+(trans(trans (mapcar '-(list x1 y1 0)(list x0 y0 0)) 0 (list (cos (- ang))(sin (- ang))))'(1 0 0)0)(list x y)(list x0 y0 0))
先减掉x0 y0,最后再加回来。
guosheyang 发表于 2023-7-19 20:51
(setq ang(* 0.25 pi))
(polar(mapcar'+ p0(list X Y 0))(+(angle p0 p1)ang)(distance p1 p0)) 用pola ...
这个问题还是用polar简单,而且也好理解
gaics 发表于 2023-7-19 21:42
这个问题还是用polar简单,而且也好理解
嗯 的确是那样的
(mapcar'+(trans(trans (mapcar'- p1 p0)0
(list(cos ang)(-(sin ang))))
'(1 0 0)0)p0) 这个式子可以用来求 p1点绕p0点 旋转ang角度后的坐标
guosheyang 发表于 2023-7-19 22:22
(mapcar'+(trans(trans (mapcar'- p1 p0)0
(list(cos ang)(-(sin ang))))
'(1 0 0)0)p0) ...
是的。但是为什么要用负角度我自己都没搞懂,哎。
用高飞鸟的线性变换矩阵函数也可以实现