Как рассчитать угол секторов по двум точкам, радиусу, центру круга
Как рассчитать угол секторов по двум точкам, радиусу, центру круга. Я пытаюсь это: (p1,p2 - точки в круге, центр - центр круга)
startAngle = (int)(180 / Mathf.PI * Mathf.Atan2(p1.y - center.y, p1.x - center.x));
endAngle = (int)(180 / Mathf.PI * Mathf.Atan2(p2.y - center.y, p2.x - center.x));
2 ответа
Вы можете найти угол между векторами к первой точке и ко второй точке, используя перекрестное произведение и скалярное произведение. Этот подход дает подписанный (направленный) угол.
dy1 = p1.y - center.y;
dx1 = p1.x - center.x;
dy2 = p2.y - center.y;
dx2 = p2.x - center.x;
SectorAngle = Mathf.Atan2(dx1*dy2-dx2*dy1, dx1*dx2+dy1*dy2)
То, что у вас есть, выглядит хорошо для меня, если вы хотите измерить углы в градусах против часовой стрелки относительно оси x.
Здесь это в латексе, с индексом нулевых величин, являющихся центром круга.