PDA

Volledige versie bekijken : Verschil tussen rotatie


Erik
%Europe/Berlin %606 %2005, 15:32
Nou, het klinkt heel erg makkelijk, maar ik heb hier toch problemen mee.
Ik wil dus zegmaar de rotatie snelheid bereken door middel van ouderotatie-nieuwerotatie, maar dat levert dus het volgende probleem op; aangezien flash dus een rotatie van -180 -0 - 180 heeft, en de oude rotatie bijvoorbeeld -180 is, en je een klein beetje verder roteert waardoor het 180 wordt, is dus de snelheid -180 - 180, dus 360..

ik gebruik dit scriptje,
if(tr != test._rotation){
speed = tr-test._rotation
tr = test._rotation
}

Als iemand een oplossing weet, zou ik erg dankbaar zijn :P

Ik heb dus nu al iets gevonden, wat nog niet helemaal werkt, ik heb dus zegmaar op het punt van de rotatie een lijn van 10 pixels getrokken, naar de oude angle en de nieuwe angle toe, en vervolgens het verschil tussen die 2 punten berekent :

var tx1 = center._x+10*Math.cos(tr/(180/Math.PI));
var ty1 = center._x+10*Math.cos(tr/(180/Math.PI));
var tx2 = center._x+10*Math.cos(test._rotation/(180/Math.PI));
var ty2 = center._x+10*Math.cos(test._rotation/(180/Math.PI));
var xd = tx2-tx1;
var yd = ty2-ty1;
var speed = Math.sqrt(xd*xd+yd*yd);

Maar wat dan weer het probleem is, is dat je niet kan zien, of je nou naar links aan het draaien ben of naar rechts.

*En het gaat hier om een rotatie die de muis volgt!

kH_
%Europe/Berlin %635 %2005, 16:14
wat wil je nou precies? Ik snap er geen ruk van eerlijk gezegd :)

Tha Narie
%Europe/Berlin %645 %2005, 16:29
Ik wil dus zegmaar de rotatie snelheid bereken door middel van ouderotatie-nieuwerotatie
Dan is mijn vraag, HOE roteer jij de MC?
Dat gaat neem ik aan niet uit zichzelf?

Erik
%Europe/Berlin %661 %2005, 16:52
hahaha ik roteer de muis via een scriptje , dat gewoon zorgt dat hij richting de muis roteert, maar ik heb het al gevonden
Ik doe dus nu gewoon:
rotatie1 = 10
rotatie2 = 30
totalRot = Math.abs(rotatie1)+Math.abs(rotatie2);
if (totalRot>(360-totalRot)) {
diff = 360-totalRot;
} else {
diff = rotatie1-rotatie2
}
trace(diff);

en het geeft de korste weg terug zegmaar,

maar wat ik dus had, was een pijl, die naar de muis bleeft wijzen, als je hem draaide, en nou wou ik de snelheid berekenen waarmee je draaid, dus dat is aantal graden per frame * framespeed, maar het lukte eerst niet, maar denk dat ik er nu wel uit kan komen, toch zou ik wel graag willen weten of iemand iets beters weet :)

kH_
%Europe/Berlin %901 %2005, 22:37
Ok, ik snap het al een beetje. Je hebt dus een pijl die zeg maar begint vanaf het middelpunt van je beeld. De pijl wijst gewoon naar de huidige muiscursor en dan wil je het volgende.

Je zwiept een keer met je muis naar beneden, waardoor de pijl 'verdraait' en dan wil je kijken hoe snel die verdraaiing heeft plaatsgevonden (bijvoorbeeld 30 graden per seconde). Nou, dat is dus inderdaad gewoon simpel Pythagoras inderdaad. Gewoon atan() gebruiken om de twee hoeken te bereken en deze bij elkaar op te tellen. Ik heb ff wat in paint getekent, zodat je weet wat ik bedoel:

http://n.domaindlx.com/kaHu/uitleg.PNG

Dus gewoon die alpha en alpha' bij elkaar optellen en dan heb je het.

Voor wat betreft die FPS. Die FPS klopt nooit hoor! Daar moet je niet vanuit gaan. Je kunt beter een systeem onafhankelijke FPS counter maken. Als je daar niet uitkomt, geef een gil...flans ik ff wat in elkaar ;)

Oh ja, die atan() geeft dus resultaat in radialen terug. Moet je ff vermenigvuldigen met (180/Math.PI)

Erik
%Europe/Berlin %462 %2005, 12:06
Ohhh cool, ik denk dat ik het nu snap! Thx man!

kH_
%Europe/Berlin %483 %2005, 12:36
mooi dat je het snapt :)

Succes ermee!