public static ExCoordF Polar2(ExTP radThetaDeg) { var rt = new TExV2(); var lookup = new TExV2(); return((c, s, bpi, nrv, fxy) => Ex.Block(new ParameterExpression[] { rt, lookup }, Ex.Assign(rt, radThetaDeg(bpi)), Ex.Assign(lookup, ExM.CosSinDeg(rt.y)), fxy(Ex.Subtract(Ex.Multiply(c, lookup.x), Ex.Multiply(s, lookup.y)).Mul(rt.x), Ex.Add(Ex.Multiply(s, lookup.x), Ex.Multiply(c, lookup.y)).Mul(rt.x)), Expression.Empty() )); }
public static ExCoordF Polar(ExBPY r, ExBPY theta) { var vr = ExUtils.VFloat(); var lookup = new TExV2(); return((c, s, bpi, nrv, fxy) => Ex.Block(new[] { vr, lookup }, Ex.Assign(lookup, ExM.CosSinDeg(theta(bpi))), Ex.Assign(vr, r(bpi)), fxy(Ex.Subtract(Ex.Multiply(c, lookup.x), Ex.Multiply(s, lookup.y)).Mul(vr), Ex.Add(Ex.Multiply(s, lookup.x), Ex.Multiply(c, lookup.y)).Mul(vr)), Expression.Empty() )); }