From: Svjatoslav Agejenko Date: Wed, 22 Feb 2023 21:27:31 +0000 (+0200) Subject: Moved galaxy object to 3D engine demonstration project X-Git-Url: http://www2.svjatoslav.eu/gitweb/?a=commitdiff_plain;h=9d03f0af97129ee791c0b1a33703fe1e34e9c050;p=sixth-3d.git Moved galaxy object to 3D engine demonstration project --- diff --git a/src/main/java/eu/svjatoslav/sixth/e3d/renderer/raster/shapes/composite/Galaxy.java b/src/main/java/eu/svjatoslav/sixth/e3d/renderer/raster/shapes/composite/Galaxy.java deleted file mode 100755 index 5aedf45..0000000 --- a/src/main/java/eu/svjatoslav/sixth/e3d/renderer/raster/shapes/composite/Galaxy.java +++ /dev/null @@ -1,86 +0,0 @@ -/* - * Sixth 3D engine. Author: Svjatoslav Agejenko. - * This project is released under Creative Commons Zero (CC0) license. - */ -package eu.svjatoslav.sixth.e3d.renderer.raster.shapes.composite; - -import eu.svjatoslav.sixth.e3d.geometry.Point3D; -import eu.svjatoslav.sixth.e3d.math.Transform; -import eu.svjatoslav.sixth.e3d.renderer.raster.Color; -import eu.svjatoslav.sixth.e3d.renderer.raster.shapes.basic.GlowingPoint; -import eu.svjatoslav.sixth.e3d.renderer.raster.shapes.composite.base.AbstractCompositeShape; - -import java.util.ArrayList; -import java.util.List; -import java.util.Random; - -import static java.lang.Math.*; - -public class Galaxy extends AbstractCompositeShape { - - private static List colors; - - public Galaxy(final int galaxySize, final int tailCount, final int starsCount, - Transform transform) { - - super(transform); - - ensureColorsAreInitialized(); - - final double angle1 = random() * 10; - final double angle2 = random() * 10; - - final double angleSin1 = sin(angle1); - final double angleCos1 = cos(angle1); - final double angleSin2 = sin(angle2); - final double angleCos2 = cos(angle2); - - Random random = new Random(); - - double starSize = galaxySize / 70d; - - for (int i = 1; i < starsCount; i++) { - final double b = random() * 10; - - final double s = (b * b) / 30; - - final double v1 = (random() * (11.5 - b)) / 3; - final double v1p = v1 / 2; - - final double ane = ((random() * (s / 2)) / tailCount) * 2; - final double sba = ((2 * PI) / tailCount) - * random.nextInt(tailCount); - - final double x = (((sin((b - sba) + ane) * s) + (random() * v1)) - v1p) * galaxySize; - final double z = (((cos((b - sba) + ane) * s) + (random() * v1)) - v1p) * galaxySize; - final double y = ((random() * v1) - v1p) * galaxySize; - - final double x1 = (x * angleCos1) + (z * angleSin1); - final double z1 = (z * angleCos1) - (x * angleSin1); - - final double y1 = (y * angleCos2) + (z1 * angleSin2); - final double z2 = (z1 * angleCos2) - (y * angleSin2); - - addStar(new Point3D(x1, y1, z2), starSize); - } - } - - private void addStar(final Point3D starLocation, double size) { - addShape(new GlowingPoint(starLocation, size, colors.get((int) (random() * colors.size())))); - } - - private synchronized void ensureColorsAreInitialized() { - if (colors != null) return; - - colors = new ArrayList<>(); - - for (int i = 0; i < 30; i++) - colors.add( - new Color( - random() + 0.5, - random() + 0.5, - random() + 0.5, - 255)); - } - -}