A complete 3D game development suite written purely in Java.
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Yan
01d0725a78
[taken]Fix issue #764
Fix infinity loop in EmitterSphereShape. issue #764
I test on both method:
public void getRandomPoint1(Vector3f store) {
float l = FastMath.pow(FastMath.nextRandomFloat(), 1f / 3f);
float u = FastMath.nextRandomFloat() * 2f - 1f;
float o = FastMath.nextRandomFloat() * FastMath.TWO_PI;
store.z = l * u;
u = 1f / FastMath.fastInvSqrt(1f - u * u);
store.x = l * u * FastMath.cos(o);
store.y = l * u * FastMath.sin(o);
store.multLocal(radius);
store.addLocal(center);
}
public void getRandomPoint2(Vector3f store) {
do {
store.x = (FastMath.nextRandomFloat() * 2f - 1f);
store.y = (FastMath.nextRandomFloat() * 2f - 1f);
store.z = (FastMath.nextRandomFloat() * 2f - 1f);
} while (store.lengthSquared() > 1);
store.multLocal(radius);
store.addLocal(center);
}
// Test
public void testGetRandomPoint() {
int n = 1000000;
long start = System.nanoTime();
for (int i = 0; i < n; i++) {
getRandomPoint1(store);
}
long time1 = System.nanoTime() - start;
start = System.nanoTime();
for (int i = 0; i < n; i++) {
getRandomPoint2(store);
}
long time2 = System.nanoTime() - start;
System.out.println("t1:" + time1);
System.out.println("t2:" + time2);
System.out.println("t1/t2:" + (float) time1 / time2);
}
Result:
t1:352272158
t2:94436324
t1/t2:3.7302613
Method2 seems nearly 4 times faster than method1.
|
7 years ago |
.. |
src
|
[taken]Fix issue #764
|
7 years ago |
build.gradle
|
build: check file exists before getting text
|
9 years ago |