/**
*
*/
package org.geogebra.common.kernel.advanced;
import org.geogebra.common.kernel.Construction;
import org.geogebra.common.kernel.Region;
import org.geogebra.common.kernel.algos.AlgoElement;
import org.geogebra.common.kernel.commands.Commands;
import org.geogebra.common.kernel.geos.GeoBoolean;
import org.geogebra.common.kernel.geos.GeoElement;
import org.geogebra.common.kernel.kernelND.GeoPointND;
/**
* Determine whether point is in region.
*
* @author Zbynek
*
*/
public class AlgoIsInRegion extends AlgoElement {
private GeoPointND pi;
private Region region;
private GeoBoolean result;
/**
* Creates new algo
*
* @param c
* @param label
* @param pi
* @param region
*/
public AlgoIsInRegion(Construction c, String label, GeoPointND pi,
Region region) {
super(c);
this.pi = pi;
this.region = region;
result = new GeoBoolean(cons);
setInputOutput();
compute();
result.setLabel(label);
}
@Override
public void compute() {
result.setValue(region.isInRegion(pi));
}
@Override
protected void setInputOutput() {
setOutputLength(1);
setOutput(0, result);
input = new GeoElement[2];
input[0] = (GeoElement) pi;
input[1] = (GeoElement) region;
setDependencies();
}
/**
* Returns true iff point is in region.
*
* @return true iff point is in region
*/
public GeoBoolean getResult() {
return result;
}
@Override
public Commands getClassName() {
return Commands.IsInRegion;
}
}