All Downloads are FREE. Search and download functionalities are using the official Maven repository.

one.empty3.library.Parallelepiped Maven / Gradle / Ivy

Go to download

3D rendering engine. Plus modelling. Expected glsl textures 3d and 2d rendering3D primitives, and a lot of scenes' samples to test.+ Game Jogl reworked, Calculator (numbers and vectors). Java code parser implementation starts (<=1.2)

The newest version!
/*
 *
 *  * Copyright (c) 2024. Manuel Daniel Dahmen
 *  *
 *  *
 *  *    Copyright 2024 Manuel Daniel Dahmen
 *  *
 *  *    Licensed under the Apache License, Version 2.0 (the "License");
 *  *    you may not use this file except in compliance with the License.
 *  *    You may obtain a copy of the License at
 *  *
 *  *        http://www.apache.org/licenses/LICENSE-2.0
 *  *
 *  *    Unless required by applicable law or agreed to in writing, software
 *  *    distributed under the License is distributed on an "AS IS" BASIS,
 *  *    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *  *    See the License for the specific language governing permissions and
 *  *    limitations under the License.
 *
 *
 */

package one.empty3.library;/*
 * Copyright (c) 2017. Tous les fichiers dans ce programme sont soumis à la License Publique Générale GNU créée par la Free Softxware Association, Boston.
 * La plupart des licenses de parties tièrces sont compatibles avec la license principale.
 * Les parties tierces peuvent être soumises à d'autres licenses.
 * Montemedia : Creative Commons
 * ECT : Tests à valeur artistique ou technique.
 * La partie RayTacer a été honteusement copiée sur le Net. Puis traduite en Java et améliorée.
 * Java est une marque de la société Oracle.
 *
 * Pour le moment le programme est entièrement accessible sans frais supplémentaire. Get the sources, build it, use it, like it, share it.
 */

/*__
 * *
 * Global license : * Microsoft Public Licence
 * 

* author Manuel Dahmen [email protected]_ *

* * */ import one.empty3.library.Point3D; import one.empty3.library.Polygon; import one.empty3.library.RepresentableConteneur; import one.empty3.library.TextureCol; /*__ * Meta Description missing * @author Manuel Dahmen [email protected] */ public class Parallelepiped extends RepresentableConteneur { Point3D[] p0; private double a = 1, b = 1, c = 1; public Parallelepiped(Point3D base, Point3D a, Point3D b, Point3D c, ITexture texture) { p0 = new Point3D[]{base, a, b, c}; Point3D[] p1 = new Point3D[]{base}; for (int face = 0; face < 6; face++) { int dim0 = face / 2; int dim1 = (dim0 + 1) % 3; int dim2 = (dim1 + 1) % 3; double[] cof = new double[]{(dim0 == 0) ? 1 : -1, (dim1 == 1) ? 1 : -1, (dim2 == 2) ? 1 : -1}; add(new Polygon(new Point3D[]{ p1[0], p(p1[0], cof[dim0], p0[1]), p(p1[0], cof[dim1], p0[2]), p(p1[0], cof[dim2], p0[2])}, texture() )); p1[0] = p(p1[0], cof[dim1], p0[2]); } // add( new Quad(p0[0], p0[1], p0[2], p0[3])); } public Parallelepiped(double a, double b, double c, TextureCol texture) { this.a = a; this.b = b; this.c = c; texture(texture); Point3D[] p = new Point3D[4]; for (int x = -1; x <= 1; x++) { p[0] = new Point3D(x * a, -1 * c); p[1] = new Point3D(x * a, 1 * b, -1 * c); p[2] = new Point3D(x * a, 1 * b, 1 * c); p[3] = new Point3D(x * a, -1 * b, 1 * c); add(new Polygon(p, texture())); } for (int y = -1; y <= 1; y++) { p[0] = new Point3D(1 * a, y * b, 1 * c); p[1] = new Point3D(1 * a, y * b, -1 * c); p[2] = new Point3D(-1 * a, y * b, -1 * c); p[3] = new Point3D(-1 * a, y * b, 1 * c); add(new Polygon(p, texture())); } for (int z = -1; z <= 1; z++) { p[0] = new Point3D(-1 * a, -1 * b, z * c); p[1] = new Point3D(-1 * a, 1 * b, z * c); p[2] = new Point3D(1 * a, 1 * b, z * c); p[3] = new Point3D(1 * a, -1 * b, z * c); add(new Polygon(p, texture())); } } public double getA() { return a; } public void setA(double a) { this.a = a; } public double getB() { return b; } public void setB(double b) { this.b = b; } public double getC() { return c; } public void setC(double c) { this.c = c; } Point3D p(Point3D p0, double a, Point3D p1) { return p0.plus(p1.moins(p0).mult(a)); } }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy