Hello again!
krieg ich noch mehr Nachhilfe? Der Wein ist alle, und ich habe sooo viel vergessen...
Klar doch! Moment, hol mir nur schnell n Bier. (Ein Auto faehrt ja auch nicht ohne Benzin.) ...
...so, jetzt kann's losgehen.
Mit dem Math objekt ist soweit alles klar. aber das mit Radiant kapiere ich nicht, hab sogar meine alte Formelsammlung rausgekramt: "Siebers Mathematische Tafeln", was habe ich die gehasst<g>
Naja, das Gradmass kennst Du ja. (Oder?!) Der Kreis wird in 360 Grad eingeteilt. Mit 0 wird rechts mitte angefangen und dann oben-links-rum bis 359.9999; 360 ist dann wieder derselbe Punkt wie 0. Immer dran denken, dass der Kreis einfach in 360 Teile geteilt wird.
Bei Radiant isses genauso, nur die Einteilung ist ein bisschen anders. Begonnen wird wieder mit 0, mitte oben ist ca. 1.5708 = pi/2 (90 Grad), links mitte ist ca. 3.1416 = pi (180 Grad), und dann kommst Du irgendwann bei 2*pi = ca. 6.2832 heraus. Mit diesen Zahlen rechnen dann also die ganzen Funktionen. (Der Kreis wird in 6.2832 Teile geschnitten ;-)
grad * 2*pi
Umrechnung grad --> rad: rad = -----------
360
Jedes dieser 360 Teile ist daher 0.00175 rad gross.
i=0 --> x=0
i=15 --> x=2*Math.PI
meinst Du so umrechnen: x=(2*Math.PI/15)*i?
Nee, durch 16. Sorry, war mein Fehler, denn i=15 darf noch nicht 2*pi ergeben, sondern erst i=16, was mit i=0 wieder gleich kommt.
Jetzt das schoene: Statt in 360 Teile zerstueckeln wir den Kreis (eigentlich ist es eine Torte, aber weil man sie immer nur von oben sieht und man das von dort nicht erkennt, wissen das die wenigsten Leute *g*) in 16 Teile. Wer schreibt uns denn vor, dass wir 360 verwenden muessen? Das ist doch auch nur eine Zahl wie jede andere. Uebrigens wurden irgendwann die Neugrad erfunden, die bis 400 zaehlten. Das machte man, weil die Soldaten in der Artillerie das mit der 360 irgendwie nicht so richtig gerafft haben... (In der obigen Formel brauchst Du dann auch nur die 360 durch die 16 ersetzen, und das kommt dann genau auf Deine Gleichung raus (bis auf die 15 natuerlich).)
Aber wenn ich es dann so schreibe (y ist nur das umgerechnete i), ergeben sich zwar auf und absteigende Werte...
... aber so in etwa: 2 next 3 next 4 next 4 next 3 next 2 next 1 next -1 next -2 next -3 next -4 next -4 next -3 next -2 next 0 next 2 next 3 next 4 next 4 next 3 next...also noch nicht ganz das wahre
Du meinst, dass die erst steiler steigen, dann schwaecher, sogar zweimal die 4 aufeinander folgt usw.? Ja, das ist richtig so. Hast Du schonmal eine Sinuskurve gesehen? Die steigt auch erst steiler und dann schwaecher und dann faellt sie wieder, erst schwach, dann steiler... (Wenn Du die erste Ableitung des Sinus bildest, siehst Du das noch viel schoener... oops, das war jetzt der naechste Level, aber wir muessen ja erstmal hier den Exit finden *g*)
Somit kriegst Du die korrektere/bessere/schoenere (such Dir ein Wort aus) Kreisbewegung hin. Wirklich auffallen wird das aber vermutlich sowieso nicht, schon deshalb, weil die Sinusse ja auch noch gerundet werden. Kannst aber mal in einem Koordinatensystem die Punkte einzeichenen und dann mit einem Zirkel nen Kreis malen, da wirst'es sehen.
Wenn Du jetzt aber unbedingt die deutlichen Unterschiede zwischen den Zahlen sehen willst, schlage ich folgende "Abkuerzungen" Deiner if-Anhaeufung vor (eigentlich hab ich was "cooleres" gesucht, ist mir aber nichts eingefallen):
function calc_x(i) { /* funzt bis i==20, ist aber eigentlich nur fuer bis 15 vorgesehen */
if (i < 4) return i;
if (i < 12) return 8-i;
return i-16;
}
function calc_y(i) { /* funzt bis i==16 */
if (i < 8) return 4-i;
return i-12;
}
Wo haengt mein schwerer Geist (aber der Rioja war gut:-)
Solang er noch haengt und nicht irgendwo liegt isses doch gut ;-)
»» if(i==1){x=0;y=4;}
»» if(i==2){x=1;y=3;}
»» if(i==3){x=2;y=2;}
»» ...
Ach ja, und da ist da noch die switch-Anweisung (<../../tebg.htm#a3>), das macht die Sache (imho) uebersichtlicher:
switch(i) {
case 1: x=0; y=4; break;
case 2: x=1; y=3; break;
case 3: x=2; y=2; break;
...
}
So, jetzt muss ich mir wohl wieder ein neues Bier holen (ist wohl ein Loch drin) ...
Calocybe