# Question:How to color an odeplot given a function of some dependent variable?

## Question:How to color an odeplot given a function of some dependent variable?

Maple 2015

I solve numerically a DAE system whose independent variable is named t and the dependent variables are d[1](t), ..., d[n](t).
I would like to to 2D or 3D plots of the solutions and color the resulting curve using a function f(...) of the remaining dependent variables.

Here is a simple example.

 > restart
 > with(plots):
 (1)
 > sys := {    diff(x(t), t) = v(t)   ,diff(v(t), t) = cos(t)   ,x(0) = -1   ,v(0) = 0   ,px(t) = piecewise(x(t) >=0, 1, -1)   ,pv(t) = piecewise(v(t) >=0, 1, -1) }: sol := dsolve(sys, numeric):
 > odeplot(sol, [t, x(t), v(t)], t=0..4*Pi)
 > # I would like to color this space curve depending on the signs of x(t) and y(t) # # for instance, f being a "color function" f := proc(s)   local a, b:   if s::numeric then     a := round(eval(px(t), sol(s))):     b := round(eval(pv(t), sol(s))):     return piecewise(a+b = 2, "Green", a = 1, "Red", b = 1, "Blue", "Gold")   end if: end proc: SOL := proc(s)   if s::numeric then     eval([t, x(t), v(t)], sol(s))   end if: end proc: # I would like to make something like this to work plot3d(SOL(s), s=0..4*Pi, colorfunc=f(s)):  #... which generates a void plot
 > # In some sense a continuous version of this opts := symbol=solidbox, symbolsize=20: display( seq(pointplot3d({SOL(s)}, opts, color=f(s)), s in [seq](0..6, 0.1)) );
 >