public void set(GeoElement geo) { GeoSurfaceCartesian3D geoSurface = (GeoSurfaceCartesian3D) geo; fun = new Function[3]; for (int i = 0; i < 3; i++) { fun[i] = new FunctionNVar(geoSurface.fun[i], kernel); // Application.debug(fun[i].toString()); } startParam = geoSurface.startParam; endParam = geoSurface.endParam; isDefined = geoSurface.isDefined; // macro OUTPUT if (geo.getConstruction() != cons && isAlgoMacroOutput()) { if (!geo.isIndependent()) { // this object is an output object of AlgoMacro // we need to check the references to all geos in its function's expression AlgoMacro algoMacro = (AlgoMacro) getParentAlgorithm(); for (int i = 0; i < 3; i++) algoMacro.initFunction(fun[i]); } } // distFun = new ParametricCurveDistanceFunction(this); }