C++怎么求圆弧上的坐标

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++怎么求圆弧上的坐标相关的知识,希望对你有一定的参考价值。

C++里,
已知圆中心点(x0,y0),半径r,在圆的水平方向x坐标,求垂直方向y的坐标
有没有函数或公式方便求出来的?

圆弧上一点的坐标:
圆心在[0,0] 时, x = r * cos(A); y = r * sin(A);
A 是逆时针向 的 角度,从x 轴起算。

圆中心点(x0,y0), 时:
x = x0 + r * cos(A);
y = y0 + r * sin(A);
----------------------------------
已知 x0,y0,r,x 求 y:
令 c=cos(A),s = sin(A);
c = cos(A) = (x-x0) / r;
s = sin(A) = sqrt( 1.0 - c * c) ;
有2解,一正值,另一负值
y1 = y0 + r * s;
y2 = y0 - r * s;
-----------------------------------
x,y,r 构成一个直角三角形。
所以,圆心在[0,0] 时, x^2 + y^2 = r ^2.
圆心在[x0,y0] 时, (x-x0)^2 + (y-y0)^2 = r^2
已知 x0,y0,r,x 求 y, 有2解
y1 = y0 + sqrt(r^2 - (x-x0)^2);
y2 = y0 - sqrt(r^2 - (x-x0)^2);
参考技术A 应该先判断r与X0 和Y0大小吧然后分情况讨论下 参考技术B (x-x0)*(x-x0)+(y-y0)*(y-y0)=r*r,
所以y==y0+sqrt(r*r-(x-x0)*(x-x0))或y==y0-sqrt(r*r-(x-x0)*(x-x0))

MFC 动态绘制直线,圆弧段(连续)如何实现

编程环境是VS2010,要求在MFC中实现动态绘制直线,输入参数是直线段起点,终点,圆弧起点终点以及半径,求如何实现

参考技术A 直线 使用的函数是
BOOL LineTo(

HDChdc,

intX,

intY,

);

参数:

hdc:设备场景句柄

X:线段终点X坐标位置,采用逻辑坐标表示。这个点不会实际画出来;它不属于线段的一部份

Y:线段终点Y坐标位置,采用逻辑坐标表示。这个点不会实际画出来;它不属于线段的一部份

返回值:

返回TRUE代表移动成功,FALSE代表失败

圆弧 使用的是
BOOL Arc(int x1,int y1,int x2,int y2,int x3,int y3,int x4,int y4);
(x1,y1)指定外接矩形左上角坐标,
(x2,y2)指定外接矩形右下角坐标。
(x3,y3)是起始点
(x4,y4)是结束本回答被提问者和网友采纳
参考技术B GDIPlus
绘制直线和圆弧都有对应的函数,你只需要把参数传递进来就可以,当然参数变化时就传就更新
绘图当然放在OnPaint WM_PAINT消息响应函数里

以上是关于C++怎么求圆弧上的坐标的主要内容,如果未能解决你的问题,请参考以下文章

MFC 动态绘制直线,圆弧段(连续)如何实现

CAD参数绘制圆弧(网页版)

CAD参数绘制圆弧(com接口)

给定中心坐标(纬度/经度)、半径(米)和中心角(度)的球体(地球)上的圆弧面积 [关闭]

nx获取刀轨参数

在Python中如何用matplotlib实现已知圆弧上两点和半径 来画弧