找回密码
 注册
Simdroid-非首页
查看: 1886|回复: 8

Truegrid中任意对称、旋转、变形

[复制链接]
发表于 2013-5-28 22:28:49 | 显示全部楼层 |阅读模式 来自 北京
本帖最后由 freebeita 于 2013-5-28 22:41 编辑

在Truegrid中有一个很有用的命令,可以做任意平移、关于任意平面的对称、关于任意轴旋转以及一些变形。
(1)关于任意平面对称:
      首先选取该对称平面上三个不共线的点,用circent命令可计算出平面法向量(p1,p2,p3)
      取平面上一点(x0,y0,z0),由点法式方程得:p1(x-x0)+p2(y-y0)+p3(z-z0)=0
      则关于此平面的对称点为:
        t1=(%p1*(x-%x0)+%p2*(y-%y0)+%p3*(z-%z0))/(%p1^2+%p2^2+%p3^2);
        x=x-2*%p1*t1;
        y=y-2*%p2*t1;
        z=z-2*%p3*t1;

(2)旋转:设旋转轴方向向量为(p1,p2,p3),通过点(xp,yp,zp)
       先将旋转轴平移至坐标原点(0,0,0):将点(xp,yp,zp)移至原点
       然后将旋转轴转至XZ平面:用subang命令选取(0,yp+p2,zp+p3)、(0,yp,zp)、(0,yp,zp+1)三个点,
             计算在点(xp,yp,zp)处的夹角theta1,由此可计算旋转轴与XZ平面的夹角s1。
             如果p2>0,则s1=theta1;如果p2<0,则s1=-theta1。
       再将旋转轴转至与Z轴重合:用subang命令选取(xp+p1,yp+p2,zp+p3)、(xp,yp,zp)、(xp+1,yp,zp)三个点,
             计算在点(xp,yp,zp)处的夹角theta2,即旋转轴与X轴正向的夹角,
             由此可计算出在XZ平面内旋转轴与Z轴正方向的夹角s2。
             如果p3>0,则s2=theta2-90;如果p3<0,则s2=270-theta2。
       此时绕Z轴旋转s3即可。
       最后再反向操作,将图形移回。
        para xp    yp    zp    p1    p2    p3
        subang 0 [%yp+%p2] [%zp+%p3] 0 %yp %zp 0 %yp [%zp+1]
        para s1   
        subang [%xp+%p1] [%yp+%p2] [%zp+%p3] %xp %yp %zp [%xp+1] %yp %zp
        para s2   
        para s3   
        lct 1 mx [-%xp] my [-%yp] mz [-%zp] rx %s1 ry %s2 rz %s3 ry [-%s2] rx [-%s1] mz [-%zp] my [-%yp] mx [-%xp];
        lrep 1;;
        merge
(4)变形:
    这个不多介绍,看实例
       block 1 15;1 15;1 10;-10 0;1 5;-5 0;
       insprt 1 3 2 1
       insprt 1 5 2 1
       dei ;2 3;1 2;
       mseq j 0 1
       t1=x/10*y*2*%pi;
       x=t1;
       t2=y*sin(abs(x/y)/%pi*180);
       t3=y*cos(abs(x/y)/%pi*180);
       z=z+y;
       x=-t2;
       y=t3;
      

      block 1 13;1 3;-1;1 10;1 2;0
      mb 1 1 1 2 2 1 x -10
      x=x/9*y*2*%pi;
      t1=y*sin(abs(x/y)/%pi*180);
      t2=y*cos(abs(x/y)/%pi*180);
      x=t1;
      y=t2;
      lct 2 rx 90;ry 90;
      lrep 0:2;;
      merge

      block 1 10;1 5;1 5;-10 0;1 5;-5 0;
      x=x/10*y*2*%pi;
      insprt 1 3 2 1
      insprt 1 5 2 1
      DEI  ; 2 3; 1 2;
      mb 1 1 1 1 3 3 z -5;
      mb 1 1 1 1 3 3 z -5
      mb 2 1 1 2 3 3 z 5;
      t1=y*sin(abs(x/y)/%pi*180);
      t2=y*cos(abs(x/y)/%pi*180);
      x=t1;
      y=t2;
      lct 5 mz 10;repe 4;;
      lrep 0:5;
      merge


     block 1 10;1 5;1 5;-10 0;1 5;-5 0;
     x=x/10*y*2*%pi;
     insprt 1 3 2 1
     insprt 1 5 2 1
     DEI  ; 2 3; 1 2;
     mb 1 1 1 1 3 3 z -2.5;
     mb 2 1 1 2 3 3 z 2.5;
     t1=y*sin(abs(x/y)/%pi*180);
     t2=y*cos(abs(x/y)/%pi*180);
     x=t1;y=t2;
     lct 5 mz 5;repe 4;;
     lrep 0:5;
     merge







本帖子中包含更多资源

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

×

评分

2

查看全部评分

发表于 2013-5-28 23:08:15 | 显示全部楼层 来自 江西
Simdroid开发平台
膜拜大神啊
回复 不支持

使用道具 举报

发表于 2013-7-17 15:06:36 | 显示全部楼层 来自 北京
有没有对称和旋转例子的命令啊,感谢。
回复 不支持

使用道具 举报

发表于 2014-7-19 18:32:19 | 显示全部楼层 来自 重庆铜梁县
谢谢分享 请问大神 怎么把UG等的三维模型导入TG 再划分网格 真心求教
回复 不支持

使用道具 举报

 楼主| 发表于 2014-7-24 11:20:23 | 显示全部楼层 来自 河南郑州
只能转成iges文件导入
回复 不支持

使用道具 举报

发表于 2015-9-10 12:02:03 | 显示全部楼层 来自 美国
感谢分享! 赞为后来人铺路!
回复 不支持

使用道具 举报

发表于 2021-5-20 05:52:29 | 显示全部楼层 来自 中国
膜拜啊,大神
回复 不支持

使用道具 举报

发表于 2021-7-28 19:53:57 | 显示全部楼层 来自 中国
还有例子吗?
回复 不支持

使用道具 举报

发表于 2022-11-3 13:49:16 | 显示全部楼层 来自 澳大利亚
想请问一下有螺旋桩的划分实例吗,truegrid中,节点总是对不齐
回复 不支持

使用道具 举报

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

本版积分规则

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-4-17 00:05 , Processed in 0.032982 second(s), 14 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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