明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1821|回复: 16

[讨论] 浅谈trans函数的理解

  [复制链接]
发表于 2023-7-20 08:27 | 显示全部楼层 |阅读模式
本帖最后由 gaics 于 2023-7-20 10:51 编辑

以下为我个人对trans函数浅薄的理解,如有错误请见谅!

假设世界坐标系上有一点P,坐标为(1.0 2.0 0.0),求其在以A点(3.0 3.0 0.0)为原点、向量AB为X轴的坐标系中的坐标值(B点坐标(6.0 3.0 0.0))。

通过图1不难看出,P点在新坐标系中的坐标值应为(-2.0 -1.0 0.0),
但利用trans函数求值:(trans (mapcar '- P A) 0 (mapcar '- B A)),得到的却是(-1.0 0.0 -2.0),明显与预期不符。
再分析两组数据,trans命令得到的结果是(y z x)格式。

也就是说此时的坐标系如图2所示,以A为原点,向量AB方向为Z轴。
显然这不是我们想要的坐标系。
再次运用trans函数,(trans  (trans (mapcar '- P A) 0 (mapcar '- B A))  '(1 0 0)'(0 0 1)),得到坐标(-2.0 -1.0 0.0)!
这一步中,trans函数的“from”为'(1 0 0),“to”为'(0 0 1),也可以简单理解为参数中的“1”代表了Z轴的位置,即(1 0 0)代表Z轴位于X方向。
因此通过这一步,将Z轴转换到他本该在位置。

************************************************
大家都知道trans函数格式为(trans pt from to [disp]),总结一下两个重要参数的意义:
1、pt
“pt”不仅仅是一个坐标点,其中还包含了“新坐标系”的原点信息。
如上例(trans (mapcar '- P A) 0 (mapcar '- B A)中的(mapcar '- P A) 表示新坐标系以A点为原点;
如果写作(trans P 0 (mapcar '- B A),则表示新坐标系的原点与原坐标系相同。


2、to
“to”可以是一个向量,他代表了“新坐标系”Z轴的方向。
如上例中的(mapcar '- B A)表示一个由A到B的向量,定义了Z轴的方向。该参数也仅仅表达了一个“方向”。
而且我个人认为其中A、B的值也不是固定的,只要能够表达你想要的“方向”即可 前提:坐标系原点已另有定义

比如A、B可以分别是
A=(3.0 3.0 0.0)B=(8.0 3.0 0.0),
或者A=(3.0 4.0 0.0)B=(8.0 4.0 0.0),
或者A=(3.0 4.0 5.0)B=(8.0 4.0 5.0),
或者......
只要他能够反映出一种方向的趋势。

以上是我个人的一些理解,如有不妥请大家指正,谢谢!

本帖子中包含更多资源

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

x

评分

参与人数 1明经币 +1 收起 理由
guosheyang + 1 赞一个!

查看全部评分

"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2023-7-28 17:44 | 显示全部楼层
本帖最后由 有区别吗 于 2023-7-28 23:13 编辑

按你的数据测试了下,以'(3 3 0)为原点建立UCS,
输入(trans '(1 2 0) 0 1)
确实是返回(-2.0 -1.0 0.0)没问题啊.
(trans pt from to [disp]),
高飞鸟的帖里说的很清楚了,后二个参数不使用位值而使用点表的话,
当作向量,返回值与两个向量的点乘运算相关.
你随便写两组向量测试下就知道了,
你写这些我反正是完全闹不明白在说些什么.
trans就是个只考虑了变换矩阵的特征值为1的函数
发表于 2023-7-26 14:15 | 显示全部楼层
liuhe 发表于 2023-7-26 13:57
Lee  mac  有了成熟坐标系函数,核心就是trans  和矩阵,两者离不开的,只是 我没有仔细研究原理,只会用

只用 trans 是不可能的,像错切、不等比缩放用 trans 是实现不了的。在构造转换矩阵的某些要素时,用 trans 更方便的情况下当然用 trans 而不需要自己去写计算式,但这不表示说离开了 trans 就做不出来。
发表于 2023-8-7 11:11 | 显示全部楼层
mituzhe 发表于 2023-8-6 11:51
有一点不明白,to所代表的向量确定了z轴方向,那么xy轴根据右手定则应该有无数种情况,是怎么确定具体在哪 ...

若 WCS z 轴与OCS z' 轴不平行,因为二者同时经过 WCS 原点,则二者必定形成一个平面。在此平面内旋转 z 轴至 z' 轴,则 OCS x' y' 轴唯一,可以参见 AutoCAD 帮助——任意轴算法。
发表于 2023-7-20 09:37 | 显示全部楼层
感谢分享,学习了
发表于 2023-7-20 10:53 | 显示全部楼层
试试,块里面的坐标,和外面的坐标,转换原理
 楼主| 发表于 2023-7-21 07:46 | 显示全部楼层
liuhe 发表于 2023-7-20 10:53
试试,块里面的坐标,和外面的坐标,转换原理

暂时只能理解到这么多
发表于 2023-7-21 16:18 | 显示全部楼层
谢谢
如有几个实际应用列子
就好理解了
这感觉太高深
发表于 2023-7-26 10:20 | 显示全部楼层
点的转换如果不是在几个特殊坐标系(wcs、ucs、ocs)中转换,用转换矩阵的方法比 trans 更直观。这里主要就是构造转换矩阵的问题。
发表于 2023-7-26 10:22 | 显示全部楼层
liuhe 发表于 2023-7-20 10:53
试试,块里面的坐标,和外面的坐标,转换原理

找到转换矩阵直接矩阵和矢量相乘即可,转换矩阵用 (nentselp) 是可以找到的。
发表于 2023-7-26 10:43 | 显示全部楼层
vormittag 发表于 2023-7-26 10:22
找到转换矩阵直接矩阵和矢量相乘即可,转换矩阵用 (nentselp) 是可以找到的。

前提是获取矩阵,获取矩阵的方法呢。复杂体系还得靠trans转换,
发表于 2023-7-26 13:15 | 显示全部楼层
liuhe 发表于 2023-7-26 10:43
前提是获取矩阵,获取矩阵的方法呢。复杂体系还得靠trans转换,

复杂的体系才是要靠数学计算的,用 trans 反而不好表达。
发表于 2023-7-26 13:57 | 显示全部楼层
vormittag 发表于 2023-7-26 13:15
复杂的体系才是要靠数学计算的,用 trans 反而不好表达。

Lee  mac  有了成熟坐标系函数,核心就是trans  和矩阵,两者离不开的,只是 我没有仔细研究原理,只会用
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-12 22:20 , Processed in 0.166993 second(s), 29 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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