Post date: May 7, 2013 1:53:04 PM
javaScriptのeval関数はString型のオブジェクト(文字列)をjavaScriptの関数として利用することのできる便利な関数である。
例えば、この関数一つで関数電卓的な使い方をすることもできる。
それをjavaで使うコードをあるサイトから発見してきた。
それをprocessing用にちょこっと改造したのが下のコードである。
import javax.script.*;
import java.util.*;
void setup(){
initialize();
calc("cos(radians(90))");
}
ScriptEngineManager factory = new ScriptEngineManager();
ScriptEngine engine = factory.getEngineByName("JavaScript");
String simu(String eval) {
try {
return( engine.eval("with(Math){"+eval+"}").toString() );
}
catch(Exception e) {
return(null);
}
}
String calc(String str) {
String ans=simu(str);
if(ans==null)return "その式ちょっとわからない…";
return str+"の式の答えは"+ans+"だよ!!";
}
void initialize()() {
simu("function radians(x){return(x/180*PI);}");
simu("function degrees(x){return(x/PI*180);}");
simu("function sinDeg(x) {return(sin(radians(x)));}");
simu("function cosDeg(x) {return(cos(radians(x)));}");
simu("function tanDeg(x) {return(tan(radians(x)));}");
String test = "function sum(a)"
+ "{var s=0;"
+ "for(var i=0; i< a.length; i++) s+=a[i];"
+ "return(s);}";
simu(test);
}