c++ - 如何根据圆上中点和其他点之间的角度计算圆上的点

标签 c++ algorithm geometry point angle

我有一个直径为 256px 的圆,中点在 xy[128,128] 上。我在圆上有第一个点,例如 X=0,Y=128。坐标原点在左上角。第一点和中间点之间的线,连同这条线上的角度(从中间开始)创建三角形,该三角形与第三点的圆相交。我该如何计算这一点?

输入变量是:

  1. 在圆上点xy
  2. 中间点
  3. 角度

预期输出是x1,y1

enter image description here

最佳答案

原点绕中心点旋转角度公式:

 x1 = middle.x + (x - middle.x) * cos(angle) - (y - middle.y) * sin(angle)
 y1 = middle.y + (x - middle.x) * sin(angle) + (y - middle.y) * cos(angle)

(这是仿射变换 - 中间到原点的平移、关于原点的旋转和向后平移的组合)

不要忘记以弧度而不是像这样的度数来进行 cos 和 sin 参数:

 cos(angle * M_PI / 180) 

关于c++ - 如何根据圆上中点和其他点之间的角度计算圆上的点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58501322/

相关文章:

c++ - WinCE 6.0 : Customizing Control Panel (cplmain)

C++11 标准文档成本

计算一组重叠段覆盖的总面积的算法?

html - 盒子内 CSS 中的三 Angular 形

c++ - 模板类的标准流输出

c++ - 在没有管理员权限的情况下安装 Qt

c - 如何求多项式中x^m的系数?

javascript - 如何将字符串拆分为给定数量的行?

传单 v1.03 : Make CircleMarker draggable?

HTML 和 CSS 流体循环