- 1、本文档共7页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
AutoCad凸度反推弧的圆心和起始结束角
AutoCad 凸度反推弧的圆心和起始结束角
/********************************************************************
created: 2012/09/12
created: 12:9:2012 11:25
file base: main
file ext: cpp
author: scenic
purpose: 由起点和终点以及凸度求圆弧的圆心
*********************************************************************/
#include stdio.h
#include stdlib.h
#include math.h
#define PI 3.141593
#define RESOLUTION 0.000001
typedef struct point
{
double x;
double y;
double z;
}Point,*PPoint;
typedef struct arc
{
double sx;
double sy;
double sz;
double ex;
double ey;
double ez;
double r;
double cx;
double cy;
double cz;
double startangle;
double endangle;
}ARC,*PARC;
int getArcR(Point startpoint ,Point endpoint ,double bulge,PARC parc);
int getArcR(Point startpoint ,Point endpoint ,double bulge,PARC parc)
{
double x1(0.0),y1(0.0),x2(0.0),y2(0.0),arcangle(0.0);//圆弧起始点和终止点,
以及所包的角度
x1=startpoint.x;
y1=startpoint.y;
x2=endpoint.x;
y2=endpoint.y;
parc-sx=startpoint.x;
parc-sy=startpoint.y;
parc-sz=0.0;
parc-ex=endpoint.x;
parc-ey=endpoint.y;
parc-ez=0.0;
arcangle=4*atan(fabs(bulge)); //弧包含的弧度
printf(arcangle= %f \n,arcangle*180/PI);
if((-RESOLUTIONarcangle)(arcangleRESOLUTION))
{
printf(LINE (x1= %f,y1=%f) (x2=%f,y2=%f) \n,x1,y1,x2,y2);
return 1;
}
double chordlength; //弦长
chordlength=sqrt(pow((x1-x2),2)+pow((y1-y2),2));
double radius; //圆弧半径
radius=(0.5*chordlength)/(sin(0.5*arcangle));
printf(r= %f\n,radius);
if((-RESOLUTION(radius))((radius)RESOLUTION))
{
printf(startpoint cant be same as endpoint \n);
return 1;
}
//已知圆上两点和半径,求圆心坐标
double verticalinterval;//圆心到弦垂距
verticalinterval=sqrt( radius* radius-chordlength*chordlength/4);
double cx,cy;//圆心坐标
double midx,midy; /
文档评论(0)