package org.jzy3d.plot3d.builder;

import java.util.List;

import org.jzy3d.maths.Coord3d;
import org.jzy3d.plot3d.primitives.AbstractComposite;
import org.jzy3d.plot3d.primitives.AbstractDrawable;
import org.jzy3d.plot3d.primitives.Point;
import org.jzy3d.plot3d.primitives.Polygon;

public abstract class Mapper {
	public abstract double f(double x, double y);
	
	/**
	 * Update the shape by remapping its polygon points' z coordinate
	 * according to f(x,y)
	 */
	public void remap(AbstractComposite shape){
		List polygons = shape.getDrawables();		
		for(AbstractDrawable d: polygons){
			remapDrawable(d);
		}
	}

	public void remapDrawable(AbstractDrawable d) {
		if(d instanceof Polygon){
		    Polygon p = (Polygon) d;				
			remapPolygon(p);
		}
	}

	public void remapPolygon(Polygon p) {
		for(int i=0; i 

Ads help maintain this website.