public FuncControl() { _f = (x) => 0; //y=0; //_f = Math.Sin; // double Sin(double a); //_f = (x) => x * x; //lambda double q (double x){return x*x;}; _f=q; //_f = (x) => Math.Pow(x, 2); // Pow non ha la stessa signature del delegate //_f = Math.Sqrt; //_f = (x) => Math.Sqrt(x); //_f = (x) => { double y = Math.Sqrt(x); return y + 2; }; //_f = Foo; //double y = _f(2.5); }
private void mandelbrotClick(object sender, System.EventArgs e) { Function2D m = new Function2D(); //The source represents the body of the following function: //double[] p, dfdp; //double f(double x, double y) { // ... //} m.source = "double xn = 0, yn = 0, x2 = 0, y2 = 0;" + "for (int n = 0; n < 500; n++) {" + " yn = 2*xn*yn + y;" + " xn = x2 - y2 + x;" + " x2 = xn*xn; y2 = yn*yn;" + " if (x2 + y2 > 4) return n;" + "} return 0;"; m.Compile(true); graph.SetRange(graph.x0, graph.x1, graph.y0, graph.y1, 0, 20); graph.Model.Items.Add(m); graph.Invalidate(); }
static Flap() { a_a6 = new Function2D(a_a6_ar, a_a6_a_a6); lamda1 = new Function2D(lamda1_c_cf, lamda1_lamda1); lamda2_planeFlap = new Function2D(lamda2_planeFlap_delta, lamda2_planeFlap_lamda2); lamda2_splitFlap_tc012 = new Function2D(lamda2_splitFlap_tc012_delta, lamda2_splitFlap_tc012_lamda2); lamda2_splitFlap_tc021 = new Function2D(lamda2_splitFlap_tc021_delta, lamda2_splitFlap_tc021_lamda2); lamda2_splitFlap_lamda2 = (new Function2D[] { lamda2_splitFlap_tc012, lamda2_splitFlap_tc021 }); lamda2_splitFlap = new Function3D(lamda2_splitFlap_t_c, lamda2_splitFlap_lamda2); lamda2_slottedFlap_tc012 = new Function2D(lamda2_slottedFlap_tc012_delta, lamda2_slottedFlap_tc012_lamda2); lamda2_slottedFlap_tc021 = new Function2D(lamda2_slottedFlap_tc021_delta, lamda2_slottedFlap_tc021_lamda2); lamda2_slottedFlap_lamda2 = (new Function2D[] { lamda2_slottedFlap_tc012, lamda2_slottedFlap_tc021 }); lamda2_slottedFlap = new Function3D(lamda2_slottedFlap_t_c, lamda2_slottedFlap_lamda2); mu1_tc012 = new Function2D(mu1_tc012_c_cf, mu1_tc012_mu1); mu1_tc021 = new Function2D(mu1_tc021_c_cf, mu1_tc021_mu1); mu1_tc030 = new Function2D(mu1_tc030_c_cf, mu1_tc030_mu1); mu1_mu1 = (new Function2D[] { mu1_tc012, mu1_tc021, mu1_tc030 }); mu1 = new Function3D(mu1_t_c, mu1_mu1); delta1_pFsP_tc012 = new Function2D(delta1_pFsF_tc012_c_cf, delta1_pFsF_tc012_delta1); delta1_pFsP_tc021 = new Function2D(delta1_pFsF_tc021_c_cf, delta1_pFsF_tc021_delta1); delta1_pFsP_tc030 = new Function2D(delta1_pFsF_tc030_c_cf, delta1_pFsF_tc030_delta1); delta1_pFsF_delta1 = (new Function2D[] { delta1_pFsP_tc012, delta1_pFsP_tc021, delta1_pFsP_tc030 }); delta1_pFsF = new Function3D(delta1_pFsF_t_c, delta1_pFsF_delta1); delta1_slottedFlap_tc012030 = new Function2D( delta1_slottedFlap_tc012030_c_cf, delta1_slottedFlap_tc012030_delta1); delta1_slottedFlap_tc021 = new Function2D( delta1_slottedFlap_tc021_c_cf, delta1_slottedFlap_tc021_delta1); delta1_slottedFlap_delta1 = (new Function2D[] { delta1_slottedFlap_tc012030, delta1_slottedFlap_tc021, delta1_slottedFlap_tc012030 }); delta1_slottedFlap = new Function3D(delta1_slottedFlap_t_c, delta1_slottedFlap_delta1); delta2_planeFlap = new Function2D(delta2_planeFlap_delta, delta2_planeFlap_delta2); delta2_splitFlap_tc012 = new Function2D(delta2_splitFlap_tc012_delta, delta2_splitFlap_tc012_delta2); delta2_splitFlap_tc021 = new Function2D(delta2_splitFlap_tc021_delta, delta2_splitFlap_tc021_delta2); delta2_splitFlap_tc030 = new Function2D(delta2_splitFlap_tc030_delta, delta2_splitFlap_tc030_delta2); delta2_splitFlap_delta2 = (new Function2D[] { delta2_splitFlap_tc012, delta2_splitFlap_tc021, delta2_splitFlap_tc030 }); delta2_splitFlap = new Function3D(delta2_splitFlap_t_c, delta2_splitFlap_delta2); delta2_slottedFlap_tc012 = new Function2D( delta2_slottedFlap_tc012_delta, delta2_slottedFlap_tc012_delta2); delta2_slottedFlap_tc021 = new Function2D( delta2_slottedFlap_tc021_delta, delta2_slottedFlap_tc021_delta2); delta2_slottedFlap_tc030 = new Function2D( delta2_slottedFlap_tc030_delta, delta2_slottedFlap_tc030_delta2); delta2_slottedFlap_delta2 = (new Function2D[] { delta2_slottedFlap_tc012, delta2_slottedFlap_tc021, delta2_slottedFlap_tc030 }); delta2_slottedFlap = new Function3D(delta2_slottedFlap_t_c, delta2_slottedFlap_delta2); ka_cfc1 = new Function2D(ka_cfc1_delta, ka_cfc1_ka); ka_cfc2 = new Function2D(ka_cfc2_delta, ka_cfc2_ka); ka_cfc3 = new Function2D(ka_cfc3_delta, ka_cfc3_ka); ka_cfc4 = new Function2D(ka_cfc4_delta, ka_cfc4_ka); ka_ka = (new Function2D[] { ka_cfc1, ka_cfc2, ka_cfc3, ka_cfc4 }); ka = new Function3D(ka_cfc, ka_ka); }
public void draw(string function) { string s = sub(function, 0, function.IndexOf("=")); Debug.Log(s); string f = sub(function, function.IndexOf("=") + 1, function.Length); Debug.Log(f); IObj obj = null; if (f.Contains(",")) { f = sub(f, 1, f.Length - 1); string[] comp = f.Split(','); if (s.Contains("(x,y,z)")) { GameObject gameObject = Instantiate(vectorField3DObject, transform.position + Vector3.up, Quaternion.identity) as GameObject; gameObject.transform.localScale = new Vector3(10, 10, 10); VectorField3D vectorField3D = gameObject.GetComponent <VectorField3D>(); vectorField3D.sex = comp[0]; vectorField3D.sey = comp[1]; vectorField3D.sez = comp[2]; obj = vectorField3D; //vectorField3D.update(); } else if (s.Contains("(x,y)")) { GameObject gameObject = Instantiate(vectorField2DObject, transform.position + Vector3.up, Quaternion.identity) as GameObject; gameObject.transform.localScale = new Vector3(10, 10, 10); VectorField2D vectorField2D = gameObject.GetComponent <VectorField2D>(); Debug.Log("vector2d"); Debug.Log(comp[0]); Debug.Log(comp[1]); vectorField2D.sex = comp[0]; vectorField2D.sey = comp[1]; obj = vectorField2D; //vectorField2D.update(); } } else { Debug.Log(function); Regex r = new Regex("([a-zA-Z0-9]*?)\\^\\((.+?)\\)"); Match m = r.Match(function); if (m.Success) { function = r.Replace(function, "Pow($1,$2)"); Debug.Log(m.Groups[1]); Debug.Log(m.Groups[2]); } Debug.Log(function); if (s.Contains("(x,y)")) { GameObject gameObject = Instantiate(function3DObject, transform.position + Vector3.up, Quaternion.identity) as GameObject; gameObject.transform.localScale = new Vector3(10, 10, 10); Function3D function3D = gameObject.GetComponent <Function3D>(); function3D.function = f; function3D.start(); function3D.compile(); obj = function3D; //function3D.update(); } else if (s.Contains("(x)")) { GameObject gameObject = Instantiate(function2DObject, transform.position + Vector3.up, Quaternion.identity) as GameObject; gameObject.transform.localScale = new Vector3(100, 100, 100); Function2D function2D = gameObject.GetComponent <Function2D>(); Debug.Log("2D"); function2D.function = f; obj = function2D; //function2D.update(); } } if (obj != null) { Debug.Log("Queue"); main.unassigned.Enqueue(obj); Debug.Log(main.unassigned.Count); } }