Superficie



Superficie (surface) is a small program that allows to visualize 3D surfaces, and to have certain interaction with them. It allows to rotate, to move away, to show illumination, etc. on the surface at issue.

It works like this: You generate the data in the program of your selection, like Mathematica, Mupad, Octave, some interpreter like scheme, or plain C. Then you start superficie and read the data (from a file or a pipe).

Look in the 'mathematica/' folder for the mathematica functions that you need to generate the data [There is a package now]. It would not have to be very difficult to write the routines that do the same in any other language, which I plane to do in the next release, perhaps. I'm especially interested in Mupad and Yacas [update: Look in the 'yacas/' folder].

In order to compile it you need OpenGL (Mesa is OK) , gtk+, Gnome, gtkglarea, imlib. If you don't have any or these, there is also a reduced version that only needs fltk and glib.

We are working in Linux, but thanks to autoconf you should not have problems in some other UNIX.

By the way, superficie is completely free (GPL). If you use it, the only thing that we requested is that you send your printings, commentaries, critics to us (constructive, please), and reports of errors.
 

News

[4 august 99] I think making a hierarchical model will be harder than I expected. Perhaps I should add some other features first, like integrating it with yacas. With the new version (0.6.5) you can use yacas to obtain some graphics.

[21 june 99] I've changed for n-th time the internal structure. This time a GNode tree is used. Also I've been struggling with OpenGL; my goal before v0.7 is to have a full hierarchical model.

I really hope one day there will be better gtk documentation. Having to read source code to understand what a function does is very very time consuming (at least for me).

[6 June 99] Superficie 0.6 is out. Almost all non-gui routines are now in a c++ library. In addition to the gnome version, I've made a small fltk program;

[17 may 99] Supeficie 0.5 is here. Bug fixes, code reorganization, etc. I've decide this will be the last C release. Next releases will be developed with wxWindows and/or fltk. I would like to work very close to Yacas.

[1 january '99] Here is a snapshot, it doesn't contain radical changes, but is worth the upgrade.

[30 december]  superficie is now using autoconf. Also, i've just finished the switch to gnome-0.90.
The current version is 0.4b

This version only fixes the ElectricFence related bug. So, superficie is almost usable.

There are several changes since v0.3, and i must say it is somewhat broken. You must link libfence, for superficie to work properly. I hope solve the problem in a few days

[17 october] This version includes support for several object types, including polygons, lines, and compound objects.

[30/sept/98] I have been busy with school this days :(, but hope to get back coding next week.

[20/sept/98] Well, things are going smooth now. Last night i got multiple objects in one "scene" working. You can have each object rotating independently of the others, and set some properties for each. Also, i've added support for different class of objects. The format that exist today became "MESH". Later i'll add "LINE", "POINT", and "POLYGON". Oh, i made a mathematica package (superficie.m), which makes really easy to display parametric plots with superficie within mathematica (the syntax is identical to ParametricPlot3D[]). My intention is to incorporate the types mentioned above into superficie, and let modules handle other formats, like geomview's (some of them, at least).
 
 

Download

superficie-0.6.5.tar.gz (762k)

superficie-0.6.5-1.i386.rpm (648k) This package has only the fltk static binary and the examples. (glibc-2.1)
 

Development

Right now, i'm learning gtk/gnome/opengl while coding superficie. This fact makes the development a little slow, but I hope things become faster as I progress in this things, and better documentation be available. At this moment the people who are programming are:

As I said before, I am working with Linux, GCC (egcs), Mesa, gtk, gnome, etc.

 
 

History

Why to write a program of this type, if already exist Geomview, and MathGL3d, for example?

Well, geomview is an excellent program that already has several years of development. In spite of it, it is not exactly what i wanted. In the first place, geomview uses Motif. Luckily lesstif exists, that at least allows to compile it.

In fact, my original plan was to port it to gtk. I was reviewing the code a couple of hours, and I realized that the program was of a greater complexity than I had in mind. What I wanted  was a simple and efficient program. So I decided to begin from zero.

MathGL3d also seems a nice program, but it's too tied with mathematica (i think), is written with glut and last time i checked, it does not allowed arbitrary rotations. mhhh...

And of course the main motivation is to learn, and to do something useful.
 
 

Future

The plans that we have for superficie are:

If your program needs 3D output, perhaps superficie is (will be) the answer.

 
 

Collaborate

 If it interests to you to collaborate in the development, or you have some question or commentary, you do not doubt in writing to me.

Help needed! I really would like that superficie could be used from Octave, or another free system. If you are interested in this, please send me message.

Assistance with translating and checking this page will be greatly appreciated.
 
 
 

Links


 

last modified August 7, 1999 by Juan Pablo Romero