Browse Source

Cleanup of interpolation method

magicbox-1.5.2
MagicBot 1 year ago
parent
commit
7b8cafc8ac
  1. 23
      src/engine/InterestManagement/HeightMap.java

23
src/engine/InterestManagement/HeightMap.java

@ -405,32 +405,29 @@ public class HeightMap {
public float getInterpolatedTerrainHeight(Vector2f zoneLoc) { public float getInterpolatedTerrainHeight(Vector2f zoneLoc) {
Vector2f gridSquare; float interpolatedHeight;
gridSquare = getGridSquare(zoneLoc); Vector2f gridSquare = getGridSquare(zoneLoc);
int gridX = (int) gridSquare.x; int gridX = (int) gridSquare.x;
int gridY = (int) gridSquare.y; int gridY = (int) gridSquare.y;
float offsetX = (gridSquare.x - gridX); //get 4 surrounding vertices from the pixel array.
float offsetY = gridSquare.y - gridY;
//get height of the 4 vertices.
float topLeftHeight; float topLeftHeight;
float topRightHeight; float topRightHeight;
float bottomLeftHeight; float bottomLeftHeight;
float bottomRightHeight; float bottomRightHeight;
int nextY = gridY + 1;
int nextX = gridX + 1;
topLeftHeight = pixelColorValues[gridX][gridY]; topLeftHeight = pixelColorValues[gridX][gridY];
topRightHeight = pixelColorValues[nextX][gridY]; topRightHeight = pixelColorValues[gridX + 1][gridY];
bottomLeftHeight = pixelColorValues[gridX][nextY]; bottomLeftHeight = pixelColorValues[gridX][gridY + 1];
bottomRightHeight = pixelColorValues[nextX][nextY]; bottomRightHeight = pixelColorValues[gridX + 1][gridY + 1];
float interpolatedHeight; // Interpolate between the 4 vertices
float offsetX = (gridSquare.x - gridX);
float offsetY = gridSquare.y - gridY;
interpolatedHeight = topRightHeight * (1 - offsetY) * (offsetX); interpolatedHeight = topRightHeight * (1 - offsetY) * (offsetX);
interpolatedHeight += (bottomRightHeight * offsetY * offsetX); interpolatedHeight += (bottomRightHeight * offsetY * offsetX);

Loading…
Cancel
Save