• Willkommen im Geoclub - dem größten deutschsprachigen Geocaching-Forum. Registriere dich kostenlos, um alle Inhalte zu sehen und neue Beiträge zu erstellen.

Bug in Wolflanguage? sin - cos

snaky

Geowizard
Hallo,

gestern habe ich mich an "Geometrie des Waldes" versucht, konnte aber den Finalpunkt nicht richtig bestimmen.

Kann es sein, dass CW sin und cos falsch berechnet?

Für sin(90) gibt mir CW:
0.8939966636005579
und für cos(90):
-0.4480736161291702

aus...

Das sollte eigentlich 1 bzw. 0 sein (mit diversen Taschenrechnern vorsichtshalber mehrfach gecheckt ;) ).

Gebe ich da was falsch ein, muss ich CW noch irgendwie auf "DEG" umstellen oder wo liegt da das Problem?
 

salzkammergut

Geomaster
Der Solver rechnet in Radianten (das kann man aber sicher überdenken). Um den sinus von 90 Grad zu berechnen muß Du also eingeben:

sin(3.1415926/2) # = PI / 2

Gruß
skg
 
OP
snaky

snaky

Geowizard
Okay, das erklärt einiges. Vielen Dank für die Klärung. :)

Wäre eine "normale" Sin/Cos-Berechnung für den CW nicht (auch?) sinnvoll?

Es gibt so einige Geometriecaches, bei denen man die Koors in UTM umwandeln kann und dann mit sin/cos (Sinussatz) Dreiecksberechnungen macht. Wäre schon, wenn man die entsprechenden Formeln einfach mit dem CW berechnen könnte (ohne Vor Ort mit eingefrorenem Hirn zu überlegen, wie man von RAD nach DEG umwandelt oder den Sin mit einem Taschenrechner rechnet ;) ).
 

pfeffer

Geowizard
ich wäre auch dafür, dass alle trigonometrischen Funktionen mit normalen Grad-Angaben arbeiten sollten.

Gruß,
Pfeffer.
 

MiK

Geoguru
Auf jeden Fall sollte es einheitlich sein. Die Peilungsfunktion arbeitet z.B. in Grad. Ich wäre allerdings eher für ein generelles Rechnen in Radiant, weil das bei komplizierteren Formeln wesentlich angenehmer ist. Wann braucht man schon mal sin/cos von einem festen Grad-Wert?

Aber egal für was wir uns entscheiden: Wir sollten Funktionen für das einfache Umrechnen in beide Richtungen einführen. Und am besten auch eine Konstante für PI.
 

salzkammergut

Geomaster
Ich habe jetzt im SolverPanel einen "DEG"/"RAD" Button hinzugefügt, der den jeweiligen Winkel-Modus anzeigt. Durck einen Klick wird der Modus umgeschaltet. Der jeweilige Status wird auch in der pref.xml gespeichert und bleibt daher dauerhaft erhalten.

Der Winkel-Modus wirkt auf folgende Funktionen:
sin / cos / tan / asin / acos / atan
project
bearing
Also Achtung: "project" und "bearing" waren bisher in Grad und sind jetzt abhängig vom Modus in Grad oder Radiant.

Weiters gibt es eine Konstante "PI" (oder auch "pi").

Gruß
skg
 
OP
snaky

snaky

Geowizard
Mist, auswendig kann ich auch nur 50. ;)

@skg:
Vielen Dank für das schnelle Einbauen. :)
 

MiK

Geoguru
Es wäre gut, wenn man diese Einstellung auch in der WolfLanguage angeben könnte, ähnlich wie ignorecase. Damit könnte man sicherstellen, dass es auf jeden Fall funktioniert, wenn man kompliziertere Berechnungen an andere weitergibt.
 

salzkammergut

Geomaster
@Mik: Gute Idee. Hast Du einen Vorschlag für einen intuitiven, leicht zu merkenden Befehl?

mode("deg")
mode("rad")

oder

deg()
rad()

oder noch was anderes?

Gruß
salzkammergut
 

pfeffer

Geowizard
ich wäre für

amodedeg()
amoderad()

wobei das a für angle stehen würde. Aber vielleicht irritiert das a auch bloß.

Gruß,
Pfeffer.
 

MiK

Geoguru
"mode" alleine halte ich für etwas zu allgemein. Außer man will später auch noch andere Modi damit schalten. Also müsste man anglemode nehmen. Wobei ich strings als Parameter immer als Fehlerquelle ansehe.

"degmode(0/1)" als einzelner Befehl mit Parameter wäre dann zwar dem ignorcase nachempfunden. Man müsste dann aber immer überlegen, ob es nun "degmode" oder "radmode" heißt.

Am intuitivsten wäre dann wohl "deg()" und "rad()" oder "degmode()" und "radmode()".

Und auch wenn es jetzt durch die PI-Konstante einfacher geworden ist, fände ich es immer noch praktisch, wenn wir Funktionen "deg2rad" und "rad2deg" hätten.
 

salzkammergut

Geomaster
Die Umschaltung des Winkelmodus geht jetzt über deg() bzw. rad().

Die Umwandlung zwischen Grad und Radiant über deg2rad() und zurück über rad2deg(). Für Schreibfaule geht auch d2r() bzw. r2d().

Gruß
skg
 
Oben