package org.geogebra.common.geogebra3D.kernel3D.algos; import org.geogebra.common.geogebra3D.kernel3D.geos.GeoQuadric3D; import org.geogebra.common.kernel.Kernel; import org.geogebra.common.kernel.Matrix.Coords; /** * for cones * * @author mathieu * */ public class AlgoQuadricComputerCone extends AlgoQuadricComputer { @Override public void setQuadric(GeoQuadric3D quadric, Coords origin, Coords direction, Coords eigen, double r, double r2) { quadric.setCone(origin, direction.normalize(), eigen, r, r2); } @Override public double getNumber(double v) { double c = Math.cos(v); double s = Math.sin(v); if (c < 0 || s < 0) { return Double.NaN; } else if (Kernel.isZero(c)) {// TODO if c=0 then draws a plane return Double.NaN; } else if (Kernel.isZero(s)) {// TODO if s=0 then draws a line return Double.NaN; } return s / c; } }