明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1141|回复: 9

[提问] 求点p 绕p1 p2为法线正方向旋转 ang 角度后的点

[复制链接]
发表于 2024-5-7 22:48:44 | 显示全部楼层 |阅读模式
求助,求点p 绕p1 p2为法线正方向旋转 ang 角度后的点,应该怎么写请大侠帮忙,谢谢!
发表于 2024-5-7 23:04:08 | 显示全部楼层
本帖最后由 Bao_lai 于 2024-5-7 23:15 编辑






旋转只口不谈旋转基点确定不是耍流氓?
还是说是图中所示?
提问题总要讲明白嘛,不能让别人去猜吧。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2024-5-8 07:29:34 | 显示全部楼层
发表于 2024-5-8 11:18:12 | 显示全部楼层
这个太难,你把握不住,开玩笑
最笨的方法是,创造一个点,然后用vla-rotate  旋转,再读取这个点坐标后删除这个点
发表于 2024-5-8 16:21:56 | 显示全部楼层
发表于 2024-5-8 19:17:56 | 显示全部楼层
https://www.cnblogs.com/JJBox/p/14300098.html
一些基础的矩阵变换概念,
在描述任意轴旋转只是先变换到z轴重合,这个过程叫做基变换.
至于怎么转换成lisp代码就是你自己的事情了,嘻嘻
发表于 2024-5-13 14:51:14 | 显示全部楼层
;点pt围绕轴line(两点)旋转角度ang
(defun diy_3d_rotate ( pt line ang / vz z p1 p2)
        (mapcar 'set '(p1 p2) line) ;旋转轴两点
        (setq vz (mapcar '- p2 p1)) ;旋转轴向量
        (setq pt (mapcar '- pt p1)) ;旋转点以旋转轴起点位移
        (setq pt (trans pt 0 vz)) ;把pt转换为以旋转轴为z轴的坐标系,xy轴未明
        (setq z (caddr pt)) ;获得转换后z坐标
        (setq pt (list (car pt) (cadr pt)));去掉转换后z坐标
        (setq pt (polar (list 0 0) (+ ang (angle (list 0 0) pt)) (distance (list 0 0) pt))) ;把转换后在0平面上投影点旋转ang
        (setq pt (list (car pt) (cadr pt) z)) ;把z坐标给回旋转后的点
        (setq pt (trans pt vz 0)) ;转回世界坐标系
        (setq pt (mapcar '+ pt p1)) ;还原位移
)
发表于 2024-5-13 14:54:23 | 显示全部楼层
上贴巧妙利用acad的trans函数
如果要用纯数学计算,代码会略微复杂一些
 楼主| 发表于 2024-5-13 17:16:17 | 显示全部楼层
szmaicy 发表于 2024-5-13 14:51
;点pt围绕轴line(两点)旋转角度ang
(defun diy_3d_rotate ( pt line ang / vz z p1 p2)
        (mapcar 'set  ...

非常感谢!谢谢!
 楼主| 发表于 2024-5-13 17:17:36 | 显示全部楼层
szmaicy 发表于 2024-5-13 14:51
;点pt围绕轴line(两点)旋转角度ang
(defun diy_3d_rotate ( pt line ang / vz z p1 p2)
        (mapcar 'set  ...

不但解决了问题,注释还很清楚,学到不少!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-25 18:00 , Processed in 0.184924 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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