明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1409|回复: 31

[提问] 求点在用户坐标系下的坐标

[复制链接]
发表于 2023-7-18 12:51 | 显示全部楼层 |阅读模式
以知点  p1 p2 p3的坐标, 求点p1在以p2为原点,p2p3为X正轴方向的坐标系下p1的新坐标点,请问应该怎么写。 请大师们出手相助,万分谢谢!
 楼主| 发表于 2023-7-18 13:06 | 显示全部楼层
学习了下,好像这样就可以了。谢谢明经
(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
  )
发表于 2023-7-18 13:45 | 显示全部楼层
  1. (setq p1 '( 5 2 0 ) p2 '(1 1 0 ) p3 '(3 5 0))
  2. (LH:TRANS3P P1 P2 P3)
  3. ;;;;;P1 移动点
  4. ;;;;;P2 新原点
  5. ;;;;;P3 新原点的方向
  6. ;;;;二维测试没问题,三维坐标不清楚
  7. (defun LH:TRANS3P (p1 p2 p3)
  8.   (list        (caddr (trans (mapcar '- p1 p2) 0 (mapcar '- p3 p2)))
  9.         (car (trans (mapcar '- p1 p2) 0 (mapcar '- p3 p2)))
  10.         (cadr (trans (mapcar '- p1 p2) 0 (mapcar '- p3 p2)))
  11.   )
  12. )



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

点评

三维问题缺条件没有定解。还需要给一个轴的方向,实际上你这里是默认z轴保持 (0 0 1) 不变了。  发表于 2023-7-26 15:46
发表于 2023-7-19 11:23 | 显示全部楼层
liuhe 发表于 2023-7-18 13:45
二维测试和你的函数结果相同

trans函数一直没搞明白。比如当前坐标系中一个矩形的左上角坐标(x1 y1 0),左下角坐标(x0 y0 0)。矩形向右移动了X,向上移动了Y,以左下角为基点旋转了Ang,那么现在原来矩形左上角的坐标现在是多少?
这个经过Polar变换能实现,用trans方法怎么实现呢?
发表于 2023-7-18 13:56 | 显示全部楼层
liuhe 发表于 2023-7-18 13:45
二维测试和你的函数结果相同

  1. (defun PToLn(p p1 p2)(list(caddr(setq p(trans(mapcar'- p1 p)0(mapcar'- p1 p2))))(car p)(cadr p)))
发表于 2023-7-18 14:04 | 显示全部楼层

66666  我是刚研究的的,还是你的6
发表于 2023-7-18 14:39 | 显示全部楼层
本帖最后由 gaics 于 2023-7-18 15:07 编辑

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))

点评

(trans(trans(mapcar '- p1 p2)0(mapcar '- p3 p2))'(1 0)0)  发表于 2023-7-18 15:18

评分

参与人数 1明经币 +1 收起 理由
llsheng_73 + 1 很给力!

查看全部评分

发表于 2023-7-18 15:33 | 显示全部楼层

虽然被我试出了结果,但是对于trans函数依然似懂非懂。
从第一次trans返回的结果看,需要把坐标先绕X轴逆时针旋转90度、再绕Z轴逆时针旋转90度就能得到正确的结果。
所以第二次trans的参数为什么是'(1 0 0) '(0 0 1)还是没想明白。
 楼主| 发表于 2023-7-18 16:22 | 显示全部楼层
各位高手,牛牛牛!非常感谢
发表于 2023-7-19 08:35 | 显示全部楼层
我始终还是搞不懂坐标转换的难题。尤其是 trans
发表于 2023-7-19 10:53 | 显示全部楼层
直接 (command "ucs" "")  
就不需要算ucs了
自用
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-5-20 11:22 , Processed in 0.395734 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表