2 * Sixth 3D engine. Author: Svjatoslav Agejenko.
3 * This project is released under Creative Commons Zero (CC0) license.
5 package eu.svjatoslav.sixth.e3d.renderer.raster.shapes.composite.wireframe;
7 import eu.svjatoslav.sixth.e3d.geometry.Point3D;
8 import eu.svjatoslav.sixth.e3d.geometry.Rectangle;
9 import eu.svjatoslav.sixth.e3d.math.Transform;
10 import eu.svjatoslav.sixth.e3d.renderer.raster.shapes.basic.line.LineAppearance;
11 import eu.svjatoslav.sixth.e3d.renderer.raster.shapes.composite.base.AbstractCompositeShape;
13 public class Grid2D extends AbstractCompositeShape {
15 public Grid2D(final Transform transform, final Rectangle rectangle,
16 final int divisionsX, final int divisionsY,
17 final LineAppearance appearance) {
21 final double stepY = rectangle.getHeight() / divisionsY;
22 final double stepX = rectangle.getWidth() / divisionsX;
24 for (int yslice = 0; yslice <= divisionsY; yslice++) {
25 final double y = (yslice * stepY) + rectangle.getLowerY();
27 for (int xslice = 0; xslice <= divisionsX; xslice++) {
28 final double x = (xslice * stepX) + rectangle.getLowerX();
30 final Point3D p1 = new Point3D(x, y, 0);
31 final Point3D p2 = new Point3D(x + stepX, y, 0);
32 final Point3D p3 = new Point3D(x, y + stepY, 0);
34 if (xslice < divisionsX)
35 addShape(appearance.getLine(p1, p2));
37 if (yslice < divisionsY)
38 addShape(appearance.getLine(p1, p3));