Code covered by the BSD License

Chebfun

30 Apr 2009 (Updated 05 Apr 2012)

Numerical computation with functions instead of numbers.

Editor's Notes:

This file was selected as MATLAB Central Pick of the Week

Writing a message in 3D

Writing a message in 3D

Nick Trefethen, November 2010

(Chebfun example fun/Writing3D.m)

The SCRIBBLE command produces a chebfun defined on the domain [-1,1] that takes piecewise linear complex values. For example:

s = scribble('There is no fun like chebfun.');
LW = 'linewidth';
plot(s,'r',LW,2.0)
xlim(1.05*[-1 1]), axis equal, drawnow


The use of complex variables is just a convenience. We could produce the same result with real and imaginary parts. Note that we include 'jumpline','.' to prevent the inclusion of dotted lines connecting one component to the next. (Chebfun has different defaults for plotting gaps in real and complex functions.)

rs = real(s); is = imag(s);
plot(rs,is,'m',LW,2.0,'jumpline','none')
xlim(1.05*[-1 1]), axis equal, drawnow


It's a small step from here to plotting in 3D with the PLOT3 command. Here's an example

plot3(rs,sin(6*rs),is,'b',LW,2.0,'jumpline','none')
axis equal, view(-1.5,6), drawnow


Here is a longer message composed by the British poet Kate McLoughlin. If you execute or publish this m-file, you will see the message circle around.

s = 6*scribble(['There is no fun like chebfun.  ' ...
'Try it and you''ll see.  ' ...
'It does your calculation, ' ...
'and makes a cup of tea!']);
rs = real(s);
plot3(cos(rs),sin(rs),imag(s)+.05*rs,LW,2,'jumpline','none')
axis([-1 1 -1 1 -1 1]), axis off
set(gca,'cameraviewanglemode','manual')
view(-540,20), pause(1)
for j = 1:720, camorbit(1,0), drawnow, end