AutoCAD 凸度AutoCAD----凸度
2010-11-29 11:27
1)AutoCAD中约定:凸度为0是直线顶点,它与下一个顶点连接为一直线;凸度不为0
是圆弧顶点,它与下一个顶点连接为一圆弧;凸度值为负表示顺时针圆弧,凸度值为正表示逆时针圆弧;凸度绝对值小于1表示圆弧包角小于180°,凸度绝对值大于1表示圆弧包角大于180°。凸度与圆弧包角的关系是:圆弧包角= 4×arctan|凸度值|。
void lwpolylineToArc(CPoint3d BeginPoint,CPoint3d EndPoint,double ...
AutoCAD----凸度
2010-11-29 11:27
1)AutoCAD中约定:凸度为0是直线顶点,它与下一个顶点连接为一直线;凸度不为0
是圆弧顶点,它与下一个顶点连接为一圆弧;凸度值为负
示顺时针圆弧,凸度值为正表示逆时针圆弧;凸度绝对值小于1表示圆弧包角小于180°,凸度绝对值大于1表示圆弧包角大于180°。凸度与圆弧包角的关系是:圆弧包角= 4×arctan|凸度值|。
void lwpolylineToArc(CPoint3d BeginPoint,CPoint3d EndPoint,double u,CPoint3d &CenterPoint)
{
double centerAngle;//包角
centerAngle=4*atan(abs(u));
centerAngel=centerAngel/pi;
double x1,x2,y1,y2;//圆弧起始点和终止点
x1=BeginPoint.x;
x2=EndPoint.x;
y1=BeginPoint.y;
y2=EndPoint.y;
double L; //弦长
L=sqrt(pow((x1-x2),2)+pow((y1-y2),2));
double R;//圆弧半径
R=0.5*L/sin(0.5*centerAngle);
//已知圆上两点和半径,求圆心坐标
double h;//圆心到弦的距离
h=sqrt(R*R-L*L/4);
double k;//起始点和终止点连线的中垂线斜率
double xc,yc;//圆心坐标
double xa,ya; //起始点和终止点连线的中点横纵坐标
xa=0.5*(x1+x2);
ya=0.5*(y1+y2);
//弦的方向角(0-2PI之)
double angle;//起点到终点的弦向量与x正方向之间的倾斜角
angle=acos((x2-x1)/sqrt(pow(x2-x1,2)+pow(y2-y1,2)));
double amass; //弦向量与X轴正向单位向量的叉积
amass = y1-y2;//由(由(x2-x1)*0-1*(y2-y1))得到
if (amass<0)
angle=2*PI+angle;
}
double DirectionAngel;//弦中点到圆心的直线向量的方向角(0-2PI之间) if ((u>0 && centerAngle
PI))
DirectionAngel=angle+PI/2;
if((u<0 && centerAngle0 && centerAngle>PI))
DirectionAngel=angle-PI/2;
if (DirectionAngel>2*PI)
DirectionAngel= DirectionAngel-2*PI;
double d;//圆心到弦的距离
d=sqrt(R*R-L*L/4);
if (DirectionAngle=0)
{
xc=xa+d;
yc=ya;
}
else if(DirectionAngle=PI/2)
{
xc=xa;
yc=ya+d;
}
else if (DirectionAngle=PI)
{
xc=xa-d;
yc=xa;
}
else if (DirectionAngle=PI+PI/2)
{
xc=xa;
yc=xa-d;
}
else
{
double nslope,k;//nslope 为弦的斜率,K为弦中垂线的斜率
double nAngle;//中垂线的倾斜角;
double X,Y; //圆心相对于弦中心点的坐标偏移量
nslope = (y2 - y1) / (x2-x1);
k = -1 / nslope;
X = cos(nAngle) * d;
Y = sin(nAngle) * d;
if (DirectionAngle > PI / 2 && DirectionAngle < PI )
{X = -X;
Y = -Y;
}
if (DirectionAngle > PI && DirectionAngle < (PI + PI / 2) ) {
X = -X;
Y = -Y;
}
xc=xa + X;
yc=ya+ Y;
CenterPoint.x=xc;
CenterPoint.y=yc;
CenterPoint.z=0.0;
本文档为【AutoCAD 凸度】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。