Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 10.01.2013, 22:00
Профессор
Отправить личное сообщение для l-liava-l Посмотреть профиль Найти все сообщения от l-liava-l
 
Регистрация: 14.03.2012
Сообщений: 1,808

Движение ползунка против и по часовой стрелке
Доброго времени суток!

Не могу врубиться в математическое решение задачи.

Есть окружность с произвольным радиусом, и ползунок, который мы двигаем по ней. Он может находиться в произвольной точке окружности.
Есть две координаты ползунка: x и y
Как понять двигается он по часовой или против часовой стрелки?
__________________
Научу себя плохому
Ответить с цитированием
  #2 (permalink)  
Старый 10.01.2013, 22:25
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

4 квадранта(если центр в точке 0 0
В каждом своя логика
карочь в верхней половине окружности X должен расти
в нижней - уменьшацо
Ответить с цитированием
  #3 (permalink)  
Старый 10.01.2013, 23:01
Аватар для Dim@
Профессор
Отправить личное сообщение для Dim@ Посмотреть профиль Найти все сообщения от Dim@
 
Регистрация: 21.04.2012
Сообщений: 951

l-liava-l,
разбей площадь на четверти и для каждой определяй свою логику (1-я четверть - это верхний правый угол, 2-я - это верхний левый угол, 3-я нижний левый угол, 4-я правый нижний угол) плюс логика прохождения через границы четвертей
Ответить с цитированием
  #4 (permalink)  
Старый 10.01.2013, 23:28
Профессор
Отправить личное сообщение для l-liava-l Посмотреть профиль Найти все сообщения от l-liava-l
 
Регистрация: 14.03.2012
Сообщений: 1,808

Цитата:
l-liava-l,
разбей площадь на четверти и для каждой определяй свою логику (1-я четверть - это верхний правый угол, 2-я - это верхний левый угол, 3-я нижний левый угол, 4-я правый нижний угол) плюс логика прохождения через границы четвертей
так я пробовал часа 4 назад) хрень редкостная получается, и кода много и не работает

Я сейчас вот так делаю: Math.atan(y1/x1)(начальная позиция ползунка) - Math.atan(y2/x2) (позиция через небольшой промежуток времени)
Когда по часовой крутим арктангенс всегда минус, против часовой плюс
__________________
Научу себя плохому
Ответить с цитированием
  #5 (permalink)  
Старый 10.01.2013, 23:41
Профессор
Отправить личное сообщение для l-liava-l Посмотреть профиль Найти все сообщения от l-liava-l
 
Регистрация: 14.03.2012
Сообщений: 1,808

АХАХАХ есть! работает))
блин, деффа не дают плюсовать, достали(
__________________
Научу себя плохому

Последний раз редактировалось l-liava-l, 10.01.2013 в 23:47.
Ответить с цитированием
  #6 (permalink)  
Старый 10.01.2013, 23:53
Аватар для 9xakep
сегодня в 12:34|Комментир
Отправить личное сообщение для 9xakep Посмотреть профиль Найти все сообщения от 9xakep
 
Регистрация: 12.04.2011
Сообщений: 1,180

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, 11.01.2013 в 00:01.
Ответить с цитированием
  #7 (permalink)  
Старый 11.01.2013, 00:30
Профессор
Отправить личное сообщение для l-liava-l Посмотреть профиль Найти все сообщения от l-liava-l
 
Регистрация: 14.03.2012
Сообщений: 1,808

9xakep,
Цитата:
l-liava-l,
у тебя есть точка х, у на окружности, которая изменяется?

Короче находишь угол, и сравниваешь значения) Надеюсь понятно обхяснил)

хз поможет или нет, но вот я на канвасе пишу, посомтри функцию rot(x,y) Она поворачивает дуло на указанные координаты
(там смотри только как angleвычисляется)
я уже сделал!) четверть совершенно не важна в моем задании, нужно лишь понять в какую сторону двигается тело, разница между арктангенсами углов отлично это говорит.
__________________
Научу себя плохому
Ответить с цитированием
  #8 (permalink)  
Старый 11.01.2013, 14:40
Профессор
Отправить личное сообщение для l-liava-l Посмотреть профиль Найти все сообщения от l-liava-l
 
Регистрация: 14.03.2012
Сообщений: 1,808

Цитата:
Четверти, арктангенсы, ой нубы... Все намного проще)
Вот, учите формулу)))
function isClockwise ( x1, y1, x2, y2 ) {
return y2 * x1 > x2 * y1;
}

Да для этого даже функцию стыдно писать.))
Смотрим)
унизил всех)))
__________________
Научу себя плохому
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск