找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

楼主: wowan1314

[求助] 【求助】grvecs函数后的偏移矩阵UCS下怎么写?

[复制链接]
 楼主| 发表于 2013-6-17 19:43:00 | 显示全部楼层
找到ea的那个函数了! 运行后也不晓得这是在测试什么!
  1. ;;矩阵平移一个向量
  2. (defun ea:matrix_SetTranslation        (matrix ve / m1 m2 m3)
  3.   (setq        m1 (car matrix)
  4.         m2 (cadr matrix)
  5.         m3 (nth 2 matrix)
  6.   )
  7.   (list        (list (car m1) (cadr m1) (nth 2 m1) (car ve))
  8.         (list (car m2) (cadr m2) (nth 2 m2) (cadr ve))
  9.         (list (car m3) (cadr m3) (nth 2 m3) (last ve))
  10.         '(0.0 0.0 0.0 1.0)
  11.   )
  12. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-6-17 19:45:19 | 显示全部楼层
本帖最后由 wowan1314 于 2013-6-17 19:50 编辑

而对于平移矩阵的构造! 我又做了如下尝试。

测试程序后发现,可以实现X轴平行于水平线下的UCS及WCS的正常平移。

但是如果坐标系是斜的(斜的WCS与斜的ucs这两种),那么这个平移矩阵,还是不对的。估计斜的坐标系下,不仅矩阵的最后一个元素有变化,其他非1的项(估计是表示旋转的)也得变化。
  1. (DEFUN C:T1 NIL
  2. (SETQ P1 (GETPOINT))
  3. (SETQ P2 (GETPOINT))
  4. (SETQ  WYL '(2000 0 0) JUZ (TRANS WYL 1 2) JUZ (APPEND JUZ '(1)))
  5. (SETQ JUZ (MAPCAR '(LAMBDA(A B) (REVERSE(CONS B (REVERSE A))) ) '((1 0 0)(0 1 0)(0 0 1)(0 0 0)) JUZ))
  6. ;(SETQ JUZ '((1 0 0 2000) (0 1 0 0) (0 0 1 0) (0 0 0 1)))
  7. ;;(SETQ SJJZ '((1 0 0 0) (0 1 0 0) (0 0 1 0) (0 0 0 1)))
  8. (GRVECS (LIST 1 P1 P2) JUZ)
  9. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-6-17 20:18:29 | 显示全部楼层
又看了下高飞鸟的平移矩阵函数。他提供了两种基本一样前面的三项都是0 1 0。
这种平移跟我写的一样,都不能实现想要的平移。
  1. (defun MAT:Translation ( v )
  2.   (list
  3.     (list 1. 0. 0. (car v))
  4.     (list 0. 1. 0. (cadr v))
  5.     (list 0. 0. 1. (caddr v))
  6.     (list 0. 0. 0. 1.)
  7.   )
  8. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-6-17 20:26:13 | 显示全部楼层
按道理! P1坐标与平移向量相加就是平移后的P1'坐标。

但是放到GRVECS就不对了。平的UCS下还得TRANS 一下才得到正确的平移向量。!

斜的坐标系怎么TRANS都不对!

点评

你的问题涉及到从一个坐标系到另一个坐标系的变换矩阵,不只是平移。 用 从 一个坐标系到另一个坐标系 做关键字搜索下论坛,我发过帖子。  详情 回复 发表于 2013-6-17 20:29
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2013-6-17 20:27:17 | 显示全部楼层
葛老你也在研究这个啊,用这个可以实现天正粘贴的动态操作,比ARX速度还块,而且不会闪:lol

点评

呵呵! 我是在学习向量跟矩阵。 没深入研究他们的公式、定理什么的。 就是了解下他们的原理。 结果拿grvecs测试,连个平移矩阵都整不明白。  详情 回复 发表于 2013-6-17 20:31
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2013-6-17 20:29:54 | 显示全部楼层
wowan1314 发表于 2013-6-17 20:26
按道理! P1坐标与平移向量相加就是平移后的P1'坐标。

但是放到GRVECS就不对了。平的UCS下还得TRANS 一 ...

你的问题涉及到从一个坐标系到另一个坐标系的变换矩阵,不只是平移。

用 从 一个坐标系到另一个坐标系 做关键字搜索下论坛,我发过帖子。

点评

感觉没用到 坐标系变换呀! 你比如 正的WCS与 斜的WCS。 他们的坐标系是一样的。 那么我想把点P1作‘(2000 0 0)的位移。 用GRVECS就弄不出。(直接向量相加倒是正确)  详情 回复 发表于 2013-6-17 20:36
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-6-17 20:31:01 | 显示全部楼层
snsj 发表于 2013-6-17 20:27
葛老你也在研究这个啊,用这个可以实现天正粘贴的动态操作,比ARX速度还块,而且不会闪

呵呵! 我是在学习向量跟矩阵。 没深入研究他们的公式、定理什么的。

就是了解下他们的原理。 结果拿grvecs测试,连个平移矩阵都整不明白。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-6-17 20:36:35 | 显示全部楼层
本帖最后由 wowan1314 于 2013-6-17 20:38 编辑
XDSoft 发表于 2013-6-17 20:29
你的问题涉及到从一个坐标系到另一个坐标系的变换矩阵,不只是平移。

用 从 一个坐标系到另一个坐标系 ...

感觉没用到 坐标系变换呀!

你比如 正的WCS与 斜的WCS。 他们的坐标系是一样的。你让我再向谁的坐标系转呢?

在这个斜的WCS下,我想把点P1作‘(2000  0  0)的位移。

用GRVECS就弄不出。(直接向量相加倒是正确)

点评

坐标系怎么能一样呢 ,坐标系一样的是 原点,X轴,Y轴都一样,你斜的了,X轴向量和Y轴向量都不是(1.0 0.0 0.0) (0.0 1.0 0.0)了。  详情 回复 发表于 2013-6-17 20:44
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-6-17 20:42:10 | 显示全部楼层
改天继续! 先回家睡觉。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2013-6-17 20:44:02 | 显示全部楼层
wowan1314 发表于 2013-6-17 20:36
感觉没用到 坐标系变换呀!

你比如 正的WCS与 斜的WCS。 他们的坐标系是一样的。你让我再向谁的坐标 ...

坐标系怎么能一样呢 ,坐标系一样的是 原点,X轴,Y轴都一样,你斜的了,X轴向量和Y轴向量都不是(1.0 0.0 0.0) (0.0 1.0 0.0)了。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-6-17 21:34:06 | 显示全部楼层
XDSoft 发表于 2013-6-17 20:44
坐标系怎么能一样呢 ,坐标系一样的是 原点,X轴,Y轴都一样,你斜的了,X轴向量和Y轴向量都不是(1.0 0.0 ...

尽管是斜的。但他的x.y与原点都与正的wcs一样。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2013-6-17 22:03:52 | 显示全部楼层
wowan1314 发表于 2013-6-17 21:34
尽管是斜的。但他的x.y与原点都与正的wcs一样。

你贴一个这样的DWG上来吧。起夜了啊,这么快。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-6-18 06:45:44 | 显示全部楼层
XDSoft 发表于 2013-6-17 22:03
你贴一个这样的DWG上来吧。起夜了啊,这么快。

哎!  被矩阵折磨的没睡好觉。


未命名.jpg

斜WCS.zip

8.87 KB, 下载次数: 1, 下载积分: D豆 -1 , 活跃度 1

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-6-18 08:22:32 | 显示全部楼层
哎! 不是很明白! 硬是一个个的测试出来。

下面的这个代码,解决了正的ucs与正斜的WCS。但是没解决斜的ucs.
  1. (DEFUN C:T1 NIL
  2. (SETQ P1 (GETPOINT))
  3. (SETQ P2 (GETPOINT))
  4. (SETQ  WYL '(2000 0 0) WYL (TRANS WYL 1 2) ang (getvar 'viewtwist) JUZ (APPEND wyl '(1)))
  5. (if (AND (/= (getvar 'WORLDUCS) 0)(/= (getvar 'viewtwist) 0))
  6. (SETQ JUZ (LIST (LIST (COS ang) (-(SIN ang)) 0 (car wyl))(LIST (SIN ang)(COS ang) 0 (cadr wyl))   '(0 0 1 0) '(0 0 0 1)))
  7. (SETQ JUZ (MAPCAR '(LAMBDA(A B) (REVERSE(CONS B (REVERSE A))) ) '((1 0 0)(0 1 0)(0 0 1)(0 0 0)) JUZ))
  8. )
  9. ;(SETQ WYL '(2000 0 0) WYL (TRANS WYL 1 2))
  10. ;(SETQ JUZ (LIST (LIST (COS ang) (-(SIN ang)) 0 (car wyl))(LIST (SIN ang)(COS ang) 0 (cadr wyl))   '(0 0 1 0) '(0 0 0 1)))
  11. (GRVECS (LIST 1 P1 P2) JUZ)
  12. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 20个

财富等级: 恭喜发财

发表于 2013-6-18 09:03:04 | 显示全部楼层
wowan1314 发表于 2013-6-18 08:22
哎! 不是很明白! 硬是一个个的测试出来。

下面的这个代码,解决了正的ucs与正斜的WCS。但是没解决斜的 ...

你这个斜的UCS,还是世界坐标系,但有视图的旋转角度,VIEWTWIST系统变量是332,楼主,你要是变换点坐标,因为在世界坐标系,不用变。

楼主是不是想做出来在这个斜坐标系的 getcorner 拉出的矩形框还是正交矩形的? 如果那样,你需要把你的点 从 当前UCS 到 显示坐标系的变换,所以说,还是有个变换矩阵。
QQ截图20130618090230.png
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-9-25 12:32 , Processed in 0.525842 second(s), 64 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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