找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 4330|回复: 45

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

[复制链接]
发表于 2013-5-1 20:08:42 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

×
本帖最后由 wowan1314 于 2013-5-19 11:56 编辑

为什么使用grvecs函数,出现偏移错误?如下:
(grvecs '(1 (1 2)(1 5)      ;Draws a red line from (1,2) to (1,5)      
              2 (2 2)(2 5)       ;Draws a yellow line from (2,2) to (2,5)   
              3 (3 2)(3 5)       ;Draws a green line from (3,2) to (3,5)      
              4 (4 2)(4 5)       ;Draws a cyan line from (4,2) to (4,5)      
              5 (5 2)(5 5)       ;Draws a blue line from (5,2) to (5,5)         
            )   
           '((1.0 0.0 0.0 5.0)   ;X方向偏移5
             (0.0 1.0 0.0 5.0)   ;Y方向偏移5
             (0.0 0.0 1.0 0.0)   
             (0.0 0.0 0.0 1.0)
           )
)
上述语句应该画出五条垂直的直线,并且在XY方向各偏移+5。
但是在UCS下实际却偏移了很多
请高手解答,谢谢!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 145个

财富等级: 日进斗金

发表于 2013-5-1 21:07:09 | 显示全部楼层
应该什么样? 图片这样?

QQ截图20130501210624.png

还是这样?

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

使用道具 举报

 楼主| 发表于 2013-5-1 21:31:47 | 显示全部楼层

grvercs 就是在UCS 下绘制的! 只是加个平移矩阵就不知道移动到哪里了!

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

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2013-5-1 21:35:50 | 显示全部楼层
wowan1314 发表于 2013-5-1 21:31
grvercs 就是在UCS 下绘制的! 只是加个平移矩阵就不知道移动到哪里了!

绘制出的线都是竖直的! 我只 ...

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

使用道具 举报

 楼主| 发表于 2013-5-1 21:49:04 | 显示全部楼层
本帖最后由 wowan1314 于 2013-5-1 21:57 编辑
XDSoft 发表于 2013-5-1 21:35
你想要上面第二个图片那样的?


第一个! 本来在WCS下是正常的。但是UCS下却不正常!

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

使用道具 举报

已领礼包: 51个

财富等级: 招财进宝

发表于 2013-5-1 22:17:32 | 显示全部楼层
本帖最后由 Lispboy 于 2013-5-1 22:20 编辑
wowan1314 发表于 2013-5-1 21:49
第一个! 本来在WCS下是正常的。但是UCS下却不正常!

不正常的体现是,偏移的距离太远! 出问题的地 ...

最终的矩阵应该是这样得到,用XDRX_API描述下:
(setq m_t1 (xdrx_matrix_ucs2wcs))  ;; UCS->WCS
(setq m_t2 (xdrx_matrix_wcs2ucs))  ;; WCS->UCS

你在UCS下,那么就

1、要先转换回WCS  m_t1
2、X,Y偏移的矩阵   mm
3、结果在转换回UCS m_t2

组合下,矩阵左乘,最后转换的在前面:

(setq m ($xdlsp_matrix_product (list m_t2 mm m_t1)))
((1.0 0.0 0.0 6.39459) (0.0 1.0 0.0 3.01815) (0.0 0.0 1.0 0.0) (0.0 0.0 0.0
1.0))

评分

参与人数 1D豆 +5 收起 理由
wowan1314 + 5 及时回复奖!

查看全部评分

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

使用道具 举报

 楼主| 发表于 2013-5-2 12:03:57 | 显示全部楼层
开始计算点的时候就把平移量计算进去算啦。 这个矩阵还麻烦些。没明白!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2013-5-2 12:52:36 | 显示全部楼层
wowan1314 发表于 2013-5-2 12:03
开始计算点的时候就把平移量计算进去算啦。 这个矩阵还麻烦些。没明白!

其实你这个是涉及到点的坐标系的变换。我看你说的想要的结果好像不太对,不同坐标系下的相对位置应该是不变的。怎么你要求的在WCS和UCS都是竖直的? 应该垂直于坐标系的X轴吧?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-5-2 13:42:36 | 显示全部楼层
本帖最后由 wowan1314 于 2013-5-2 13:44 编辑
XDSoft 发表于 2013-5-2 12:52
其实你这个是涉及到点的坐标系的变换。我看你说的想要的结果好像不太对,不同坐标系下的相对位置应该是不 ...

这个函数就是在UCS下画出向量!  唯一的变数在矩阵参数上!

而这个矩阵参数是可有可无的。

1、在没矩阵参数时,不管什么情况画出的都是竖直的!

2、在有矩阵参数时。

   以本例中,矩阵为改变各个向量的位置而大小不变。即各个向量XY均加5的位移。

   本以为这个矩阵参数也不会涉及坐标变换呢! 但是他确实涉及到了。wcs下位移正常,ucs下位移不是5.而是移动很远。

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

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2013-5-2 13:54:21 | 显示全部楼层
wowan1314 发表于 2013-5-2 13:42
这个函数就是在UCS下画出向量!  唯一的变数在矩阵参数上!

