继续厚着脸皮求助。空间曲线坐标转XY平面坐标
如图,请问把空间曲线坐标转换为XY平面坐标,在XY平面上画一个一模一样的曲线原理在里面了,根据自身需要去修改
(defun c:tt(/ en i obj pt1 pt2 pt3 pts u v w x)
(princ"\n仅供娱乐")
(setq en(car (entsel))
pts nil
i (fix (vlax-curve-getendparam en)))
(while (>= i 0)
(setq pts (cons (vla-get-coordinate (setq obj (vlax-ename->vla-object en))
i)
pts)
i (1- i)))
(setq pts (mapcar
'(lambda (x)
(vlax-safearray->list (vlax-variant-value x)))
pts)
pt1 (cadr pts)
pt2 (car pts)
pt3 (caddr pts)
u (mapcar (function -) pt1 pt3)
v (mapcar (function -) pt1 pt2)
w (list
(- (* (cadr u) (caddr v)) (* (cadr v) (caddr u)))
(- (* (car v) (caddr u)) (* (car u) (caddr v)))
(- (* (car u) (cadr v)) (* (car v) (cadr u))))
pts (mapcar '(lambda (x) (trans x '(0 0 1) w)) pts))
(foreach npts
(vla-put-coordinate obj (setq i (1+ i)) (vlax-3d-point n))))
本帖最后由 你有种再说一遍 于 2025-4-30 05:46 编辑
罗德里格公式
https://www.cnblogs.com/JJBox/p/14300098.html#_label3_3_3_2
1,图元从基点平移到原点,平移矩阵
2,短边重合到x轴,三维旋转矩阵
3,绕x轴旋转
4,图元原点平移回去基点
第二步导致原始图的长边投影XOY面之后的不一样了.
如果想沿着它还挺麻烦
需要长边向量投影到XOY面构造u轴
然后旋转一个90°构造v轴
再叉乘uv,得到w轴.
绕v轴旋转就好了. 本帖最后由 guosheyang 于 2025-4-29 23:02 编辑
tender138 发表于 2025-4-29 22:41
多谢指教!我想用几何方法学习矩阵
vla-Rotate3DRotate3D都是封装好的函数 其源代码也是利用的旋转变换矩阵矩阵变换可以去看高飞鸟大佬的帖子 用proj命令 转到xy面对齐的话可以用rotate3d 或者al命令 本帖最后由 tender138 于 2025-4-29 22:43 编辑
mokson 发表于 2025-4-29 21:40
用proj命令
多谢指教!我想用几何方法学习矩阵:handshake 本帖最后由 tender138 于 2025-4-29 22:43 编辑
guosheyang 发表于 2025-4-29 22:07
转到xy面对齐的话可以用rotate3d 或者al命令
多谢指教!我想用几何方法学习矩阵:handshake 本帖最后由 tender138 于 2025-4-29 22:55 编辑
你有种再说一遍 发表于 2025-4-29 21:07
罗德里格公式
https://www.cnblogs.com/JJBox/p/14300098.html#_label3_3_3_2
多谢指点!改天我学习一下:handshake
我太菜了,几何都忘光了,不容易理解:funk:
这感觉可以用
Z值归零
坛中多的是吧
页:
[1]
2