Package org.osm2world.core.map_elevation.creation

Source Code of org.osm2world.core.map_elevation.creation.LinearInterpolator

package org.osm2world.core.map_elevation.creation;

import java.util.Collection;

import org.osm2world.core.map_elevation.creation.DelaunayTriangulation.DelaunayTriangle;
import org.osm2world.core.math.AxisAlignedBoundingBoxXZ;
import org.osm2world.core.math.VectorXYZ;
import org.osm2world.core.math.VectorXZ;

/**
* triangulates the point set of elevation sites,
* then interpolates linearly within each triangle
* (i.e. treats the triangles as flat)
*/
public class LinearInterpolator implements TerrainInterpolator {
 
  private DelaunayTriangulation triangulation;
 
  @Override
  public void setKnownSites(Collection<VectorXYZ> sites) {
   
    AxisAlignedBoundingBoxXZ boundingBox = new AxisAlignedBoundingBoxXZ(sites);
    boundingBox = boundingBox.pad(100);
   
    triangulation = new DelaunayTriangulation(boundingBox);
   
    for (VectorXYZ site : sites) {
      triangulation.insert(site);
    }
   
  }
 
  @Override
  public VectorXYZ interpolateEle(VectorXZ pos) {
   
    DelaunayTriangle triangle = triangulation.getEnlosingTriangle(pos);
   
    double ele = triangle.asTriangleXYZ().getYAt(pos);
   
    return pos.xyz(ele);
   
  }
 
}
TOP

Related Classes of org.osm2world.core.map_elevation.creation.LinearInterpolator

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.