package org.geogebra.common.geogebra3D.kernel3D.algos;
import org.geogebra.common.geogebra3D.kernel3D.geos.GeoQuadric3D;
import org.geogebra.common.kernel.Construction;
import org.geogebra.common.kernel.Matrix.Coords;
import org.geogebra.common.kernel.arithmetic.NumberValue;
import org.geogebra.common.kernel.geos.GeoElement;
/**
* @author ggb3D
*
*/
public abstract class AlgoQuadric extends AlgoElement3D {
private GeoQuadric3D quadric;
private GeoElement secondInput;
private NumberValue number;
private AlgoQuadricComputer computer;
/**
* @param c
* construction
*/
public AlgoQuadric(Construction c, GeoElement secondInput,
NumberValue number, AlgoQuadricComputer computer) {
this(c, secondInput, number, computer, true);
}
public AlgoQuadric(Construction c, GeoElement secondInput,
NumberValue number, AlgoQuadricComputer computer,
boolean addToConstructionList) {
super(c, addToConstructionList);
quadric = computer.newQuadric(c);
this.number = number;
this.secondInput = secondInput;
this.computer = computer;
}
protected AlgoQuadricComputer getComputer() {
return computer;
}
/**
*
* @return second input
*/
protected GeoElement getSecondInput() {
return secondInput;
}
/**
*
* @return radius or angle
*/
protected GeoElement getNumber() {
return (GeoElement) number;
}
/**
*
* @return direction of the axis
*/
protected abstract Coords getDirection();
/**
* @return the cone
*/
public GeoQuadric3D getQuadric() {
return quadric;
}
/*
* This should apply to every subclass. In case it does not, a case per case
* should be used.
*/
}