Координаты проекции точки на окружности
уже совсем запутался в тригонометрических формулах, так как везде пишут по-разному, суть такова, есть окружность и в ней точка, которая не должна заходить за пределы этой окружности, но координаты этой точки могут естественно быть больше. Сейчас это работает так:
const offset = { x: 25, y: 24 };
const radius = 20;
if (Math.pow(offset.x, 2) + Math.pow(offset.y, 2) < Math.pow(radius, 2)) {
coordinates = offset;
}
Но тут проблема в том, что если условие не проходит, то точка естественно замирает на месте, а должна двигаться и дальше, просто в пределах окружности, поэтому как я понял, мне нужно находить проекцию от координаты, чтобы отображать ее.
(Красным отмечена точка, которая должна отображаться, а за пределами - текущая точка)
Ответы (1 шт):
Автор решения: MBo
→ Ссылка
Cчитаем расстояние до точки, если оно больше радиуса - корректируем компоненты.
const offset = { x: 25, y: 24 };
const radius = 20;
len = Math.hypot(offset.x, offset.y) ;
if (len > radius) {
coordinates.x = offset.x * radius / len;
coordinates.y = offset.y * radius / len;
}
else {
coordinates = offset;
}
