Changed license to Creative Commons Zero (CC0).
[sixth-3d.git] / src / main / java / eu / svjatoslav / sixth / e3d / renderer / raster / shapes / composite / wireframe / Grid2D.java
1 /*
2  * Sixth 3D engine. Author: Svjatoslav Agejenko. 
3  * This project is released under Creative Commons Zero (CC0) license.
4  *
5 *
6  */
7
8 package eu.svjatoslav.sixth.e3d.renderer.raster.shapes.composite.wireframe;
9
10 import eu.svjatoslav.sixth.e3d.geometry.Point3D;
11 import eu.svjatoslav.sixth.e3d.geometry.Rectangle;
12 import eu.svjatoslav.sixth.e3d.math.Transform;
13 import eu.svjatoslav.sixth.e3d.renderer.raster.shapes.basic.line.LineAppearance;
14 import eu.svjatoslav.sixth.e3d.renderer.raster.shapes.composite.base.AbstractCompositeShape;
15
16 public class Grid2D extends AbstractCompositeShape {
17
18     public Grid2D(final Transform transform, final Rectangle rectangle,
19                   final int divisionsX, final int divisionsY,
20                   final LineAppearance appearance) {
21
22         super(transform);
23
24         final double stepY = rectangle.getHeight() / divisionsY;
25         final double stepX = rectangle.getWidth() / divisionsX;
26
27         for (int yslice = 0; yslice <= divisionsY; yslice++) {
28             final double y = (yslice * stepY) + rectangle.getLowerY();
29
30             for (int xslice = 0; xslice <= divisionsX; xslice++) {
31                 final double x = (xslice * stepX) + rectangle.getLowerX();
32
33                 final Point3D p1 = new Point3D(x, y, 0);
34                 final Point3D p2 = new Point3D(x + stepX, y, 0);
35                 final Point3D p3 = new Point3D(x, y + stepY, 0);
36
37                 if (xslice < divisionsX)
38                     addShape(appearance.getLine(p1, p2));
39
40                 if (yslice < divisionsY)
41                     addShape(appearance.getLine(p1, p3));
42             }
43
44         }
45
46     }
47
48 }