Движение ползунка против и по часовой стрелке
Доброго времени суток!
Не могу врубиться в математическое решение задачи. Есть окружность с произвольным радиусом, и ползунок, который мы двигаем по ней. Он может находиться в произвольной точке окружности. Есть две координаты ползунка: x и y Как понять двигается он по часовой или против часовой стрелки? |
4 квадранта(если центр в точке 0 0
В каждом своя логика карочь в верхней половине окружности X должен расти в нижней - уменьшацо |
l-liava-l,
разбей площадь на четверти и для каждой определяй свою логику (1-я четверть - это верхний правый угол, 2-я - это верхний левый угол, 3-я нижний левый угол, 4-я правый нижний угол) плюс логика прохождения через границы четвертей |
Цитата:
Я сейчас вот так делаю: Math.atan(y1/x1)(начальная позиция ползунка) - Math.atan(y2/x2) (позиция через небольшой промежуток времени) Когда по часовой крутим арктангенс всегда минус, против часовой плюс |
АХАХАХ есть! работает))
блин, деффа не дают плюсовать, достали( |
l-liava-l,
у тебя есть точка х, у на окружности, которая изменяется? x1,y1,x2,y2; // С окржностью все не так просто // Нужно узнать в какой четверти ты находишься (просто нельзя написать atan(x1/y1) и при это, учитывая, что к этому надо прибавить нужно колчиство Math.PI * 90 / 180) Я четверти так преставляю: 1 2 3 4 0;0 у нас между 3 и 4 ой снизу Если тело находиться в 1, то угол равен: Math.atan(x1/y1) + Math.PI * 90 / 180 Если тело находиться в 4, то угол равен:- Math.atan(x1/y1) // Уго получится отрицательный (на твое усмтрение, можешь сделать 300 градусов, или -60) в 3ей: Math.atan(x1/y1) и во 2ой: - Math.PI * 90 / 180 + Math.atan(x1/y1) Короче находишь угол, и сравниваешь значения) Надеюсь понятно обхяснил) хз поможет или нет, но вот я на канвасе пишу, посомтри функцию rot(x,y) Она поворачивает дуло на указанные координаты (там смотри только как angleвычисляется) http://gmoryes.bplaced.net/shoot.html |
9xakep,
Цитата:
|
Цитата:
|
Часовой пояс GMT +3, время: 18:01. |