- UID
- 493545
- 积分
- 0
- 精华
- 贡献
-
- 威望
-
- 活跃度
-
- D豆
-
- 在线时间
- 小时
- 注册时间
- 2006-9-21
- 最后登录
- 1970-1-1
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
哪位朋友知道弧线的startAngle、endAngle与法向矢量(normal)的关系?当normal取值(0,0,1)时,角度为当前平面上圆心到起点、端点的方位角;当normal取其他值时,又是如何的关系呢?
/////////////////////
void Test(AcDbEntity* pEnt)
{
AcDbArc* pArc = AcDbArc::cast(pEnt);
AcGePoint3d pt3_0,pt3_1,pt3 ;
pArc->getStartPoint(pt3_0);
pArc->getEndPoint(pt3_1);
pt3 = pArc->center();
double r = pArc->radius();
double angS = pArc->startAngle();
double angE = pArc->endAngle();
AcGeVector3d v = pArc->normal();
//
double angS0, angE0;
//atan2(y,x)返回值区间[-PI, PI]
angS0 = atan2((pt3_0[Y]-pt3[Y]), (pt3_0[X]-pt3[X]));
angE0 = atan2((pt3_1[Y]-pt3[Y]), (pt3_1[X]-pt3[X]));
//以上计算的两个角度是为了与直接获取的角度对比,具体如下
double dval = v.angleTo(AcGeVector3d(0,0,1));
if (fabs(dval)<1e-6)//即v与AcGeVector3d(0,0,1)一致
{
if (angS0>(-PI) && angS0<0)
{
angS0 += 2*PI;
}
if (angE0>(-PI) && angE0<0)
{
angE0 += 2*PI;
}
}
else
{
//此处如何写呢??
}
} |
|