Willkommen im #Neuland
Login wie bei quake.ingame.de zuvor, die Passwörter aus der alten Datenbank wurden aber gelöscht - einmal hier neu anfordern.
Wer seine E-Mail-Adresse nicht mehr hat oder kennt, bitte eine Nachricht mit Infos schicken o. im Discord melden.

PQ Discord Server: #planetquake                                                                                                                                         Spenden? Hier entlang!

Cotangens, Arcus Tangens, Inv Tan etc.

Schule, Ausbildung, Studium, Beruf, Erster und Zweiter Bildungsweg, etc.
Antworten
EviLsEyE
Administrator
Administrator
Beiträge: 23012
Registriert: Jan 2000
Wohnort: NRW
Kontaktdaten:

Cotangens, Arcus Tangens, Inv Tan etc.

Beitrag von EviLsEyE »

Also ich komm grad gar nicht klar.. :ugly:
Wollte einen Wert berechnen und drei verschiedene Taschenrechner liefern mir für die (soweit mir bisher bekannt war) gleiche Funktion drei verschiedene Werte :gaga:


google Rechner
arctan(1,308997) = 0,918430819

Windows Taschenrechner
Inv Tan (1,308997) = 52,622209676344536802130668192902

C-Programm
double winkel = atan(theta);
> 1.23658

Ist das nicht eigentlich alles das gleiche? Gut, ich weiß, dass es Gradmaß und Bogenmaß gibt, aber selbst dann müssten doch zwei der 3 obigen Werte gleich seinm aber sie sind's nicht annähernd :ugly:

Der Wert, den ich eigentlich haben möchte, ist der den der Windows Taschenrechner liefert..
Wenn ich den nämlich mit Pi multipliziere komme ich auf den Wert, den ich gerne hätte (ca 165°)..
Kann mir jemand sagen, wo der Hund begraben liegt, dass mir die anderen Rechner einen anderen Wert liefern?
Oder vielleicht kennt sogar jemand den entsprechenden Befehl in C?
Bild
snakyo
Klesk
Klesk
Beiträge: 713
Registriert: Mai 2005
Wohnort: M

Beitrag von snakyo »

google rechnet richtig
http://www.google.de/#&q=%28arctan+1.308997%29*360/2pi

woher kommt die c funktion?

edit:
ahja, ich empfehle für sowas wolframalpha
http://www.wolframalpha.com/input/?i=ar ... .308997%29
Bild
suppengabel
Patriot
Patriot
Beiträge: 1412
Registriert: Nov 2008

Beitrag von suppengabel »

EviLsEyE hat geschrieben: google Rechner
arctan(1,308997) = 0,918430819

Windows Taschenrechner
Inv Tan (1,308997) = 52,622209676344536802130668192902

C-Programm
double winkel = atan(theta);
> 1.23658
Mein Taschenrechner sagt:

google-Ergebnis: radiant
fenster-Ergebnis: Grad
die zwei lassen sich auch entsprechend umrechnen

c-Ergebnis: keine Ahnung

edit: Warum habe ich mir eigentlich die erste Antwort nicht durchgelesen? ._.
EviLsEyE
Administrator
Administrator
Beiträge: 23012
Registriert: Jan 2000
Wohnort: NRW
Kontaktdaten:

Beitrag von EviLsEyE »

Danke, auf Wolframalpha bin ich jetzt gar nicht gekommen :daumen:
snakyo hat geschrieben:woher kommt die c funktion?
Das ist atan() aus math.h
Jemand 'ne Idee was das sein könnte, was er mir da berechnet? Laut Definition berechnet die Funktion:

Code: Alles auswählen

double atan(double x)	arctan(x) im Bereich [-p/2, p/2].
Aber keine Ahnung was ich damit anfangen kann..

Oder hat vielleicht jemand 'ne Idee wie ich auf meine gewünschten 52,62 (bzw. 165°) komme? :D
Bild
suppengabel
Patriot
Patriot
Beiträge: 1412
Registriert: Nov 2008

Beitrag von suppengabel »

Ich habs bei mir mal ausprobiert:
Es kommt mit atan aus math.h "0.918431", also das passende Ergebnis für Ein- und Ausgabe in Radiant raus. :ugly:
Nomschta
Rampage
Rampage
Beiträge: 14303
Registriert: Jun 2001
Steam: TomHonks

Beitrag von Nomschta »

achte darauf dass der arctan uU mehrdeutig ist, -x/y gibt so was anderes als x/-y (was auch klar ist, wenn man sich die zahlen im kartesischen koordinatensystem aufzeichnet)

