假设圆上有一个三角形ABC,其中A是圆的中心,B和C是同一圆的边界的两个点,我们知道关于这个三角形的以下内容:
现在的问题是:
如何找到C点(x3,y3)的二维坐标值
答案 0 :(得分:1)
你可以将B点相对于A点旋转52°(不要忘记使用弧度)。如果需要在另一个方向旋转,请更改角度符号。
x3=x1+(x2-x1)*Cos(52)-(y2-y1)*Sin(52)
y3=y1+(x2-x1)*Sin(52)+(y2-y1)*Cos(52)
答案 1 :(得分:0)
另一种看待它的方式可能是圆圈居中(357,357),你在圆圈的外侧有一个点,你想绕圆圈前进这么多度?似乎是(5)< => (6)(或者,我猜,约束条件不一致)。
自然会有两种解决方案,因为你的约束允许两个答案,如果两个答案都被绘制在一起,它们看起来就像圆圈的相邻切片。
最简单的解决方案可能是使用arctan从线段的水平线获得从A到B的角度,然后加上或减去52并使用sin / cos在外部获得一个新点。圈。
E.g。 (在C中,假设我已经正确地记住了我的象限)
float angleOfAB = atan2f(B.y - A.y, B.x - A.x);
float angleOfAC = angleOfAB + 52.0f * M_PI / 180.0f; // in radians
// could use squartf here if the radius is unknown
Position C;
C.x = A.x + 278.0f * cos(angleOfAC);
C.y = A.y + 278.0f * sin(angleOfAC);