Hallo liebe Community,
ich bin in meinem Script auf ein Problem gestoßen, das ich ohne eure Hilfe nicht lösen kann.
(I can try to describe my problem in english too if necessary)
Es geht um folgendes: Ich habe eine Funktion geschrieben die mir die die Distanz zurückliefert die ich vorhalten muss damit mein Projektil ein sich bewegendes Ziel trifft (ohne Gravitation).
// Berrechne die Länge 2er Dreiecksseiten des Dreiecks A-B-C
/*
Dazu muss gegeben sein:
- Die Länge der Seite A-B (Distanz zum Ziel)
- Der Winkel zwischen A-B und B-C
- Das Seitenlängenverhältnis von B-C und A-C
-> Die Funktion liefert die Länge von A-C zurück
-> Multipliziert mit dem Seitenlängenverhältnis ergibt sich die Sitenlänge von B-C
*/
function calc_triangle_side(given_side,given_arc,aspect_ratio)
{
var a = 1-(aspect_ratio*aspect_ratio);
var b = 2*given_side*aspect_ratio*cos(given_arc);
var c = given_side*given_side;
var my_temp;
my_temp = (-b+sqrt((b*b)+(4*a*c)))/(2*a);
return(my_temp);
}
die Seitenlänge B-C entspricht dem Wert den ich vorhalten müsste
die Seitenlänge A-B ist der Abstand zum Ziel zum Schusszeitpunkt
die Seitenlänge A-C ist die Strecke die das Projektil zurücklegen muss
Diese Formel funktioniert sowohl auf dem Papier als auch mit kleineren Werten in der Engine.
ABER:
- wenn der Abstand zum Ziel über ca. 2000 liegt und der Winkel gleichzeitig sehr klein ist (<15) krieg ich extrem falsche Werte (anstatt zb. 1800 krieg ich Werte wie -2.000.000)
- wenn der Abstand noch größer ist 5000 - 10000 tritt das Problem auch bei größeren Winkeln auf.
Ich hoffe das war jetzt einigermaßen verständlich erklärt (bin da nicht so gut drinn)
Ich befürchte das meine Zahlen während der Berrechnung viel zu groß werden und das zwar mein Taschenrechner schafft, aber die Engine da Probleme hat
Ich entschuldige mich für den langen Post und sag schon mal danke.
MfG