而这个矩阵参数是可有可无的。

如果用户坐标系在变尼,你每次都修改吗? 所以还是要矩阵,矩阵就是在各个坐标系改变时候方便。你只关心一个WCS下怎么做就行了,想改变到哪个坐标系,修改下转换矩阵就行了。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 6530个

财富等级: 富甲天下

发表于 2013-5-2 14:16:12 | 显示全部楼层
还在探亲,没装CAD,无法实验,不过有些思路,如果有兴趣不妨一试。
如果对每个坐标进行转换,似乎也不会很难,那么这个转换矩阵就失去了作业,所以,问题似乎就出在转换矩阵上,根据函数帮助对转换矩阵的解释,这个转换矩阵和nentselp的转换矩阵是相同的,也就是说,在自定义UCS的情况下,转换矩阵的这些值并不都是1和0,而是和坐标系平移和旋转有关的值,换句话说,就是ucsxdir、ucsydir和ucsorg相关的值。
没法测试,仅说看法,抛砖而已,希望有用。

评分

参与人数 1D豆 +5 收起 理由
wowan1314 + 5 热心帮忙奖!

查看全部评分

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

使用道具 举报

 楼主| 发表于 2013-5-6 13:10:08 | 显示全部楼层
li_j说的在理! 估计 0 1 0这些是WCS坐标系的矩阵。

而如果要得到UCS下的平移矩阵,应该是UCS坐标系的矩阵与平移量的结合。

那么就需要两个函数,
1、得到当前UCS坐标系矩阵函数。2、矩阵与平移量的结合函数
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 593个

财富等级: 财运亨通

发表于 2013-5-6 18:17:14 | 显示全部楼层
翻到一个老早的
http://www.xdcad.net/forum/home.php?mod=space&do=blog
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 19个

财富等级: 恭喜发财

发表于 2013-5-6 19:47:56 | 显示全部楼层
eachy 发表于 2013-5-6 18:17
翻到一个老早的
http://www.xdcad.net/forum/home.php?mod=space&do=blog

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

使用道具 举报

已领礼包: 593个

财富等级: 财运亨通

发表于 2013-5-6 20:37:57 | 显示全部楼层
Lisphk 发表于 2013-5-6 19:47
eachy大师,你的链接怎么跑我的个人空间里面了?

那个窝窝引用不对,还是贴上来吧,确实早了点
[pcode=lisp,true];;Grvecs与矩阵配合实例:动态拖动演示框 By Eachy 2003.02.28
(defun ea:drawbymatrix
       (/ ea:grvecs urp0 urp loop urp1 source pt matrix)
  (defun ea:grvecs (p1 p2 color matrix1 matrix2 / p3 p4 p5 p6 p7)
    (setq p3 (polar p2 0.0 10)
          p4 (polar p2 0.0 1)
          p5 (polar p4 0.0 7)
          p6 (polar p5 _pi2 2)
          p7 (polar p4 _pi2 2)
    )
    (grvecs (list color p1 p2 p2 p3))
    (grvecs (list color p4 p5 p5 p6 p6 p7 p7 p4) matrix1)
    (grvecs (list color p4 p5 p5 p6 p6 p7 p7 p4) matrix2)
  )
  (setq        matrix '((1.0 0.0 0.0 0.0)
                 (0.0 1.0 0.0 0.0)
                 (0.0 0.0 1.0 0.0)
                 (0.0 0.0 0.0 1.0)
                )
  )
  (setq        urp  (getpoint "\n基点: ")
        loop t
  )
  (prompt "\nscond point :")
  (while loop
    (setq urp1 (grread t 1 2))
    (setq source (car urp1)
          pt         (cadr urp1)
    )
    (cond
      ((and (= source 5) ;_跟踪点
            (or (/= (car urp) (car pt)) (/= (cadr urp) (cadr pt)))
       )
       (progn
         (if urp0
           (ea:grvecs urp
                      urp0
                      0 ;_用屏幕色覆盖前次绘制的矢量获取背景色函数搜索前面帖子
                      (ea:matrix_SetTranslation matrix '(1.0 1.0 0.0))
                      (ea:matrix_SetTranslation matrix '(1.0 -3.0 0.0))
           )
         )
         (ea:grvecs urp
                    pt
                    1
                    (ea:matrix_SetTranslation matrix '(1.0 1.0 0.0))
                    (ea:matrix_SetTranslation matrix '(1.0 -3.0 0.0))
         )
         (setq urp0 pt)
       )
      )
      ((or (= source 3) ;_拾取点
           (and (= source 2) (or (= pt 13) (= pt 32)))
       )
       (setq loop nil)
      )
      (t)
    )
  )
)
[/pcode]

评分

参与人数 1D豆 +5 收起 理由
wowan1314 + 5 给力奖

查看全部评分

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-25 12:30 , Processed in 0.430152 second(s), 68 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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