我使用这段代码在每个点上构建我的三维表面图,但我有一个问题,我需要参数化我的函数,所以t变量将从0循环到T值,但我可以&#39 ;弄清楚我怎么能在代表内部做到这一点?
编辑了第一个块以获得更清晰:
/*this is code for building 3d surface plot, parameter delegate is counting Z
value in each (x, y) point.
x, y are axis variables. t is constant here*/
new ILPlotCube()
{
new ILSurface((x, y) => (float) (1/(x+y+t))
}
产生的伪代码类似于:
float functionValue = 0;
for (double t = 0; t < T; t + deltaT)
{
/*t is loop parameter here*/
functionValue += (float) (1/(x+y+t));
}
return functionValue;
答案 0 :(得分:0)
如果您不需要表达式树,那么它应该是:
Func<float, float, float> func = (x, y) =>
{
float functionValue = 0;
for (double t = 0; t < T; t += deltaT)
{
/*t is loop parameter here*/
functionValue += (float)(1 / (x + y + t));
}
return functionValue;
};
请注意,我必须更改t + deltaT
for
加法器
从那里你可以
new ILSurface(func);
这是statement lambda
,因为它在{ ... }
之后使用=>
代码。请参阅https://msdn.microsoft.com/library/bb397687.aspx statement lambdas