Cache feature distances

This commit is contained in:
Daniel Mills 2021-01-14 08:37:15 -05:00
parent fa6c2fb63e
commit bb5f777cea

View File

@ -1,6 +1,7 @@
package com.volmit.iris.object; package com.volmit.iris.object;
import com.google.gson.Gson; import com.google.gson.Gson;
import com.volmit.iris.scaffold.cache.AtomicCache;
import com.volmit.iris.util.*; import com.volmit.iris.util.*;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Data; import lombok.Data;
@ -70,6 +71,13 @@ public class IrisFeature {
@Desc("Add additional noise to this spot") @Desc("Add additional noise to this spot")
private IrisGeneratorStyle addNoise = NoiseStyle.FLAT.style(); private IrisGeneratorStyle addNoise = NoiseStyle.FLAT.style();
private transient AtomicCache<Double> actualRadius = new AtomicCache<>();
public double getActualRadius()
{
return actualRadius.aquire(() -> IrisInterpolation.getRealRadius(getInterpolator(),getInterpolationRadius()));
}
public static IrisFeature read(DataInputStream s) throws IOException public static IrisFeature read(DataInputStream s) throws IOException
{ {
return new Gson().fromJson(s.readUTF(), IrisFeature.class); return new Gson().fromJson(s.readUTF(), IrisFeature.class);
@ -80,6 +88,6 @@ public class IrisFeature {
} }
public int getRealSize() { public int getRealSize() {
return (int) Math.ceil(IrisInterpolation.getRealRadius(interpolator, 0, 0, interpolationRadius) + blockRadius * 2); return (int) Math.ceil((getActualRadius() + blockRadius) * 2);
} }
} }