package org.geogebra.common.kernel.arithmetic;
import org.geogebra.common.kernel.Matrix.Coords;
/**
* interface for all classes that can be evaluated as (u,v) -> (x,y,z) surfaces
*
* TODO FunctionalNVar ?
*
* @author Mathieu
*
*/
public interface Functional2Var {
/**
* set point for parameters (u,v)
*
* @param u
* x-coord for evaluation
* @param v
* y-coord for evaluation
* @param point
* for parameters (u,v)
*
*/
public void evaluatePoint(double u, double v, Coords point);
/**
* return normal vector at parameters (u,v) (return null if none)
*
* @param u
* x-coord for evaluation
* @param v
* y-coord for evaluation
* @return normal vector at parameters (u,v)
*/
public Coords evaluateNormal(double u, double v);
/**
* Returns the start parameter value
*
* @param index
* of the parameter (0 -> u / 1 -> v)
* @return the start parameter value
*/
public double getMinParameter(int index);
/**
* Returns the largest possible parameter value
*
* @param index
* of the parameter (0 -> u / 1 -> v)
* @return the largest possible parameter value
*/
public double getMaxParameter(int index);
}