- UID
- 114481
- 积分
- 40
- 精华
- 贡献
-
- 威望
-
- 活跃度
-
- D豆
-
- 在线时间
- 小时
- 注册时间
- 2004-3-17
- 最后登录
- 1970-1-1
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
在创建一个圆锥的时候,我想让它在一条直线上!这条直线是空间上的一天直线,即直线的起点和终点坐标是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();
希望那位高人抽点时间看看~~~本人万分感谢!!!我想是不是旋转矢量是否不对!~~~
请教~~~~ |
|