00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef PAPYRUSSIERPINSKI_H
00020 #define PAPYRUSSIERPINSKI_H
00021
00022 #include <papyrus/polyline.h>
00023
00024 namespace Papyrus
00025 {
00026
00030 class Sierpinski : public Polyline
00031 {
00032 public:
00033 typedef PapyrusSmartPointer<Sierpinski> pointer;
00034
00035 Sierpinski(unsigned level=0, double size=0.0);
00036
00037 static Sierpinski::pointer create(unsigned level=0, double size=0.0);
00038
00039 ~Sierpinski();
00040
00041 unsigned level();
00042
00043 void set_level(unsigned level);
00044
00045 double size();
00046
00047 void set_size(double size);
00048
00049 PAPYRUS_CLASS_NAME("Sierpinski");
00050
00051 PAPYRUS_CLONE_METHOD( Sierpinski );
00052
00053 protected:
00054 unsigned m_level;
00055 double m_size;
00056 double m_lsize;
00057
00058 void create_vertices();
00059
00060 void sierpinski_a(unsigned level);
00061
00062 void sierpinski_b(unsigned level);
00063
00064 void sierpinski_c(unsigned level);
00065
00066 void sierpinski_d(unsigned level);
00067
00068 };
00069
00070 }
00071
00072 #endif