JS - number += number * number daje NaN

0

Witam wszystkich serdecznie.

Mam dosyć ciekawy problem z JS. Otóż, mam ja sobie kilka zmiennych, które są od siebie zależne

a = 0;
m = 20;
g = 10;
F = [0, g];
av = F[1] / m;
a = F[0] / m;
vv += av * delta;
vh += a * delta ;
morsX += vh * delta;
morsY += vv * delta;

Wszystkie te wartości drukuje sobie na ekranie canvasu i wszystko jest dobrze do momentu gdzie wyliczany jest vv. Jak widać jest to suma poprzedniej wartości i iloczynu av * delta. av i delta są normalnie wyświetlane - wartości liczbowe. Natomiast gdy dochodzimy do linijki z vv, nagle wynikiem tego działania jest NaN. Co lepsze! Po wywołaniu alert(typedef(vv)) wypisywany jest "number", a także gdy wywołam console.log(vv) to wyświetlana jest wartość liczbowa (prawidłowa zresztą). Pomoże ktoś coś, wyjaśni czemu tak się dzieje?

0

A sprawdzałeś typy av i delta przed mnożeniem?

0

Tak, również number.

0

Ciężko powiedzieć co jest grane. Jakbyś podesłał dane wejściowe dla tego skryptu to byłoby mi łatwiej Ci pomóc

0
morsX = 300;
morsY = 200;

thisFrame = Date.now();
delta = thisFrame - lastFrame;
lastFrame = thisFrame;

reszta jest podana wyżej, wcześniej w kodzie jest też lastFrame = Date.now(); delta wychodzi średnio 41 z tego co mi wypisuje skrypt na ekranie

2

jesli vv i vh przed tymi operacjami sa zadeklarowane, ale nie maja przypisanej wartosci to dostanien NaN'a. wyzeruj te zmienne przy deklaracji np. var vv = 0;

1

pokaż cały skrypt
NaN to typ liczbowy więc wszystko z typami się zgadza - NaN otrzymasz w przypadku symboli nieokreślonych jak na przykład 0/0 albo Infinity - Infinity

jako że av = F[1] / m a F[1] = g to podejrzewam że po prostu g i m jednocześnie wynoszą 0 w pewnym momencie
żadnej magii tu nie ma więc podaj (nie)działający przykład który możemy odpalić

0

właśnie skończyłem robotę na dziś, jak tylko wrócę do domu to dam znać czy to coś dało.

//edit
pomogło :D taki głupi błąd...
No cóż, dzięki wielkie :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1