public void GetModel(MeshGeometryVisual3D mesh)
{
MeshBuilder mb = new MeshBuilder(false, true);
double Hdelta = MaxHeight - MinHeight;
for (int x = 0; x < SizeX - 1; x++)
{
for (int y = 0; y < SizeY - 1; y++)
{
if (!Points[x, y].HasValue || !Points[x, y + 1].HasValue || !Points[x + 1, y].HasValue || !Points[x + 1, y + 1].HasValue)
continue;
mb.AddQuad(
new Point3D(Min.X + (x + 1) * Delta.X / (SizeX - 1), Min.Y + (y) * Delta.Y / (SizeY - 1), Points[x + 1, y].Value),
new Point3D(Min.X + (x + 1) * Delta.X / (SizeX - 1), Min.Y + (y + 1) * Delta.Y / (SizeY - 1), Points[x + 1, y + 1].Value),
new Point3D(Min.X + (x) * Delta.X / (SizeX - 1), Min.Y + (y + 1) * Delta.Y / (SizeY - 1), Points[x, y + 1].Value),
new Point3D(Min.X + (x) * Delta.X / (SizeX - 1), Min.Y + (y) * Delta.Y / (SizeY - 1), Points[x, y].Value),
new Point(0, (Points[x + 1, y].Value - MinHeight) * Hdelta),
new Point(0, (Points[x + 1, y + 1].Value - MinHeight) * Hdelta),
new Point(0, (Points[x, y + 1].Value - MinHeight) * Hdelta),
new Point(0, (Points[x, y].Value - MinHeight) * Hdelta)
);
}
}
mesh.MeshGeometry = mb.ToMesh();
}