2 * Sixth 3D engine. Author: Svjatoslav Agejenko.
3 * This project is released under Creative Commons Zero (CC0) license.
8 package eu.svjatoslav.sixth.e3d.renderer.raster.shapes.composite.wireframe;
10 import eu.svjatoslav.sixth.e3d.geometry.Point3D;
11 import eu.svjatoslav.sixth.e3d.renderer.raster.shapes.basic.line.LineAppearance;
12 import eu.svjatoslav.sixth.e3d.renderer.raster.shapes.composite.base.AbstractCompositeShape;
14 import java.util.ArrayList;
16 public class WireframeSphere extends AbstractCompositeShape {
18 ArrayList<Point3D> previousRing = new ArrayList<>();
20 public WireframeSphere(final Point3D location, final float radius,
21 final LineAppearance lineFactory) {
24 final double step = Math.PI / 10;
26 final Point3D center = new Point3D();
30 for (double j = 0d; j <= (Math.PI * 2); j += step) {
32 Point3D oldPoint = null;
35 for (double i = 0; i <= (Math.PI * 2); i += step) {
36 final Point3D newPoint = new Point3D(0, 0, radius);
37 newPoint.rotate(center, i, j);
40 addShape(lineFactory.getLine(newPoint, oldPoint));
43 final Point3D previousRingPoint = previousRing
45 addShape(lineFactory.getLine(newPoint, previousRingPoint));
47 previousRing.set(pointIndex, newPoint);
49 previousRing.add(newPoint);