Added DetailUtil and it's use in the buffer builder +

small fixes
This commit is contained in:
Leonardo
2021-08-22 11:27:40 +02:00
parent e2a983e4ac
commit 1a7655e752
8 changed files with 245 additions and 995 deletions
@@ -0,0 +1,54 @@
package com.seibel.lod.util;
import com.seibel.lod.enums.DistanceCalculatorType;
import com.seibel.lod.enums.DistanceGenerationMode;
public class DetailUtil
{
private static int initial = 200;
private static double genMultiplier = 1.5;
private static DistanceCalculatorType calculator = DistanceCalculatorType.LINEAR;
private static final int maxDetail = 10;
private static final int minDistance = 0;
private static final int maxDistance = 1000000;
private static DistanceGenerationMode[] distancesGenerators = {
DistanceGenerationMode.SURFACE,
DistanceGenerationMode.SURFACE,
DistanceGenerationMode.SURFACE,
DistanceGenerationMode.SURFACE,
DistanceGenerationMode.SURFACE,
DistanceGenerationMode.SURFACE,
DistanceGenerationMode.SURFACE,
DistanceGenerationMode.SURFACE,
DistanceGenerationMode.SURFACE};
public static int getDistanceRendering(int detail)
{
int distance = 0;
switch (calculator)
{
case LINEAR:
distance = (detail * initial);
break;
case QUADRATIC:
if (detail == 0)
distance = minDistance;
else if(detail == maxDetail)
distance = maxDistance;
else
distance = (int) (Math.pow(2, detail) * initial);
break;
}
return distance;
}
public static int getDistanceGeneration(int detail)
{
return (int) (getDistanceRendering(detail) * genMultiplier);
}
public static DistanceGenerationMode getDistanceGenerationMode(int detail)
{
return distancesGenerators[detail];
}
}