Hoi,
ik heb een stukje code waar ik niet helemaal zeker van ben of dit vlekkeloos verloopt in alle mogelijkheden. Het is C++ en ik probeer hier een acceleratievector te berekenen van een game-object. Het gaat op zich goed, maar kan dit fout gaan?
Het zit 'm in
Voor de deling:
ik heb een stukje code waar ik niet helemaal zeker van ben of dit vlekkeloos verloopt in alle mogelijkheden. Het is C++ en ik probeer hier een acceleratievector te berekenen van een game-object. Het gaat op zich goed, maar kan dit fout gaan?
C++:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| Vector3 VehicleData::getAccelerationVectors(Vector3 velocities) { long long time = std::chrono::system_clock::now().time_since_epoch().count(); Vector3 result; result.x = (velocities.x - prevVelocities.x)*1000000.0f / (time - prevTime); result.y = (velocities.y - prevVelocities.y)*1000000.0f / (time - prevTime); result.z = (velocities.z - prevVelocities.z)*1000000.0f / (time - prevTime); prevTime = time; prevVelocities = velocities; samples[averageIndex] = result; averageIndex = (averageIndex + 1) % (SAMPLES - 1); return result; } |
Het zit 'm in
code:
en 1
| std::chrono::system_clock::now().time_since_epoch().count(); |
code:
. Kan dit 0 zijn in normale omstandigheden? In het script-loopje wordt getAccelerationVectors() maar 1x per loop aangeroepen, dus dit zou tenminste iets uit elkaar moeten liggen. Kan het toch ooit voorkomen dat deze twee tijden gelijk zijn? Zo ja, hoe lomp is het dan om dit erbij te zetten? 1
| time - prevTime |
Voor de deling:
code:
1
2
3
| if (time == prevTime) { prevTime = time - 1; } |