Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Архив Flasher.ru > Flash > ActionScript

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему  
Старый 13.06.2002, 14:59
BMF вне форума Посмотреть профиль Отправить личное сообщение для BMF Найти все сообщения от BMF
  № 1  
BMF

Регистрация: Apr 2001
Сообщений: 137
По умолчанию Прыгучее вращение стрелки компаса

Господа, помогите пожалуйста разобраться.
Есть компас, вокруг него расположены шесть шариков.Наводишься мышкой на шарик и стрелка компаса тут же прыгает в направлении этого шарика.
Скрипт сидит в прототипе, он простой и работает, но почему-то даёт сбой.
Вот скрипт:

rotacia = -180*Math.atan2(_x-x, _y-y)/Math.PI;

// определяется направление на цель( тот самый шарик, координаты которого занесены в переменные x и y )

speed = 0.6;
_rotation += (rotacia - _rotation)/speed


//Код,который и делает то самое прыгучее движение к заданной цели


Всё просто и всё по идее должно работать.Но работает только частично.То есть шарики находящиеся на отметках 0,60,120,300 градусов работают, а 270 и 180 - нет! Особенно 180.То есть где-то вкрадывается некая ошибка а где - никак не пойму.

Кто сможет обьяснить в чём проблема?
Вложения
Тип файла: zip kompass.zip (87.1 Кб, 128 просмотров)
__________________
Война окончена.Всем спасибо!

Старый 13.06.2002, 15:39
AZart.de вне форума Посмотреть профиль Отправить личное сообщение для AZart.de Посетить домашнюю страницу AZart.de Найти все сообщения от AZart.de
  № 2  
AZart.de

Регистрация: Jan 2002
Адрес: Germany
Сообщений: 87
Отправить сообщение для AZart.de с помощью ICQ
smotritsia ofigitelno
a esli prosto po kolhoznomu kajdoi knopke action napisat' tipa
_root.funkciya(60)
gde 60 - eto srazu gradus?
vsiako proshe bylo by.


a voobshe eto grabli s 4etvertiamy
tam u tebia gde-to math.abs() nehvataet.

i ishe, esli peretianut' ves' kompas v drugoi ugol, to perestaiut drugie 2 knopki pahat'.

peredavai parametr gradusom, ili radianom srazu, i ne par' sebe mozgi.
ili eto nau4naia rabota kakaya?
__________________
Knizhki umnie 4itat' nado(C) fil'm-detyam

Старый 13.06.2002, 16:02
BMF вне форума Посмотреть профиль Отправить личное сообщение для BMF Найти все сообщения от BMF
  № 3  
BMF

Регистрация: Apr 2001
Сообщений: 137
Да какая там научная работа! Просто хотелось бы как-то элегантно решить поставленную задачку.Чтобы легко было изменить в случае чего.
Я заметил что проблема наверняка с дробями, и что где-то что-то куда-то не туда влазит.Причём если изменять значение переменной speed, то стрелка начинает вообще дурить по страшному.
Можно например скрипт изменить на такой:

rotacia = -180*Math.atan2(_x-x, _y-y)/Math.PI;
_rotation<rotacia ? accellerator++ : accellerator--;
accellerator *= 0.9;
_rotation += accellerator;


В таком случае всё работает, кроме самого нижнего шарика, который 180 градусов.На 180 стрелка начинает крутиться на месте...
__________________
Война окончена.Всем спасибо!

Старый 13.06.2002, 16:07
AZart.de вне форума Посмотреть профиль Отправить личное сообщение для AZart.de Посетить домашнюю страницу AZart.de Найти все сообщения от AZart.de
  № 4  
AZart.de

Регистрация: Jan 2002
Адрес: Germany
Сообщений: 87
Отправить сообщение для AZart.de с помощью ICQ
nu a s radianamy/gradusamy ne elegantno?
__________________
Knizhki umnie 4itat' nado(C) fil'm-detyam

Старый 13.06.2002, 16:20
BMF вне форума Посмотреть профиль Отправить личное сообщение для BMF Найти все сообщения от BMF
  № 5  
BMF

Регистрация: Apr 2001
Сообщений: 137
Пробовал.
Но, то ли я не очень понимаю с чем эти градусы с радианами едят, то ли ещё что, но суть в том что если задать стрелке _rotation сразу в градусах, то до 180 она ещё доходит а потом начинается полная ерунда, то есть стрелка начинает по каким то законам складывать-вычитать углы и её вращение становится совершенно непредсказуемым.
Эх,надо было учить тригонометрию в своё время..
__________________
Война окончена.Всем спасибо!

Старый 13.06.2002, 16:24
sanitar вне форума Посмотреть профиль Отправить личное сообщение для sanitar Посетить домашнюю страницу sanitar Найти все сообщения от sanitar
  № 6  
sanitar
 
Аватар для sanitar

Регистрация: Nov 2001
Адрес: :сердА
Сообщений: 759
Отправить сообщение для sanitar с помощью ICQ
тригонометрия мать её....
Замени 180 на 179.9
Тригономерия хитрая вещь, но мы и её перехитрим
__________________
я.

Старый 13.06.2002, 16:26
AZart.de вне форума Посмотреть профиль Отправить личное сообщение для AZart.de Посетить домашнюю страницу AZart.de Найти все сообщения от AZart.de
  № 7  
AZart.de

Регистрация: Jan 2002
Адрес: Germany
Сообщений: 87
Отправить сообщение для AZart.de с помощью ICQ
otpravlay ee na ukazannyi gradus, a potom po utihaushei baltai vozle zadannogo zna4aniya...
doljno vrode bez problem pahat'...

ia etu trigonometriyu s ee formulami privedeniya sam nenavidel
odnu formulu toka naizust' znal, vrode sinus dvoinogo ugla... ili cosinus... hren ego znaet :-)
poishi v seti u4ebnik po algebre dlia 4ainikov

kstati strelka doljna _obiazatelno_ po krat4aishemu puti idti, u kompasa tak...
__________________
Knizhki umnie 4itat' nado(C) fil'm-detyam

Старый 13.06.2002, 16:28
DMN вне форума Посмотреть профиль Отправить личное сообщение для DMN Посетить домашнюю страницу DMN Найти все сообщения от DMN
  № 8  
DMN
 
Аватар для DMN

Регистрация: Mar 2002
Сообщений: 204
Вроде так:

Код:
MovieClip.prototype.dot = function () 
{ 
rotacia = -180*Math.atan2(_x-x, _y-y)/Math.PI;
if ((rotacia-_rotation)>180) rotacia=_rotation-360+(rotacia-_rotation);
if ((rotacia-_rotation)<-180) rotacia=_rotation+360+(rotacia-_rotation);
speed = 0.6;
_rotation += (rotacia - _rotation)/speed
};

Старый 13.06.2002, 16:47
BMF вне форума Посмотреть профиль Отправить личное сообщение для BMF Найти все сообщения от BMF
  № 9  
BMF

Регистрация: Apr 2001
Сообщений: 137
2DMN:
Спасибо, мил человек!
Спас.Я нутром где-то чувствовал что надо проверять угол "на вшивость" но всё никак не мог понять как
Спасибо.Всё работает.
__________________
Война окончена.Всем спасибо!

Создать новую тему   Часовой пояс GMT +4, время: 12:25.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 12:25.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.