找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

楼主: wowan1314

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

[复制链接]
 楼主| 发表于 2013-6-18 09:13:28 | 显示全部楼层
本帖最后由 wowan1314 于 2013-6-18 09:22 编辑

居然被我一个个的试出来了! 哈哈

还不明白原理。 。。为什么要trans转换下呢?? 而且是转到2.  我只是针对坐标系的平移撒,怎么扯到2上面了?
  1. (DEFUN C:T1 NIL
  2. (SETQ P1 (GETPOINT))
  3. (SETQ P2 (GETPOINT))
  4. (SETQ P3 (GETPOINT))
  5. (SETQ  WYL '(2000 0 0) WYL (TRANS WYL 1 2) ang (getvar 'viewtwist) JUZ (APPEND wyl '(1)))
  6. (if (AND (/= (getvar 'WORLDUCS) 0)(/= (getvar 'viewtwist) 0))
  7. (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)))
  8. (SETQ JUZ (MAPCAR '(LAMBDA(A B) (REVERSE(CONS B (REVERSE A))) ) '((1 0 0)(0 1 0)(0 0 1)(0 0 0)) JUZ))
  9. )
  10. (if (AND (= (getvar 'WORLDUCS) 0) (= (getvar 'viewtwist) 0))
  11. (progn
  12. (SETQ WYL '(2000 0 0)  WYL (TRANS WYL 1 2) x (getvar 'ucsxdir) o '(0 0 0))
  13.    (SETQ ang (angle o x))
  14. (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)))
  15. ))
  16. (GRVECS (LIST 1 P1 P2 1 P2 P3) JUZ)
  17. )

点评

2是显示坐标系,所有拖动的,向量显示的这些都是基于显示坐标系的,以前你不用2可以,是因为显示和世界坐标系重合了,没转角啥的。 所以,写所有应用的时候,不管其他,需要什么坐标系的,都要给转过去,哪怕是和  详情 回复 发表于 2013-6-18 09:39
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-6-18 09:17:03 | 显示全部楼层
本帖最后由 wowan1314 于 2013-6-20 14:05 编辑

真是太辛苦了! 本以为会明白矩阵的构造,居然还是不明白。更迷糊了

看来得找本书来看看了。..(而且都没人写GRVECS里面矩阵的通用写法)
  1. ;==================================根据余弦求正弦,好像还是不对。
  2. (defun cos2sin (cosj / ANG VAR)
  3.    (SETQ ANG (atan (sqrt (ABS(- 1 (* cosj cosj)))) cosj))
  4.    (IF (< COSJ 0) (SETQ VAR (SIN ANG)) (SETQ VAR (SIN (+ ANG PI))))
  5.    (IF (= COSJ 0) (SETQ VAR 1))
  6. VAR
  7. )

点评

你先把在世界坐标系下的拖动弄好了,然后改其他坐标系就容易了。  详情 回复 发表于 2013-6-18 09:21
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 20个

财富等级: 恭喜发财

发表于 2013-6-18 09:21:02 | 显示全部楼层
wowan1314 发表于 2013-6-18 09:17
真是太辛苦了! 本以为会明白矩阵的构造,居然还是不明白。更迷糊了

看来得找本书来看看了。..

你先把在世界坐标系下的拖动弄好了,然后改其他坐标系就容易了。

点评

因为还不了解矩阵,所以我是把所有的先弄出来,再回头看他们的共同点。  详情 回复 发表于 2013-6-18 09:28
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-6-18 09:28:42 | 显示全部楼层
本帖最后由 wowan1314 于 2013-6-18 09:34 编辑
marting 发表于 2013-6-18 09:21
你先把在世界坐标系下的拖动弄好了,然后改其他坐标系就容易了。

因为还不了解矩阵,所以我是把所有的先弄出来,再回头看他们的共同点。
我想这个代码最后写出来应该不需要IF判断,
直接根据角度,平移量 一句代码就写出适合各种情况的平移矩阵。

只是还不是很明白我的平移量 怎么会跟 显示坐标系 有关系呢?
实际出来的结果也仅是针对X轴的平移,跟显示坐标没联系呀?


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

使用道具 举报

已领礼包: 20个

财富等级: 恭喜发财

发表于 2013-6-18 09:39:49 | 显示全部楼层
wowan1314 发表于 2013-6-18 09:13
居然被我一个个的试出来了! 哈哈

还不明白原理。 。。为什么要trans转换下呢?? 而且是转到2.  我只 ...

2是显示坐标系,所有拖动的,向量显示的这些都是基于显示坐标系的,以前你不用2可以,是因为显示和世界坐标系重合了,没转角啥的。

所以,写所有应用的时候,不管其他,需要什么坐标系的,都要给转过去,哪怕是和世界坐标系重合的。

点评

那我要是想按显示坐标系的X轴向右平移2000呢? 又该trans给谁?  详情 回复 发表于 2013-6-18 09:43
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-6-18 09:43:03 | 显示全部楼层
本帖最后由 wowan1314 于 2013-6-18 09:45 编辑
marting 发表于 2013-6-18 09:39
2是显示坐标系,所有拖动的,向量显示的这些都是基于显示坐标系的,以前你不用2可以,是因为显示和世界坐 ...

那我要是想按显示坐标系的X轴向右平移2000呢? 又该trans给谁?用 trans pt 2 1 也不对呀
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-6-18 11:32:06 | 显示全部楼层
本帖最后由 wowan1314 于 2013-6-19 14:14 编辑

根据已知的代码,经过找其共同点。

发现GRVECS里的平移矩阵均需转换为显示坐标系后才能正确运行。

原因还不清楚!   
而且现在的代码是按坐标系X轴右移2000.。 如果我要按显示坐标系的x轴右移2000呢? 又当如何变换??????


想通过GRVECS了解矩阵是个错误的选择!?下次再了解矩阵的作用及其构造,
准备通过(vla-TransformBy obj (vlax-tmatrix mat))这两个函数实际操作变换,可能这样好理解些。


精简代码如下:
  1. (DEFUN C:T1 (/ P1 P2 P3 X O V11 V22 COSJ SINJ WYL JUZ)
  2.   (SETQ        P1   (GETPOINT)
  3.         P2   (GETPOINT)
  4.         P3   (GETPOINT)
  5.         X    (getvar 'ucsxdir)
  6.         O    (getvar 'ucsorg)
  7.         V11  (MAPCAR '- X O)
  8.         V22  (MAPCAR '- (TRANS X 1 2) (TRANS O 1 2))
  9.         COSJ (cosval V11 V22)                            ;;求两向量的夹角余弦
  10.         SINJ (float (sqrt (- (1- (expt COSJ 2)))))         
  11.         WYL  '(2000 0 0)
  12.         WYL  (TRANS WYL 1 2)
  13.         JUZ  (LIST (LIST COSJ (- SINJ) 0 (car wyl))
  14.                    (LIST SINJ COSJ 0 (cadr wyl))
  15.                    '(0 0 1 0)
  16.                    '(0 0 0 1)
  17.              )
  18.   )
  19.   (GRVECS (LIST 1 P1 P2 1 P2 P3) JUZ)
  20. )
其中向量夹角余弦函数  摘自xxsheng网友,在此感谢。

其原文地址
我的向量和矩阵学习心得
http://bbs.mjtd.com/thread-65904-1-1.html



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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-25 12:18 , Processed in 0.413080 second(s), 40 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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