From: Robert D. <rob...@gm...> - 2024-10-10 00:48:38
|
On Wed, Oct 9, 2024 at 2:33 PM Eduardo Ochs <edu...@gm...> wrote: > P(t) := if t <= 6 then [t,4] else [6,10-t]; > draw2d(explicit(P(t)[1], t,0,10), > explicit(P(t)[2], t,0,10)); > draw2d(parametric(P(t)[1], P(t)[2], t,0,10)); > > The first three "draw2d"s work perfectly, but the last one > yields this error: > > draw2d (parametric): non defined variable This is due to a bug in the way that parametric verifies that the first two arguments are functions of the parameter t alone. `listofvars` is called, but listofvars(foo(x)[1]) returns [foo(x)[1]], not [x] as one might hope. I guess this could be interpreted as a bug in listofvars. It is supposed to return [x[1]] for listofvars(x[1] + 2), for example, but maybe if the expression looks like listofvars(foo(x)[1] + 2) it should return [x]. As a workaround, one could say something like P1(t) := if t <= 6 then t else 6; P2(t) := if t <= 6 then 4 else 10 - t; draw2d (parametric (P1(t), P2(t), t, 0, 10)); I know that's less elegant in a way. Robert |