00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016 #ifndef _FACE_H
00017 #define _FACE_H
00018
00019 #include "node_fwd_dcl.h"
00020
00021 namespace euler
00022 {
00023 class face_t
00024 {
00025 public:
00026 id_t id;
00027 solid_t *s;
00028 loop_t *l;
00029 face_t *pre, *nxt;
00030 vector_t eq;
00031
00032 public:
00033
00034
00035
00036
00037 edge_t* arc(edge_t* e, point_t const& cntr, float r, float theta1, float theta2, int segs=8);
00038
00039
00040 loop_t* kemr(edge_t* e);
00041 edge_t* mekr(edge_t * e1, edge_t * e2);
00042
00043 loop_t* new_loop();
00044 loop_t* new_loop(vertex_t *v);
00045 void del_loop(loop_t* lp);
00046
00047 private:
00048 friend class solid_t;
00049 face_t(solid_t* s) : id(cur_id++), s(s), l(0), pre(0), nxt(s->f) { }
00050 ~face_t();
00051
00052 static id_t cur_id;
00053 };
00054
00055
00056 }
00057
00058 #endif