00001 package org.hfbk.vis.visnode;
00002
00003 import org.dronus.graph.Node;
00004 import org.hfbk.util.Scripter;
00005 import org.hfbk.util.Scripter.ScriptFunction;
00006 import org.lwjgl.util.vector.Vector3f;
00007
00008
00022 public class VisFunction extends VisHeightfield {
00023
00024 String f;
00025
00026 Scripter scripter=new Scripter();
00027
00028 public VisFunction(Node node, Vector3f position) {
00029 super(node, position);
00030
00031 f = node.text;
00032 scripter.evaluate("function f(x, y, t){with(Math){return " + f + ";}};");
00033 }
00034
00035 @Override
00036 float[][] heightMap(float t) {
00037 int w=50,h=50;
00038
00039 ScriptFunction f = scripter.getFunction("f");
00040
00041 float[][] z = new float[w][h];
00042
00043 for (int x = 0; x < w; x++) {
00044 for (int y = 0; y < h; y++) {
00045 Object value = f.call(2*x/(float)w-1 , 2*y/(float)h-1, t);
00046 z[x][y] = ((Double) value).floatValue();
00047 }
00048 }
00049 return z;
00050 }
00051 }