找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 306|回复: 0

[ARX程序]:3维实体的问题!

[复制链接]
发表于 2004-8-12 10:26:54 | 显示全部楼层 |阅读模式

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

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

×
在创建一个圆锥的时候,我想让它在一条直线上!这条直线是空间上的一天直线,即直线的起点和终点坐标是pt3.x,pt3.y,pt3.z和pt4.x,pt4.y,pt4.z,可是怎么也该不对!贴出核心程序!
        length=sqrt((pt3.x-pt4.x)*(pt3.x-pt4.x)+(pt3.y-pt4.y)*(pt3.y-pt4.y));//直线长度
                slopy1=atan2(length,(pt3.z-pt4.z));//直线与xy平面的夹角
                angle1=atan2((pt3.x-pt4.x),(pt3.y-pt4.y));//直线在xy平面的投影与x轴的夹角
                cosy1=cos(slopy1);cosy2=cos(angle1);
                siny1=sin(slopy1);siny2=sin(angle1);               
                AcGeMatrix3d fxform;
                    fxform(0,3)= pt4.x; fxform(1,3)=pt4.y; fxform(2,3)=pt4.z;                       
                     AcGeVector3d faxis(siny2,cosy2,angle1);//这个地方好像不对!可是怎么改也不对!
        AcGePoint3d  center(0,0,0);
        fxform.setToRotation(angle1,faxis,center);
        AcDb3dSolid *pFrustum1 = new AcDb3dSolid;
        pFrustum1->createFrustum(35,4,4,0);
        AcDbObjectId frustum1Id;
        pFrustum1->transformBy(fxform);
        faxis.set(0,0,slopy1);//这个地方!
        fxform.setToRotation(slopy1,faxis,center);
        pFrustum1->transformBy(fxform);

        AcGeMatrix3d fxform1;
                fxform1(0,3)=(pt3.x+pt4.x)/2; fxform1(1,3)=(pt3.y+pt4.y)/2;fxform1(2,3)=(pt3.z+pt4.z)/2;
                 pFrustum1->transformBy(fxform1);
        pFrustum1->setColorIndex(1);
        postToDatabase(pFrustum1 ,frustum1Id);       
        pFrustum1->close();       
希望那位高人抽点时间看看~~~本人万分感谢!!!我想是不是旋转矢量是否不对!~~~
请教~~~~
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-9-21 22:24 , Processed in 0.312887 second(s), 30 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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