Ich habe ein Objekt, das sich von sinusoid bewegt. Ich muss es jedes Mal animieren, wenn es die Spitze (oder den Boden) der "Welle" erreicht. Ich möchte dies mit der Ableitungsfunktion tun: Wie wir wissen, ändert es den Wert (von positiv zu negativ oder umgekehrt) an diesen Punkten. So ist der Code:Sinusoid und derivative Funktion
// Start value
int functionValue = +1;
// Function
float y = k1 * sinf(k2 * Deg2Rad(x)) + y_base;
// Derivative function
float tempValue = -cosf(y);
// Check whether value is changed
if (tempValue * functionValue < 0)
{
animation = true;
}
functionValue = tempValue;
wenn ich Ausgang der tempValue
es seltsam Zahlen zeigt:
0.851513
0.997643
0.0242145
0.690432
0.326303
-0.614262
0.892036
0.1348
0.709843
0.968676
0.0454846
0.920602
-0.423125
0.692132
-0.960107
0.0799654
-0.747722
-0.635241
0.148477
-0.98611
0.900912
-0.877801
0.811632
-0.362743
-0.233856
0.35512
-0.994107
0.885184
-0.468005
0.982489
0.675337
0.661048
0.870765
0.0312914
-0.319066
-0.602956
-0.996169
-0.95627
und Animation zu fremd ist. Nicht nur an der Spitze der Welle. Was ist falsch ist da?
Wenn 'f (x) = k1 * sinf (k2 * Deg2Rad (x)) + y_base', ist nicht' f '(x) = k1 * k2 * cosf (k2 * Deg2Rad (x)) 'seine Ableitung? –