http://de.wikipedia.org/wiki/Arctan#Definition

bei matlab gibt es dafür die funktion atan2 die 2 werte als übergabe erwartet. in der math.h wird die wohl nich drin sein, evtl brauchst du das ja auch garnich.
BildBild Danke an Drasora für ihr Wichtelgeschenk!
MAR hat geschrieben:Führt der durch den Terrence-Hill? :ugly:
EviLsEyE
Administrator
Administrator
Beiträge: 23012
Registriert: Jan 2000
Wohnort: NRW
Kontaktdaten:

Beitrag von EviLsEyE »

Okay, ich sollte diesen Thread besser löschen und alle Spuren verwischen, dass es ihn gegeben hat :ugly:

Wie eigentlich immer saß der Fehler vor dem Rechner :catch:
Hab in meinem Programm nämlich 'ne Schleife gehabt, die mir in Abhängigkeit von ein paar Sonderfällen gewisse Werte überschreibt..

Und so gab mein Debug-Output zwar den Wert "1,308997" aus, mit dem ich dann in den externen Taschenrechnern gerechnet hab, um das Ergebnis zu verifizieren..
In meinem Programm wurde dieser Wert allerdings von einer "2,irgendwas" überschrieben, ohne dass ich's mitbekommen hab und davon ist der atan() nunmal 1.23658 :ugly:

Danke vielmals für Eure Hilfe :)
Bild
EviLsEyE
Administrator
Administrator
Beiträge: 23012
Registriert: Jan 2000
Wohnort: NRW
Kontaktdaten:

Beitrag von EviLsEyE »

Eine Sache hätte ich zu dem Thema vielleicht noch..
Denn für Winkel bis ca. 25° krieg ich mehr oder weniger korrekte Ergebnisse.. je höher die Werte allerdings steigen, ab 35° besonders auffällig, liefert mir der arcus tangens immer ungenauere Ergebnisse..
Weiß jemand woran das liegen könnte? Ich arbeite mit Fließkommazahlen mit 6 Nachkommastellen, daran wird's vermutlich nicht liegen?

Hier mal illustriert, vielleicht erkennt ja jemand mit bloßem Auge einen Fehler, der mir einfach nicht auffallen will..?
Übrigens rechne ich den atan-Wert (zwecks RAD->DEG) wie folgt aus:

Code: Alles auswählen

fAngle = tan(fMax)*(180/CV_PI);
fMax ist das was in den Bildern als Theta bezeichnet ist, CV_PI ist die Zahl Pi..
Den Theta-Wert krieg ich übrigens von der OpenCV-Funktion cvHoughLines2() zurück, falls das bei der Problemsuche relevant sein könnte..

Bild Bild
Bild Bild
Bild Bild
Bild Bild
Bild Bild
Bild Bild

Ich seh's einfach nicht und wüsste nicht, was ich noch ausprobieren könnte..
Danke schon mal für jeden hilfreichen Beitrag!
Bild
DrKolossos
Angel
Angel
Beiträge: 589
Registriert: Dez 2002
Wohnort: Graz

Beitrag von DrKolossos »

EviLsEyE hat geschrieben:Eine Sache hätte ich zu dem Thema vielleicht noch..
Denn für Winkel bis ca. 25° krieg ich mehr oder weniger korrekte Ergebnisse.. je höher die Werte allerdings steigen, ab 35° besonders auffällig, liefert mir der arcus tangens immer ungenauere Ergebnisse..
Weiß jemand woran das liegen könnte? Ich arbeite mit Fließkommazahlen mit 6 Nachkommastellen, daran wird's vermutlich nicht liegen?

Hier mal illustriert, vielleicht erkennt ja jemand mit bloßem Auge einen Fehler, der mir einfach nicht auffallen will..?
Übrigens rechne ich den atan-Wert (zwecks RAD->DEG) wie folgt aus:

Code: Alles auswählen

fAngle = tan(fMax)*(180/CV_PI);
fMax ist das was in den Bildern als Theta bezeichnet ist, CV_PI ist die Zahl Pi..
Wenn ich jetzt nicht völlig falsch liege, dann könnte es nochmal peinlich werden :D

Du sagst, du berechnest den arcustangens auf folgende Weise:

Code: Alles auswählen

