FPU Befehl für ATAN, ACOS und ASIN existiert nicht
Hallo,
Weiß jemand wie der FPU Befehl für oben genannte Funktionen lautet?
Hallo,
Ich möchte in meinem Programm die Winkel aus einem Dreieck berechnen bei dem ich nur die Längen der Seiten habe und ein Winkel immer 90 Grad ist.
Bis zum Sinus eines Winkels komme ich noch, aber es fehlen mir oben genannten Funktionen.
Die FPU hat den Befehl FPTAN und FPATAN aber damit stimmt mein Ergebnis leider nicht.
Weiß jemand welchen (Um)Weg man hier gehen muss?
Gibts bei den MMX oder SSE Befehlen etwas für oder gegen mein Problem oder setzte ich die Befehle FPTAN und FPATAN nur falsch ein?
Um Info wird gebeten..
Danke und Gruß,,
Nicky
Weiß jemand wie der FPU Befehl für oben genannte Funktionen lautet?
Hallo,
Ich möchte in meinem Programm die Winkel aus einem Dreieck berechnen bei dem ich nur die Längen der Seiten habe und ein Winkel immer 90 Grad ist.
Bis zum Sinus eines Winkels komme ich noch, aber es fehlen mir oben genannten Funktionen.
Die FPU hat den Befehl FPTAN und FPATAN aber damit stimmt mein Ergebnis leider nicht.
Weiß jemand welchen (Um)Weg man hier gehen muss?
Gibts bei den MMX oder SSE Befehlen etwas für oder gegen mein Problem oder setzte ich die Befehle FPTAN und FPATAN nur falsch ein?
Um Info wird gebeten..
Danke und Gruß,,
Nicky
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 170979
Url: https://administrator.de/forum/fpu-befehl-fuer-atan-acos-und-asin-existiert-nicht-170979.html
Ausgedruckt am: 22.12.2024 um 19:12 Uhr
18 Kommentare
Neuester Kommentar
Guten Morgen Nicky
Das ist eine gute Frage, wie setzt Du sie denn ein? vielleicht postest Du mal etwas Code.
Ansonsten eine Erklärung wie man sie richtig einsetzt hier: http://www.arl.wustl.edu/~lockwood/class/cs306/books/artofasm/Chapter_1 ...
Gruß
Markus
Das ist eine gute Frage, wie setzt Du sie denn ein? vielleicht postest Du mal etwas Code.
Ansonsten eine Erklärung wie man sie richtig einsetzt hier: http://www.arl.wustl.edu/~lockwood/class/cs306/books/artofasm/Chapter_1 ...
Gruß
Markus
Hallo nochmal,
ich hab nun leider von Assembler keine Ahnung. Allerdings gibts ja die vergleichbaren trigonometrischen Funktionen in jeder Programmiersprache.
Mathematisch: der Sinus des Winkels, der der Seite mit 34mm gegenüber liegt ist gleich 34mm/84mm, also ist der gesuchte Winkel
Was ich nicht ganz verstehe, wenn Du schon die drei Seitenlängen des rechtwinkligen Dreiecks kennst, dann brauchst Du doch eigentlich keinen Tangens.
Oder hat einer von uns beiden die Aufgabenstellung falsch verstanden?
Gruß
Markus
ich hab nun leider von Assembler keine Ahnung. Allerdings gibts ja die vergleichbaren trigonometrischen Funktionen in jeder Programmiersprache.
Mathematisch: der Sinus des Winkels, der der Seite mit 34mm gegenüber liegt ist gleich 34mm/84mm, also ist der gesuchte Winkel
alpha = arcsin(34mm/84mm)
Oder hat einer von uns beiden die Aufgabenstellung falsch verstanden?
Gruß
Markus
FPATAN möchte zwei Parameter... nur welcher ist der zweite???
Ist doch alles dokumentiert:
The FPATAN instruction returns the angle between the X axis and the line from the origin to the point (X,Y), where Y (the ordinate) is ST(1) and X (the abscissa) is ST(0).
http://www.jaist.ac.jp/iscenter-new/mpc/altix/altixdata/opt/intel/vtune ...
Sorry, was gibt es da nicht zu verstehen?
Im rechtwinkligen kartesischen Koordinatensystem (also das, was in 99% der Fälle benutzt wird) die Linie auf der alle Punkte (x,0) liegen.
Der Punkt (0,0) im Koordinatensystem.
Die Komponente Y des Punktes (X,Y)
Die Komponente X des Punktes (X,Y)
Wenn du es als Funktionen beschreiben willst bekommst du den Winkel zwischen der Funktion
f(x)=0
und
f(t)=(Y/X)*t
X-Achse
Im rechtwinkligen kartesischen Koordinatensystem (also das, was in 99% der Fälle benutzt wird) die Linie auf der alle Punkte (x,0) liegen.
Ursprung
Der Punkt (0,0) im Koordinatensystem.
Ordinate
Die Komponente Y des Punktes (X,Y)
Abszisse
Die Komponente X des Punktes (X,Y)
Wenn du es als Funktionen beschreiben willst bekommst du den Winkel zwischen der Funktion
f(x)=0
und
f(t)=(Y/X)*t
Kannst du mir bitte anhand meines Dreiecks die Zahlen für den FPATAN Befehl eintragen
Da dein Dreieck rechtwinklig ist und du schon weißt, wo er sitzt können wir 3 Vektoren konstruieren:
v1 = ( 34 0 ) v2 = ( -34 76) v3 = ( 0 -76)
Daraus ergeben sich zum Ursprung die Punkte A(0,0) B(34,0) C(0,76)
Damit können wir mit FPATAN den Winkel zwischen v1 und v3 berechnen, den kennen wir aber schon, der ist 90°
Um einen relevanten Winkel zu bekommen verschieben wir das ganze System um v1 nach links (die Vektoren verändern sich dadurch nicht!):
A(-34,0) B(0,0) C(-34,76)
Jetzt können wir FPATAN auf C anwenden und bekommen einen Winkel im 2. Quadranten (also 90° <= w <= 180°)
Um daraus den Innenwinkel zu erhalten rechen wir 180° - w
und damit lässt sich der dritte Winkel als 180° = a + 90° + (180° - w) bestimmen.
Guten Abend,
also mir ist das zu kompliziert.
Der Tangens (tan) des gesuchten Winkels ist doch
damit gilt für den Winkel
und mit dem Taschenrechner (in DEG = Grad) ergeben sich 24°, also das gewünschte Ergebnis.
Nun rechnen wir hier im Bogenmaß, das bedeutet der Winkel wird gemessen als Bogenlänge auf einem Kreis mit dem Radius 1.
Der Umfang eines Kreises beträgt 360° entspricht 2*pi
da 360°/24° = 15 ist entspricht 24° im Bogenmaß genau 2*pi/15 = 2*3.14/15 = 0.419 (ungefähr laut Kopfrechnen) und das ist ja der Wert, den Du ermittelt hast.
Nochmal andersrum: multipliziere Dein Ergebnis mit 2*pi, allerdings hast Du soviele Rechnungen in Deinem Code, dass wohl von einer gewissen Ungenauigkeit auszugehen ist.
Gruß
Markus
also mir ist das zu kompliziert.
Der Tangens (tan) des gesuchten Winkels ist doch
tan(alpha) = 34/76
alpha = atan(34/76)
Nun rechnen wir hier im Bogenmaß, das bedeutet der Winkel wird gemessen als Bogenlänge auf einem Kreis mit dem Radius 1.
Der Umfang eines Kreises beträgt 360° entspricht 2*pi
da 360°/24° = 15 ist entspricht 24° im Bogenmaß genau 2*pi/15 = 2*3.14/15 = 0.419 (ungefähr laut Kopfrechnen) und das ist ja der Wert, den Du ermittelt hast.
Nochmal andersrum: multipliziere Dein Ergebnis mit 2*pi, allerdings hast Du soviele Rechnungen in Deinem Code, dass wohl von einer gewissen Ungenauigkeit auszugehen ist.
Gruß
Markus
Zitat von @supernicky:
34 / 76 = 0,447368 und der Tangens davon ist genau 0,42066. Diesen einen Schritt muss ich irgendwie ohne die Tangensfunktion
berechnen.
Nein, das ist Unsinn, 34/76 _ist_ der Tangens des gesuchten Winkels per Definition!34 / 76 = 0,447368 und der Tangens davon ist genau 0,42066. Diesen einen Schritt muss ich irgendwie ohne die Tangensfunktion
berechnen.
Markus
@dog: stimmt. Aber ich glaube so ganz ohne Geometriekenntnisse ist es sehr schwer überhaupt zu verstehen was man da macht. Und das wahr wohl auch das Problem.
Aber ich hätte jetzt doch gerne gewusst, wie der TO die Aufgabe gelöst hat, der Thread ist ja als gelöst markiert.
Gruß
Markus
Aber ich hätte jetzt doch gerne gewusst, wie der TO die Aufgabe gelöst hat, der Thread ist ja als gelöst markiert.
Gruß
Markus
Guten Morgen,
also das steht ja alles schon weiter oben im Thread...
Ich frage mich allerdings welchen Background Du eigentlich hast. Ich meine das ist simple Geometrie, also Schulmathematik und ich kann mir beim besten Willen nicht vorstellen, dass jemand erfolgreich mit Assembler programmieren lernen/können soll wenn es an der Schulmathematik fehlt.
Das gilt im übrigen für die Programmierung mit allen anderen Sprachen auch, zumindest dann, wenn's nicht nur um Textbearbeitung geht.
Solltest Du in diesen Bereich tiefer einsteigen wollen, dann empfehle ich Dir, mal zu prüfen wie's mit den Mathekenntnissen aussieht (was hab ich in der Schule gelernt, was hab ich vergessen) und dann da mal gezielt aufzufrischen.
Nix für ungut und noch einen schönen Sonntag
Markus
also das steht ja alles schon weiter oben im Thread...
Ich frage mich allerdings welchen Background Du eigentlich hast. Ich meine das ist simple Geometrie, also Schulmathematik und ich kann mir beim besten Willen nicht vorstellen, dass jemand erfolgreich mit Assembler programmieren lernen/können soll wenn es an der Schulmathematik fehlt.
Das gilt im übrigen für die Programmierung mit allen anderen Sprachen auch, zumindest dann, wenn's nicht nur um Textbearbeitung geht.
Solltest Du in diesen Bereich tiefer einsteigen wollen, dann empfehle ich Dir, mal zu prüfen wie's mit den Mathekenntnissen aussieht (was hab ich in der Schule gelernt, was hab ich vergessen) und dann da mal gezielt aufzufrischen.
Nix für ungut und noch einen schönen Sonntag
Markus
Hallo nochmal,
naja, also dass der Tangens gleich dem Quotienten aus Sinus und Cosinus ist
und dass es bei den gegebenen Daten letztlich egal ist, ob du mit dem Sinus, dem Cosinus oder dem Tangens rechnest, das steht oben eigentlich alles schon.
Such mal mit google unter dem Stichwort "Trigonometrie", da findest Du dann z.B. dieses hier: http://de.wikipedia.org/wiki/Trigonometrie
Gruß
Markus
naja, also dass der Tangens gleich dem Quotienten aus Sinus und Cosinus ist
tan(alpha) = sin(alpha) / cos(alpha)
Such mal mit google unter dem Stichwort "Trigonometrie", da findest Du dann z.B. dieses hier: http://de.wikipedia.org/wiki/Trigonometrie
Gruß
Markus