X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=lsystem3d%2Fsrc%2Fmodel.h;fp=lsystem3d%2Fsrc%2Fmodel.h;h=d7ebf26c2b20f63de244e9242824e9de7124e53d;hb=e5247a3b88c449937af08f46afc271afda2954a2;hp=0000000000000000000000000000000000000000;hpb=c48a55e9e62ed7a9d46e3c6a53faae4bc05856e5;p=lsystem3d.git diff --git a/lsystem3d/src/model.h b/lsystem3d/src/model.h new file mode 100644 index 0000000..d7ebf26 --- /dev/null +++ b/lsystem3d/src/model.h @@ -0,0 +1,103 @@ +// Copyright (C) 2006 Erik Dahlberg +// +// This file is part of LSystem3d. +// +// LSystem3D is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// LSystem3D is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with LSystem3D; if not, write to the Free Software +// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + + + +#ifndef MODEL_H +#define MODEL_H + +#include + + + +/** + * The generated l-system model + * TODO: inheritance, i.e. Model<-OpenGLModel/WireModel/...? + */ +class Model +{ +public: + /** + * Constructor + */ + Model(); + + /** + * Destructor + */ + ~Model(); + + /** + * Connect two points + * @param diameter diameter of segment + * @param x1 x start point + * @param y1 y start point + * @param z1 z start point + * @param x2 x end point + * @param y2 y end point + * @param z2 z end point + */ + void segment(double diameter, double x1, double y1, double z1, double x2, double y2, double z2); + + /** + * Draw model to screen + */ + void draw(); + + /** + * Clear the model + */ + void clear(); + + /** + * Start recording of drawing operations + */ + void begin(); + + /** + * Stop recording of drawing operations + */ + void end(); + + /** + * Begin creation of a filled surface + */ + void fillBegin(); + + /** + * End creation of a filled surface + */ + void fillEnd(); + + /** + * Create one vertex in the filled surface + * @param x x-coordinate + * @param y y-coordinate + * @param z z-coordinate + */ + void point(double x, double y, double z); + +protected: + + GLuint _displayList; // all drawing operations +}; + + + +#endif