找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1848|回复: 10

[测试]:关于XDRX_API的矩阵函数使用的问题

[复制链接]
发表于 2003-2-25 12:39:30 | 显示全部楼层 |阅读模式

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

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

×
***  == AutoCAD 应用程序开发接口XdRx_API For ACAD 2000 Build 30107 ==  ***

出错??????
(setq URP '(5 5 0))
(setq MATRIX (xdrx_matrix_settranslation (xdrx_matrix_identity 3) URP))
(xdrx_matrix_setscale MATRIX 2 URP)← NOT REAL????

(5 5 0)
((1.0 0.0 0.0 5.0) (0.0 1.0 0.0 5.0) (0.0 0.0 1.0 0.0) (0.0 0.0 0.0 1.0))
nil


出错??????
(setq URP '(10 10 0)) ← >= 10 ????
(setq MATRIX (xdrx_matrix_settranslation (xdrx_matrix_identity 3) URP))
(xdrx_matrix_setscale MATRIX 2.0 URP)

(10 10 0)
nil
nil



为甚么 OK!!!!
(setq URP '(15.0 15.0 0.0)) ←要 REAL ????
(setq MATRIX (xdrx_matrix_settranslation (xdrx_matrix_identity 3) URP))
(xdrx_matrix_setscale MATRIX 2.0 URP) ←比例要 REAL???? 但URP好像没有效果

(15.0 15.0 0.0)
((1.0 0.0 0.0 15.0) (0.0 1.0 0.0 15.0) (0.0 0.0 1.0 0.0) (0.0 0.0 0.0 1.0))
((2.0 0.0 0.0 0.0) (0.0 2.0 0.0 0.0) (0.0 0.0 2.0 0.0) (0.0 0.0 0.0 1.0))



为甚么 OK!!!!  
(setq URP '(5 5 0)) ←要 < 10 ????
(setq MATRIX (xdrx_matrix_settranslation (xdrx_matrix_identity 3) URP))
(xdrx_matrix_setscale MATRIX 2.0 URP) ←比例要 REAL???? 但URP好像没有效果

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

已领礼包: 593个

财富等级: 财运亨通

发表于 2003-2-26 07:22:34 | 显示全部楼层
API中的矩阵、向量函数有些需要实数,有的接受3D点,有的只接受2D点,手册中没有说明,应该是程序的要求吧。
还有需要2D格式的时候返回值却是3D的,有一个值会变的巨大或巨小,疑惑。
还有不是小于10,改成10.0试试。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 593个

财富等级: 财运亨通

发表于 2003-2-26 11:56:57 | 显示全部楼层
点积要求的向量必须是单位向量?

  1. xdrx_vector_DotProduct

  2. 功    能:求两个向量的点积

  3. 调用格式:(xdrx_vector_DotProduct <向量1> <向量2>)

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

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2003-2-26 12:03:12 | 显示全部楼层
最初由 LUCAS 发布
[B]***  == AutoCAD 应用程序开发接口XdRx_API For ACAD 2000 Build 30107 ==  ***

出错??????
(setq URP '(5 5 0))
(setq MATRIX (xdrx_matrix_settranslation (xdrx_matrix_identity 3) URP))
(xdrx_matrix_set... [/B]


在使用矩阵函数的时候,先用XDRX_API提供的
xdrx_matrix_identity 得到一个单位的矩阵,然后其他矩阵函数用这个做基本,因为对于3D矩阵,是4X4阶的,2D矩阵是3X3 阶的,图形几何学矩阵,多了一列平移分量。

在所有的矩阵运算前:

(setq matrix (xdrx_matrix_identity 3))  ; 3D 单位转换矩阵
........

或者:

(setq matrix (xdrx_matrix_identity 2))  ; 2D 单位转换矩阵

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

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2003-2-26 12:04:21 | 显示全部楼层
最初由 eachy 发布
[B]点积要求的向量必须是单位向量?

  1. xdrx_vector_DotProduct

  2. 功    能:求两个向量的点积

  3. 调用格式:(xdrx_vector_DotProduct <向量1> <向量2>)

  4. 返 回 值:两向量夹角的余玄
复制代码
[/B]


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

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2003-2-26 12:11:52 | 显示全部楼层
最初由 eachy 发布
[B]API中的矩阵、向量函数有些需要实数,有的接受3D点,有的只接受2D点,手册中没有说明,应该是程序的要求吧。
还有需要2D格式的时候返回值却是3D的,有一个值会变的巨大或巨小,疑惑。
还有不是小于10,改成10.0试?.. [/B]


EA,矩阵运算函数参数不是3D点和2D点,是3D矩阵和2D矩阵,3D矩阵是 4X4 阶
2D矩阵是3X3 阶

使用矩阵函数前,先利用API提供的 XDRX_MATIRX_IDENTITY 创建一个单位3D/2D单位矩阵。

下面是演示,可以看到4X4 和 3X3 矩阵,其中每个分量是个表。
  1. <normalfont>
  2. 命令: (setq m3 (xdrx_matrix_identity 3))
  3. ((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))
  4. 命令: (setq m2 (xdrx_matrix_identity 2))
  5. ((1.0 0.0 0.0) (0.0 1.0 0.0) (0.0 0.0 1.0))
  6. </normalfont>
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 593个

财富等级: 财运亨通

发表于 2003-2-26 12:19:50 | 显示全部楼层
[QUOTE]最初由 XDSoft 发布
[B][QUOTE]最初由 eachy 发布
[B]点积要求的向量必须是单位向量?

  1. xdrx_vector_DotProduct

  2. 功    能:求两个向量的点积

  3. 调用格式:(xdrx_vector_DotProduct <向量1> <向量2>)

  4. 返 回 值:两?.. [/B][/QUOTE][CODE]
  5. _$ (xdrx_vector_angle '(3 2) '(3 -6))
  6. 1.69515
  7. _$ (cos (xdrx_vector_angle '(3 2) '(3 -6)))
  8. -0.124035
  9. _$ (xdrx_vector_dotproduct '(3 2) '(3 -6))
  10. -3.0
  11. _$
复制代码

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

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2003-2-26 12:22:25 | 显示全部楼层
最初由 eachy 发布
[B][QUOTE]最初由 XDSoft 发布
[B][QUOTE]最初由 eachy 发布
[B]点积要求的向量必须是单位向量?
[CODE]
xdrx_vector_DotProduct

功    能:求两个向量的点积

调用格式:(xdrx_vector_DotProd... [/B]


是点积函数? 还是 向量角度函数?

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

使用道具 举报

已领礼包: 593个

财富等级: 财运亨通

发表于 2003-2-26 12:24:26 | 显示全部楼层
  1. _$ (xdrx_vector_angle '(3 2) '(3 -6))
  2. 1.69515
  3. _$ (cos (xdrx_vector_angle '(3 2) '(3 -6)))
  4. -0.124035
  5. _$ (xdrx_vector_dotproduct '(3 2) '(3 -6))
  6. -3.0
  7. _$
复制代码

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

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2003-2-26 12:52:41 | 显示全部楼层
最初由 eachy 发布
[B]
  1. _$ (xdrx_vector_angle '(3 2) '(3 -6))
  2. 1.69515
  3. _$ (cos (xdrx_vector_angle '(3 2) '(3 -6)))
  4. -0.124035
  5. _$ (xdrx_vector_dotproduct '(3 2) '(3 -6))
  6. -3.0
  7. _$
复制代码

余弦不会出现-3.0吧。 [/B]


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

使用道具 举报

 楼主| 发表于 2003-2-26 14:35:54 | 显示全部楼层
点积要求的向量必须是单位向量

指令: (SETQ A (XDRX_VECTOR_NORMALIZE '(3 2)))
(0.83205 0.5547 3.2357e-287)

指令: (SETQ B (XDRX_VECTOR_NORMALIZE '(3 -6)))
(0.447214 -0.894427 3.2357e-287)

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-20 13:29 , Processed in 0.430493 second(s), 49 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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