winkelberechnung, aber wie? (PROBLEM GELÖST)

Fragen zu "Adventure Game Studio"? Hier rein!
Antworten
Benutzeravatar
Skyhawk
Verpackungs-Wegwerfer
Verpackungs-Wegwerfer
Beiträge: 77
Registriert: 27.04.2004, 19:40
Kontaktdaten:

winkelberechnung, aber wie? (PROBLEM GELÖST)

Beitrag von Skyhawk »

Hi

ich möchte den Winkel berechnen, der z.b. zwischen Spieler und einem Objekt spannt.


Ich hab schon die seiten des Dreieckt bestimmt :

int a = cEgo.x - Object[1].X;
int b = cEgo.y - Object[1].Y;
int c = FloatToInt(Maths.Sqrt(IntToFloat(a*a)+IntToFloat(b*b)));


und normalerweise sollt man mit sinus usw den rest bestimmen können...
z.b: sin(beta) = b/c
und dann mit arcsin(b/c) den passenden Winkel?

aber irgendwie haut das bei mir nicht hin....
(und wenn mein Matheprof rausbekommt, das ich mit sowas schwierigkeiten bekomm..... :oops: )
Zuletzt geändert von Skyhawk am 19.07.2005, 15:52, insgesamt 1-mal geändert.
je älter ich werde, desto weniger verstehe ich....

http://www.tafkasomm.de
[ZENSIERT]
Adventure-Gott
Adventure-Gott
Beiträge: 4575
Registriert: 13.07.2004, 14:04
Wohnort: Da wo muss
Kontaktdaten:

Re: winkelberechnung, aber wie?

Beitrag von [ZENSIERT] »

Skyhawk hat geschrieben:(und wenn mein Matheprof rausbekommt, das ich mit sowas schwierigkeiten bekomm..... :oops: )
Wie, du weißt nicht mal so was einfaches? Setzen, sechs :mrgreen:

Vielleicht hilft dir folgende Quelle weiter: http://www.matheboard.de/archiv/thread,2117.htm
Ich kann damit nicht sehr viel anfangen. Ich hab grad mal die Kongruenzsätze für Dreiecke kennen gelernt ;)
Es heißt, Leute mit den originellsten Nicknames schreiben die besten Beiträge

Ausnahmen bestätigen die Regel
_________________
<Problem> Weil du denken kannst.

Zuletzt bearbeitet von [ZENSIERT] am 16.07.1759, 16:19, insgesamt 54743869-mal bearbeitet
Benutzeravatar
Skyhawk
Verpackungs-Wegwerfer
Verpackungs-Wegwerfer
Beiträge: 77
Registriert: 27.04.2004, 19:40
Kontaktdaten:

Beitrag von Skyhawk »

hmm, das board hält schon einige sachen parat, und nach
einiger leserei sollte:


float sine= Maths.Sin(IntToFloat(b/c)); (also gegenkath/hyp)
float winkel = Maths.ArcSin(sine);
int winkel2= FloatToInt(Maths.RadiansToDegrees(winkel));

eigentlich stimmen....

nur kommt als winkel immer 0 raus, ausser, wenn
die Spielfigur direkt unter dem Objekt steht.... (a=0)
wobei a gar nicht in die Winkelberechnung eingreift..... :?:
je älter ich werde, desto weniger verstehe ich....

http://www.tafkasomm.de
Benutzeravatar
KhrisMUC
Adventure-Gott
Adventure-Gott
Beiträge: 4674
Registriert: 14.03.2005, 00:55
Wohnort: München

Beitrag von KhrisMUC »

Problem: a, b und c sind Integer.

c ist die Hypotenuse und somit fast immer größer als b.

wenn a=0, dann ist b=c, in diesem Fall ist b/c=1 und der winkel 90 Grad.
In jedem anderen fall ist aber b<c, weswegen b/c=0 ist (weil es eben integer sind).

Verwende für a, b und c von Anfang an floats.
Use gopher repellent on funny little man
Benutzeravatar
Skyhawk
Verpackungs-Wegwerfer
Verpackungs-Wegwerfer
Beiträge: 77
Registriert: 27.04.2004, 19:40
Kontaktdaten:

Beitrag von Skyhawk »

khrismuc hat geschrieben:Verwende für a, b und c von Anfang an floats.

thx, das hat geholfen, also war mein Mathe ansich doch richtig *schweiss abwisch*

:roll:
je älter ich werde, desto weniger verstehe ich....

http://www.tafkasomm.de
Antworten