## Cheating a little bit, and teasing a shaded surface, out of a Computer Algebra System.

One of the subjects which I posted about some time ago was, how easy it is for a Computer Algebra System – a CAS – to output a single variable, in order to colour an Iso-Surface, and how hard it is in contrast, to output a normal vector, from whatever Geometry Shader computes the Iso-Surface, such that this normal vector can be used to shade the surface, in a later Fragment Shader invocation.

What needs to be done in ‘3D Game Design’ and (other) ‘CGI’, is essentially that.

But, given that a CAS can be used both, to plot a 3D surface, as well as, to define what the colour-range of this surface is supposed to be, a bit of a trick can be used, to bypass the need actually to compute a normal vector, but to achieve an equivalent result. And this posting will begin with an example which is slightly simpler, than what my earlier posting had assumed. Iso-Surfaces tend to smack of ‘implicit’ functions, while this example is going to start with an ‘explicit’ plot, in which (X) and (Y) are parameters of the function, but where it was already easy to achieve, that a single (Z) value results, such that (X, Y, Z) are in fact the coordinates plotted.

Because we have a Computer Algebra System in the first place, for continuous functions, it’s easy to compute the derivative with respect to one of the parameters. That derivative can be used, just to modulate the brightness of the surface. The simplest example is shown blow:

(Updated 7/10/2020, 6h10… )

## The closest that I can come, to making Maxima On Android display an animation.

Maxima On Android really wasn’t designed, either to allow interactive rotation of 3D Plots, or, to allow animated, 3D Plots. But let us put ourselves in the position that it is the chosen Computer Algebra System, and that the user wants ‘interactive 3D Plots’.

What Maxima On Android has to offer natively, is a 3D Plot, but displayed from a static perspective. In fact, I’ve read that the way it works is, that Maxima On Android plots to a PNG File, and then displays the PNG File in a secondary window, from which the user may switch back to the CAS window / worksheet.

Various efforts I’ve made have failed, to get the viewing window for the plots to animate. One possible reason could be, the possibility that Maxima On Android actually waits, until the entire worksheet has finished executing, before allowing the viewing window to be opened. Repeated, iterative plotting locks up the app, until the loop has finished, at which point, at best, the last version of the plot can be viewed.

The following was the best that I could do, to get this port of Maxima to plot interactively:


i: 0$Frame():= block ( plot3d(sin(%pi*(x+(i/4)))*cos(%pi*y), [x, -1, 1], [y, -1, 1]), i: i + 1 )$

Frame()\$



This Maxima Batch File / Script requires some participation by the user, to work. The user may Load it from within the Maxima On Android GUI, after which the first iteration of the plot will display. After that, the user needs to tap on the ‘Back’ arrow, to get back to the worksheet. Then, tapping on the last ‘Frame()’ command, will cause it to display in the command field. Then, tapping ‘Enter’ will cause the next iteration of the plot to appear.

From the second point on, in the process, that the user has tapped on the ‘Back’ arrow, the command ‘Frame()’ should still be in the command field. Therefore, ‘Enter’ can just be tapped again, and the process repeated as often as desired.

(Updated 7/05/2020, 10h50… )