- 积分
- 557
- 明经币
- 个
- 注册时间
- 2012-5-28
- 在线时间
- 小时
- 威望
-
- 金钱
- 个
- 贡献
-
- 激情
-
|
楼主 |
发表于 2012-6-6 14:58:24
|
显示全部楼层
本帖最后由 lzz0517 于 2012-6-6 14:59 编辑
你看看我步骤有没有错,我用了你说的计算椭圆长轴矢量的方法进行计算,但与CAD上进行比较后,对不上CAD上的值:
double ix=-399474.1637001187; //插入点X
double iy=3238438.33505016; //插入点Y
double scalex=-1.0; //缩放比例X
double scaley=1.0; //缩放比例Y
double angle=106.4911716322804*Math.PI/180; //插入点旋转弧度
double ox=3217926.635124058; //块坐标系的圆心X
double oy=532617.0907392278; //块坐标系的圆心Y
double lrx=45.66621877367426; // 长轴端点X
double lry=337.0426302735758; //长轴端点Y
double ratio=0.9999999999977266; //半径比例
double sa=2.35439212168697; // 起始弧度
double ea=3.641394339275362; // 终止弧度
//计算椭圆弧的长轴矢量坐标
double x=ox+lrx;
double y=oy+lry;
double nx=ix+x*Math.Cos(angle)*scalex-y*Math.Sin(angle)*scaley;
double ny=iy+y*Math.Cos(angle)*scaley+x*Math.Sin(angle)*scalex;
//计算得到的长轴端点坐标X=2973.66024679359,Y=1553.78513403563
Console.WriteLine("长轴端点坐标X={0},Y={1}",nx,ny);
double nox=ix+ox*Math.Cos(angle)*scalex-oy*Math.Sin(angle)*scaley;
double noy=iy+oy*Math.Cos(angle)*scaley+ox*Math.Sin(angle)*scalex;
// 计算得到的圆心坐标X=3283.87495806016,Y=1693.24828713574
double Vx=nx-nox;
double Vy=ny-noy;
//这是计算得到长轴矢量坐标X=-310.21471126657,Y=-139.463153100107
//CAD上显示的圆心和长轴矢量坐标
//圆心X=3283.875,Y=1693.2483
//长轴矢量坐标X=318.3132,Y=119.8326 |
|