openscad/src/polyset.h

49 lines
1.2 KiB
C
Raw Normal View History

#ifndef POLYSET_H_
#define POLYSET_H_
#include "Geometry.h"
2011-10-01 03:36:30 +04:00
#include "system-gl.h"
#include "linalg.h"
#include "renderer.h"
#include "Polygon2d.h"
#include <vector>
#include <string>
class PolySet : public Geometry
{
public:
typedef std::vector<Vector3d> Polygon;
std::vector<Polygon> polygons;
bool is2d;
PolySet();
PolySet(const Polygon2d &origin);
virtual ~PolySet();
virtual size_t memsize() const;
virtual BoundingBox getBoundingBox() const;
virtual std::string dump() const;
virtual unsigned int getDimension() const { return this->is2d ? 2 : 3; }
2011-09-02 00:42:46 +04:00
bool empty() const { return polygons.size() == 0; }
size_t numPolygons() const { return polygons.size(); }
void append_poly();
void append_vertex(double x, double y, double z = 0.0);
void append_vertex(Vector3d v);
void insert_vertex(double x, double y, double z = 0.0);
void insert_vertex(Vector3d v);
2013-11-02 02:57:36 +04:00
void append(const PolySet &ps);
void render_surface(Renderer::csgmode_e csgmode, const Transform3d &m, GLint *shaderinfo = NULL) const;
void render_edges(Renderer::csgmode_e csgmode) const;
void transform(const Transform3d &mat);
2013-12-17 10:35:12 +04:00
void resize(Vector3d newsize, const Eigen::Matrix<bool,3,1> &autosize);
private:
Polygon2d polygon;
};
#endif