fAngle = tan(fMax)*(180/CV_PI);
Müsste es dann hier nicht atan statt tan heißen? Das dann bis 35 Grad relativ ähnliche Werte raus kommen liegt wohl schlicht und einfach daran, dass die arctan und tan Funktion um den Ursprung ziemlich gleich aussehen.
EviLsEyE
Administrator
Administrator
Beiträge: 23012
Registriert: Jan 2000
Wohnort: NRW
Kontaktdaten:

Beitrag von EviLsEyE »

Stimmt, ich schreib hier überall arctan und nutze in Wirklichkeit tan :ugly:
Hab gestern nämlich aus voller Verzweiflung alle möglichen Werte errechnet und geschaut welche nun am besten in mein Schema passen - tan ist als einzige vernünftige Lösung übrig geblieben ;>
Beim Verfassen des Posts hab ich nicht drüber nachgedacht und immer wieder "atan" (was meine 1. Lösung war) gesagt :D
Also bitte überall wo ich "atan" oder "arcus tangens" geschrieben hab, einfach vorstellen, ich hätte "tan" bzw. "tangens" geschrieben ;)

Ich weiß aber nicht mal 100%ig, ob ich überhaupt eins von beiden benötige..
ArcTan war halt meine erste Idee, als ich damit angefangen hab und das hab ich dann so weiter verfolgt, bis ich dann drauf gekommen bin, dass mir Tan für die meisten Fälle richtige Ergebnisse liefert..

Das einzige was ich weiß ist der Wert von Theta für die jeweiligen Bilder.. da diese von mir zur Analyse erstellt wurden, weiß ich in welchem Winkel jeweils die Gerade gedreht ist und hab somit einen Soll-Wert - aber eigentlich soll mein Programm da allein drauf kommen.. ;)
Was mir also fehlt ist der Schritt wie ich von diesem Theta-Wert auf die Winkel in Grad komme, um das Bild dann in seinen Ursprung drehen zu können..

Aktuell liefert mir die Berechnung von tan(x)*180/Pi die besten Ergebnisse, was aber nicht heißen muss, dass das auch die richtige Lösung ist :ugly:
Bild
snakyo
Klesk
Klesk
Beiträge: 713
Registriert: Mai 2005
Wohnort: M

Beitrag von snakyo »

Ich bin gerade ein wenig verwirrt, aber die Theta-Werte in den Bildern sind doch einfach die Winkel im Bogenmaß. Die kannst du einfach mit "THETA * 180 / PI" ins Gradmaß umrechnen.
Bild
DrKolossos
Angel
Angel
Beiträge: 589
Registriert: Dez 2002
Wohnort: Graz

Beitrag von DrKolossos »

Irgendwie verstehe ich nicht, was du überhaupt machen willst :ugly:

Du hast also von irgendwo her Theta Wert und willst damit was machen?

€ Daran hab ich auch gedacht, aber das ist wohl nicht alles. Wie kommt er dann auf tan oder arctan? Selbst wenn nicht klar ist, dass Theta nur die Winkel in Bogenmaß sind sieht man sofort, dass die Theta Werte linear steigen, oder?
EviLsEyE
Administrator
Administrator
Beiträge: 23012
Registriert: Jan 2000
Wohnort: NRW
Kontaktdaten:

Beitrag von EviLsEyE »

snakyo hat geschrieben:Ich bin gerade ein wenig verwirrt, aber die Theta-Werte in den Bildern sind doch einfach die Winkel im Bogenmaß. Die kannst du einfach mit "THETA * 180 / PI" ins Gradmaß umrechnen.
Wow, so einfach war's :ugly:
Danke, danke, danke!

Auch wenn ich jetzt schwören könnte, auch das mal probiert zu haben, hab ich's offenbar doch nicht gemacht ;)

Was ich damit einfach nur bezwecken wollte:
.. ich hab 'ne Grafik
.. daraus lass ich mir mittels Hough Transformation die Kanten extrahieren
.. anhand gewisser Konstellationen weiß ich welches meine Referenzkante ist, die die Drehung des Bildes bestimmt
.. von dieser Kante brauch ich den Winkel (Theta), um das Bild dann in seinen Ursprung zurück zu drehen
.. mit dem Bild kann ich dann weiterarbeiten

Wie ich auf Tan bzw. ArcTan kam, kann ich nicht mal genau sagen.. vermute mal das war ein Erinnerungsfetzen an meine letzte Arbeit mit der HoughTransformation vor ein paar Jahren :ugly:
Danke Euch vielmals, ich hab mich schon fast damit abgefunden, nur die Winkel bis 25° zu betrachten :D
Bild
Antworten