sin..cosинусы

  Вход на форум   логин       пароль   Забыли пароль? Регистрация
On-line:  

Раздел: 
Game Maker Форум / Вопросы и Ответы (Для Начинающих) / sin..cosинусы

Страницы: 1  новая тема

Автор Сообщение

частый гость
Группа: Участники
Сообщений: 24
Добавлено: 22-02-2007 13:26
Объясните как рассчитать sin,cos... чтобы объект крутился в нужном месте, а не летал где не надо?

мастер
Группа: Участники
Сообщений: 70
Добавлено: 22-02-2007 14:12
x - это косинус, y - это минуссинус. Минус - потому что Y-координаты отсчитываются наооборот (сверху-вниз). Функции берут значения угла в радианах, в то время как point_direction выдает значение в градусах.

Пример вращения:
a+=0.1;
x=200+100*cos(a);
y=200-100*sin(a);

Пример движения:
a=point_direction(x,y,mouse_x,mouse_y)/57.3;
x+=cos(a);
y-=sin(a);

Тут могла быть ваша реклама
Группа: Сообщество GM
Сообщений: 1014
Добавлено: 23-02-2007 00:24
Кстати вот изучад недавно:
Замена некоторых функций на более быстрые

sin(degtorad(dir))=-lengthdir_y(1,dir)
cos(degtorad(dir))=lengthdir_x(1,dir)
примечание: dir- угол в градусах(не в радианах)
иногда результаты при одинаковых аргументах могут не совпадать, например если dir=180, то lengthdir_y возвращает 0, а sin возвращает
-0,0000000874. На первый взгляд отличия малы, но иногда будет очень важны (например, если вам нужен знак выражения).

При малом повторении конечно прирост будет не особенно заметен, но если подобных функций используется одновременно сотни, то скорость растёт в среднем в 1,1-1,5 раза

Дундук - не беспокоить!
Группа: Модераторы
Сообщений: 1435
Добавлено: 23-02-2007 09:34
Недавно?? Я об этом говорил уже год наверное!

Тут могла быть ваша реклама
Группа: Сообщество GM
Сообщений: 1014
Добавлено: 23-02-2007 17:05
Ну вот я и изучал, я же не говорю что я придумал)

Дундук - не беспокоить!
Группа: Модераторы
Сообщений: 1435
Добавлено: 23-02-2007 17:50
Нет, ну зачем изучать, если это и так известно? :)

Тут могла быть ваша реклама
Группа: Сообщество GM
Сообщений: 1014
Добавлено: 24-02-2007 16:56
иногда результаты при одинаковых аргументах могут не совпадать, например если dir=180, то lengthdir_y возвращает 0, а sin возвращает
-0,0000000874.

Это никто не писал, да и тем более конкретного равенства ты тоже не приводил типа
sin(degtorad(dir))=-lengthdir_y(1,dir)
cos(degtorad(dir))=lengthdir_x(1,dir)

Ну или я его не видел

Дундук - не беспокоить!
Группа: Модераторы
Сообщений: 1435
Добавлено: 24-02-2007 17:46
например, если вам нужен знак выражения

Какие могут быть знаки, если sin180 = 0?


lenghtdir_x(len, dir):= cos(dir * pi / 180) * len;
lenghtdir_y(len, dir):= -sin(dir * pi / 180) * len;

Знаешь, почему -sin?

Тут могла быть ваша реклама
Группа: Сообщество GM
Сообщений: 1014
Добавлено: 25-02-2007 00:26
например, если вам нужен знак выражения

Какие могут быть знаки, если sin180 = 0?

sin(degtorad(180))=-0,0000000874, это на самом деле так. Я просто смотрел пример ДримРаннера с плавной пушкой, там если заменить синус на леннигндиры, то пример работать не будет, т.к. ему нужен только знак выражения для вычисления в какую сторону крутить пушку, а елси разница напр. пушки- нужное направление=0. То пушка не будет крутить не вправо не влево.

Мне надо было сделать нечто подобное, поэтому я и изучал всё это. Только сделал иначе. Могу показать для чего.
Знаешь, почему -sin?

потому что y-координата считается в ГМ сверху вниз, тогда как обычно наоборот, ну против часовой стрелки(в единичной окружности).Т.е. снизу вверх.

Страницы: 1  новая тема
Раздел: 
Game Maker Форум / Вопросы и Ответы (Для Начинающих) / sin..cosинусы

Отвечать на темы в данном разделе могут только зарегистрированные пользователи

Отвечать на темы могут только зарегистрированные пользователи

KXK.RU