960322 发表于 2023-7-18 12:51:25

求点在用户坐标系下的坐标

以知点p1 p2 p3的坐标, 求点p1在以p2为原点,p2p3为X正轴方向的坐标系下p1的新坐标点,请问应该怎么写。 请大师们出手相助,万分谢谢!

960322 发表于 2023-7-18 13:06:38

学习了下,好像这样就可以了。谢谢明经
(defun trans-ucs-w->p123 (P1 P2 P3 / XU YU ZU ANGU XP YP ZP X1 Y1 Z1 X Y Z M_RET)
    (setq xu(car p2))      
    (setq yu(cadr p2))      
    (setq zu (caddr p2))
    (setq angu(angle p2 p3))
   (setq xp (car p1))      
    (setq yp (cadr p1))   
    (setq zp (caddr p1))
(setq x1 (- xp xu))   
    (setq y1 (- yp yu))      
    (setq z1 (- zp zu))
(setq x (+ (* x1 (cos angu)) (* y1 (sin angu))))      
    (setq y (- (* y1 (cos angu)) (* x1 (sin angu))))      
    (setq z z1)      
    (setq m_ret (list x y z))
m_ret
)

liuhe 发表于 2023-7-18 13:45:17

(setq p1 '( 5 2 0 ) p2 '(1 1 0 ) p3 '(3 5 0))
(LH:TRANS3P P1 P2 P3)
;;;;;P1 移动点
;;;;;P2 新原点
;;;;;P3 新原点的方向
;;;;二维测试没问题,三维坐标不清楚
(defun LH:TRANS3P (p1 p2 p3)
(list        (caddr (trans (mapcar '- p1 p2) 0 (mapcar '- p3 p2)))
        (car (trans (mapcar '- p1 p2) 0 (mapcar '- p3 p2)))
        (cadr (trans (mapcar '- p1 p2) 0 (mapcar '- p3 p2)))
)
)



二维测试和你的函数结果相同

wharan 发表于 2023-7-19 11:23:48

liuhe 发表于 2023-7-18 13:45
二维测试和你的函数结果相同

trans函数一直没搞明白。比如当前坐标系中一个矩形的左上角坐标(x1 y1 0),左下角坐标(x0 y0 0)。矩形向右移动了X,向上移动了Y,以左下角为基点旋转了Ang,那么现在原来矩形左上角的坐标现在是多少?
这个经过Polar变换能实现,用trans方法怎么实现呢?

llsheng_73 发表于 2023-7-18 13:56:35

liuhe 发表于 2023-7-18 13:45
二维测试和你的函数结果相同
(defun PToLn(p p1 p2)(list(caddr(setq p(trans(mapcar'- p1 p)0(mapcar'- p1 p2))))(car p)(cadr p)))

liuhe 发表于 2023-7-18 14:04:46

llsheng_73 发表于 2023-7-18 13:56


66666我是刚研究的的,还是你的6

gaics 发表于 2023-7-18 14:39:16

本帖最后由 gaics 于 2023-7-18 15:07 编辑

llsheng_73 发表于 2023-7-18 13:56

73哥,这样行不?
(trans(trans (trans (mapcar '- p1 p2) 0 (mapcar '- p3 p2))0'(1 0 0))0'(1 0 0))

这样更简洁
(trans (trans (mapcar '- p1 p2) 0 (mapcar '- p3 p2))'(1 0 0)'(0 0 1))

gaics 发表于 2023-7-18 15:33:26

llsheng_73 发表于 2023-7-18 13:56


虽然被我试出了结果,但是对于trans函数依然似懂非懂。
从第一次trans返回的结果看,需要把坐标先绕X轴逆时针旋转90度、再绕Z轴逆时针旋转90度就能得到正确的结果。
所以第二次trans的参数为什么是'(1 0 0) '(0 0 1)还是没想明白。

960322 发表于 2023-7-18 16:22:32

各位高手,牛牛牛!非常感谢

mokson 发表于 2023-7-19 08:35:27

我始终还是搞不懂坐标转换的难题。尤其是 trans

1291500406 发表于 2023-7-19 10:53:52

直接 (command "ucs" "")
就不需要算ucs了
自用
页: [1] 2 3
查看完整版本: 求点在用户坐标系下的坐标