Avatar billede kamikaze Nybegynder
12. marts 2002 - 11:39 Der er 8 kommentarer og
1 løsning

Vinkel-funktion

Jeg har 2 punkter i et koordinatsystem, givet ved:

Source(xPos, yPos) og Dest(xPos, yPos)

Jeg skal bruge retningen fra Source til Dest (enten i radianer eller grader).

Er der nogen der har en funtion liggende (eller måske bare en formelsamling ved hånden)???
Avatar billede jpk Nybegynder
12. marts 2002 - 11:45 #1
Man kan ikke angive en retning i grader...
Avatar billede jpk Nybegynder
12. marts 2002 - 11:46 #2
Du kan dog fx angive retningen i forhold til en af koordinatsystemets akser?
Avatar billede kamikaze Nybegynder
12. marts 2002 - 11:57 #3
0 grader == op, 90 grader == højre, 180 grader == ned osv. osv.
Avatar billede kamikaze Nybegynder
12. marts 2002 - 11:59 #4
Jeg skal bare kende vinklen i forhold til koordinatsysmets y-akse
Avatar billede kamikaze Nybegynder
12. marts 2002 - 12:05 #5
Det er en sprite (Source(xPos, yPos)) der skal roteres, så den peger imod Dest(xPos, yPos)...
Avatar billede kamikaze Nybegynder
12. marts 2002 - 12:06 #6
(Iøvrigt: Tak for din CSprite-klasse. Jeg har brugt den flittigt som base-klasse :-))
Avatar billede james_t_dk Juniormester
12. marts 2002 - 13:47 #7
http://www.formel.dk/matematik/geometri/Trekant/retvinklettrekant.htm

De formler kan løse dit problem hvis du selv gider konstruere formlerne.
Avatar billede kamikaze Nybegynder
12. marts 2002 - 19:26 #8
OK, jeg fandt selv ud af det:

double Azimuth(double xSrc, double ySrc, double xDest, double yDest)
{
    double xDiff = xSrc - xDest;
    double yDiff = ySrc - yDest;
    double Azi = atan2(xDiff, yDiff);
    Azi = RadToDegree(Azi);
    if (Azi < 0) Azi += 360;
    return Azi;
}

double RadToDegree(int Rad)
{
    return (Rad * 360) / TWOPI;
}

Det skal lige siges at ovenstående er counter-clockwise, dvs. 90 grader er lige til venstre...
Avatar billede jpk Nybegynder
13. marts 2002 - 16:04 #9
Hvis du ønsker at bruge vektorgeometri, kan du gøre således:

double dAngle = (acos(y/sqrt(x*x+y*y))*360)/(2*PI);

Hvor x og y er 2D-koordinaterne på det punkt du vil finde vinklen til i forhold til y-aksen og med (0,0) som udgangspunkt.
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