Volledige versie bekijken : Positie berekenen met een hoek en afstand
Vortexnl
%Europe/Berlin %018 %2010, 00:26
Ik ben even vergeten hoe ik een hoek en een afstand om kan zetten naar een positie... dit is wat ik wil:
http://img205.imageshack.us/img205/5939/positieberekenen.th.jpg (http://img205.imageshack.us/i/positieberekenen.jpg/)
Ik heb een stok die roteert op een punt.
Ik wil graag de positie kunnen berekenen van het uiteinde van deze stok!
Kan iemand de code posten waarmee je dit doet? Heeft het iets te maken met atan?
TheDutch
%Europe/Berlin %437 %2010, 10:30
Dat bereken je met sinus en cosinus. Je vertaalt daarmee de hoek die je hebt gemaakt (door te roteren) naar de nieuwe X en Y positie van het uiteinde van de stok.
De code zou er ongeveer zo uitzien :).
// Ik neem in deze aan dat de breedte van je stok als straal genomen kan worden.
// Dus als een MovieClip met het registratiepunt op top/left en een lijn van links
// naar rechts.
var straal:Number = stok.width;
// Eerst de rotatie in graden omzetten naar radiaal.
var radiaal:Number = stok.rotation * (Math.PI / 180);
// Voor de x positie gebruik je cosinus.
var xPos:Number = straal * Math.cos(radiaal);
// Voor de y positie gebruik je cosinus.
var yPos:Number = straal * Math.sin(radiaal);
// Het resultaat; de nieuwe posities in je output dialoog!
trace(xPos);
trace(yPos);
Ik heb even snel een voorbeeld gemaakt, zie bijlage :).
EDIT: Voorbeeld aangepast omdat ik vergeten was de straal toewijzing buiten de functie te zetten.
ps. Arctangent (atan) is bedoeld om de hoek te bepalen van twee punten. Dus eigenlijk het tegenovergestelde van wat we hierboven doen met sinus en cosinus.
Vortexnl
%Europe/Berlin %626 %2010, 15:02
Heel erg bedankt :D
Ik zal er even naar kijken.. :P
jaspermuts
%Europe/Berlin %647 %2010, 15:32
Het klopt sowieso, ik heb een Util class (http://www.flashfocus.nl/forum/showthread.php?t=56060) voor dit soort berekeningen gemaakt, je hoeft m niet te gebruiken, maar je kunt dan alsnog in de code zien hoe je veel van dit soort dingen berekent.
Zie de functie getNextPositionByDirection(), die geeft je wat de volgende positie is als je <distance> verplaatst met de huidige rotatie. In plaats van de verplaatsing, kun je het ook gewoon als de straal zien.
vBulletin® v3.8.1, Copyright ©2000-2012, Jelsoft Enterprises Ltd.