Avatar billede sreddy Nybegynder
14. maj 2003 - 17:20 Der er 4 kommentarer og
2 løsninger

svært. Retning i grader i forhold til X og Y koordinaten

Nu ligger matematik ellers rimeligt for mig, men jeg kan ikke lave denne formel uden hjælp. I Director, som er et program lig Flash, er der et sprog, der hedder Lingo.

Her vil jeg få en kugle til at følge grads-retningen på en pil.  Så hvis denne pil viser 20 grader, så skal kuglen bevæge i 20 grader.    Men da jeg skal programmere bevægelsen ved hjælp af X og Y, skal jeg vide hvordan X og Y står i forhold til eks. de 20 grader, og ved alle gradstal.

Hvordan gøres dette, eller har en allerede en løsning.
Avatar billede roenving Novice
14. maj 2003 - 17:22 #1
Trigonometri indeholder svaret på dit spm.

Lingo har sin egen kategori, så du skal sikkert flytte spm. derover, men det har vel også sin- og cos-funktioner.
Avatar billede a_eriksen Nybegynder
14. maj 2003 - 17:23 #2
Y = n * sin (vinkel)
X = n * cos (vinkel)

n skal så være en "afstand"
Avatar billede fangel Nybegynder
14. maj 2003 - 17:24 #3
nu ved jeg ikke hvad du ved om tangent, men her er formlen

tan(A) = a/b <=> b = a/tan(A)

altså:

lad os sige vi har variablerne "x", "y" og "vinkel", så skal du lave det sådan her:

ny_x = x+1
ny_y = 1/tan(vinkel);

MEN, jeg ved ikke om man skal til at lege med en Radian til Grader funktion ;)

jeg er ikke sikker på at jeg har helt ret, men jeg tror det ;)

Morten
Avatar billede soreno Praktikant
14. maj 2003 - 17:25 #4
Med sin og cos.

F.eks. lavede jeg dette i søndags (i java) til at flytte en cirkle:
circle_x += circle_speed * Math.cos(Math.toRadians(circle_angle));
circle_y += circle_speed * Math.sin(Math.toRadians(circle_angle));

circle_x og circle_y er cirklens centrum.
circle_angle er 0-360 grader
circle_spped er en faktor der ganges på for at lave større bevægelser.
Avatar billede soreno Praktikant
14. maj 2003 - 17:30 #5
Hvis du vil have bedre performance kan du lave en tabel der indeholder sin og cos til de værdier du skal bruge.

F.eks.
(stadig java syntaks)
int cos_tabel[360]; // forudsætter at intervallet er 1 grad
for(int i=0;i<cos_tabel.length;i++)
{
  cos_tabel[i] = Math.cos(Math.toRadians(i));
}

Og så sige:
circle_x += circle_speed * cos_tabel[circle_angle]);
Avatar billede sreddy Nybegynder
14. maj 2003 - 18:33 #6
Fornemme svar. Jeg går videre
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester