![]() |
Прыгучее вращение стрелки компаса
Вложений: 1
Господа, помогите пожалуйста разобраться.
Есть компас, вокруг него расположены шесть шариков.Наводишься мышкой на шарик и стрелка компаса тут же прыгает в направлении этого шарика. Скрипт сидит в прототипе, он простой и работает, но почему-то даёт сбой. Вот скрипт: 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.То есть где-то вкрадывается некая ошибка а где - никак не пойму. Кто сможет обьяснить в чём проблема? |
smotritsia ofigitelno :D
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? :D |
Да какая там научная работа! :) Просто хотелось бы как-то элегантно решить поставленную задачку.Чтобы легко было изменить в случае чего.
Я заметил что проблема наверняка с дробями, и что где-то что-то куда-то не туда влазит.Причём если изменять значение переменной speed, то стрелка начинает вообще дурить по страшному. Можно например скрипт изменить на такой: rotacia = -180*Math.atan2(_x-x, _y-y)/Math.PI; _rotation<rotacia ? accellerator++ : accellerator--; accellerator *= 0.9; _rotation += accellerator; В таком случае всё работает, кроме самого нижнего шарика, который 180 градусов.На 180 стрелка начинает крутиться на месте... |
nu a s radianamy/gradusamy ne elegantno?
|
Пробовал.
Но, то ли я не очень понимаю с чем эти градусы с радианами едят, то ли ещё что, но суть в том что если задать стрелке _rotation сразу в градусах, то до 180 она ещё доходит а потом начинается полная ерунда, то есть стрелка начинает по каким то законам складывать-вычитать углы и её вращение становится совершенно непредсказуемым. Эх,надо было учить тригонометрию в своё время.. :( |
тригонометрия мать её....:)
Замени 180 на 179.9 :) Тригономерия хитрая вещь, но мы и её перехитрим;) |
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 :D kstati strelka doljna _obiazatelno_ po krat4aishemu puti idti, u kompasa tak... |
Вроде так:
Код:
MovieClip.prototype.dot = function () |
2DMN:
Спасибо, мил человек! :) Спас.Я нутром где-то чувствовал что надо проверять угол "на вшивость" но всё никак не мог понять как:) Спасибо.Всё работает. |
| Часовой пояс GMT +4, время: 21:32. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.