package org.geogebra.common.geogebra3D.kernel3D.algos; import org.geogebra.common.kernel.Construction; import org.geogebra.common.kernel.StringTemplate; import org.geogebra.common.kernel.Matrix.Coords; import org.geogebra.common.kernel.arithmetic.NumberValue; import org.geogebra.common.kernel.commands.Commands; import org.geogebra.common.kernel.geos.GeoElement; import org.geogebra.common.kernel.kernelND.GeoLineND; import org.geogebra.common.kernel.kernelND.GeoPointND; /** * @author ggb3D * */ public class AlgoConePointLineAngle extends AlgoQuadricPointNumber { /** * @param c * construction * @param label * @param origin * @param axis * @param angle */ public AlgoConePointLineAngle(Construction c, String label, GeoPointND origin, GeoLineND axis, NumberValue angle) { super(c, label, origin, (GeoElement) axis, angle, new AlgoQuadricComputerCone()); } @Override protected Coords getDirection() { GeoLineND axis = (GeoLineND) getSecondInput(); return axis.getPointInD(3, 1).getInhomCoordsInSameDimension() .sub(axis.getPointInD(3, 0).getInhomCoordsInSameDimension()); } @Override final public String toString(StringTemplate tpl) { return getLoc().getPlain(getPlainName(), getOrigin().getLabel(tpl), getSecondInput().getLabel(tpl), getNumber().getLabel(tpl)); } @Override final protected String getPlainName() { return "ConeWithCenterAAxisParallelToBAngleC"; } @Override public Commands getClassName() { return Commands.InfiniteCone; } }