用矩阵变换实体模拟ACAD的MIRROR命令(xdapi) « CAD家园

5 条评论 发表在“用矩阵变换实体模拟ACAD的MIRROR命令(xdapi)”上

  1. (xdrx_matrix_identity 3) ;产生一个标准的4维矩阵((1 0 0 0)(0 1 0 0)(0 0 1 0)(0 0 0 1))
    (xdrx_matrix_product m2 m1) –>m1.m2 ;我的理解是m2作用于m1,物体先经过m1的转化,再m2转化.
    所以一定要注意先后。
    m1.m2.m3.m4.m5–> (product (product (product (product m5 m4)m3)m2)m1)
    xdrx_matrix_setmirror --> ((1 0 0 0)(0 1 0 0)(0 0 -1 0)(0 0 0 1))
    作用于点(x y z),那么就z变为负值了.
    ;;;转换点
    ;;; pt (x y z 1)
    ;;; mat (x0 x1 x2 x3)(y0 y1 y2 y3)(z0 z1 z2 z3)(0 0 0 1)
    ;;;–> ( (x0*x + x1*y + x2*z + x3*1)
    ;;; (y0*x + y1*y + y2*z + y3*1)
    ;;; (z0*x + z1*Y + z2*z + z3*1)
    ;;; 1
    ;;; )

  2. 为什么连续执行3次返回不同的结果??
    (setq
    n1 ‘((1 0 0 0)(0 1 0 0)(0 0 1 0)(0 0 0 1))
    n2 ‘((2 0 0 1)(0 2 0 1)(0 0 0 1)(0 0 0 1))
    n3 ‘((1.4 1.4 0 0)(-1.4 1.4 0 0)(0 0 0 0)(0 0 0 1))
    )
    (xdrx_matrix_product n1 n2)
    连续执行3次,返回:
    ((0.0 0.0 0.0 0.0) (2.3643e+156 0.0 1.4 0.0) (1.4 0.0 1.4 1.4) (-1.4 1.4 0.0 1.4))
    _$
    ((0.0 0.0 0.0 0.0) (2.94378e+303 2.94336e+303 2.94294e+303 0.0) (0.0 0.0 0.0 0.0) (0.0 0.0 0.0 0.0))
    _$
    ((0.0 4.16179e+303 4.18278e+303 4.18257e+303) (4.16118e+303 4.18219e+303 4.16101e+303 0.0) (0.0 0.0 2.84719e+303 0.0) (0.0 2.84719e+303 0.0 0.0))
    _$
    ((0.0 0.0 0.0 15.0) (-3065.79 0.0 0.0 0.0) (0.0 0.0 0.0 15.0) (-3065.79 0.0 0.0 0.0))

  3. xdrx_matrix_product
    它不能判断整数和浮点数.
    (xdrx_matrix_product n1 n2) —>都是0 …
    (setq
    n1 ‘((1. 0. 0 0)(0 1. 0. 0.)(0. 0. 1. 0)(0. 0. 0. 1.))
    n2 ‘((2. 0. 0. 1.)(0 2. 0. 1.)(0 0 0 1.)(0. 0 0 1.))
    n3 ‘((1.4 1.4 0 0)(-1.4 1.4 0 0)(0 0 0 0)(0 0 0 1))
    )
    (xdrx_matrix_product n1 n2) –>((2.0 0.0 0.0 1.0) (0.0 2.0 0.0 1.0) (0.0 0.0 0.0 1.0) (0.0 0.0 0.0 1.0))

郑重声明:资讯 【用矩阵变换实体模拟ACAD的MIRROR命令(xdapi) « CAD家园】由 发布,版权归原作者及其所在单位,其原创性以及文中陈述文字和内容未经(企业库qiyeku.com)证实,请读者仅作参考,并请自行核实相关内容。若本文有侵犯到您的版权, 请你提供相关证明及申请并与我们联系(qiyeku # qq.com)或【在线投诉】,我们审核后将会尽快处理。
—— 相关资讯 ——