package model; import transforms.*; public class CoonsGrid extends Solid { private final Solid guideGrid; private final Mat4 bicubicMat; public CoonsGrid(Solid guideGrid) { isEditable = false; this.guideGrid = guideGrid; this.bicubicMat = Cubic.COONS; recalc(); } @Override public void recalc() { vertexBuffer.clear(); indexBuffer.clear(); Bicubic bicubic = new Bicubic(bicubicMat, guideGrid.getPoints()); for (int i = 0; i <= 10; i++) { for (int j = 0; j <= 10; j++) { vertexBuffer.add(new Vertex(bicubic.compute(i / 10.0, j / 10.0), 0xff33ff)); } } this.transMat = new Mat4Scale(3).mul(new Mat4Transl(-3, -3, 0)).mul(guideGrid.getTransMat()); for (int i = 0; i <= 10; i++) { for (int j = 0; j <= 10; j++) { if (j > 0) { indexBuffer.add(i * (11) + j - 1); indexBuffer.add(i * (11) + j); } if (i > 0) { indexBuffer.add((i - 1) * (11) + j); indexBuffer.add(i * (11) + j); } } } } }