package org.geogebra.common.geogebra3D.kernel3D.transform; import org.geogebra.common.geogebra3D.kernel3D.algos.AlgoRotate3DLine; import org.geogebra.common.geogebra3D.kernel3D.algos.AlgoRotate3DPointOrientation; import org.geogebra.common.kernel.Construction; import org.geogebra.common.kernel.TransformRotate; import org.geogebra.common.kernel.algos.AlgoTransformation; import org.geogebra.common.kernel.geos.GeoElement; import org.geogebra.common.kernel.geos.GeoNumberValue; import org.geogebra.common.kernel.kernelND.GeoDirectionND; import org.geogebra.common.kernel.kernelND.GeoLineND; import org.geogebra.common.kernel.kernelND.GeoPointND; /** * 3D rotations * * @author mathieu * */ public class TransformRotate3D extends TransformRotate { private GeoDirectionND orientation; private GeoLineND line; /** * constructor * * @param cons * construction * @param angle * rotation angle * @param center * center * @param orientation * orientation */ public TransformRotate3D(Construction cons, GeoNumberValue angle, GeoPointND center, GeoDirectionND orientation) { super(cons, angle, center); this.orientation = orientation; } /** * constructor * * @param cons * construction * @param angle * rotation angle * @param line * line */ public TransformRotate3D(Construction cons, GeoNumberValue angle, GeoLineND line) { super(cons, angle); this.line = line; } @Override protected AlgoTransformation getTransformAlgo(GeoElement geo) { AlgoTransformation algo = null; if (line == null) { algo = new AlgoRotate3DPointOrientation(cons, geo, angle, center, orientation); } else { algo = new AlgoRotate3DLine(cons, geo, angle, line); } return algo; } }