mirror of
https://github.com/jhasse/poly2tri.git
synced 2024-11-30 01:03:30 +01:00
added DrawMap
This commit is contained in:
parent
0bb55b95b8
commit
fa9488baca
@ -47,6 +47,10 @@ std::vector<Triangle*> CDT::GetTriangles() {
|
||||
return sweep_context_->GetTriangles();
|
||||
}
|
||||
|
||||
std::list<Triangle*> CDT::GetMap() {
|
||||
return sweep_context_->GetMap();
|
||||
}
|
||||
|
||||
CDT::~CDT() {
|
||||
delete sweep_context_;
|
||||
delete sweep_;
|
||||
|
@ -46,6 +46,8 @@ public:
|
||||
void Triangulate();
|
||||
/// Get Delaunay triangles
|
||||
std::vector<Triangle*> GetTriangles();
|
||||
/// Get triangle map
|
||||
std::list<Triangle*> CDT::GetMap();
|
||||
|
||||
private:
|
||||
|
||||
|
@ -21,6 +21,10 @@ std::vector<Triangle*> SweepContext::GetTriangles() {
|
||||
return triangles_;
|
||||
}
|
||||
|
||||
std::list<Triangle*> SweepContext::GetMap() {
|
||||
return map_;
|
||||
}
|
||||
|
||||
void SweepContext::InitTriangulation() {
|
||||
|
||||
double xmax(points_[0]->x), xmin(points_[0]->x);
|
||||
|
@ -83,6 +83,7 @@ public:
|
||||
void MeshClean(Triangle& triangle);
|
||||
|
||||
std::vector<Triangle*> GetTriangles();
|
||||
std::list<Triangle*> GetMap();
|
||||
|
||||
std::vector<Edge*> edge_list;
|
||||
|
||||
|
@ -46,13 +46,17 @@ void Init();
|
||||
void ShutDown(int return_code);
|
||||
void MainLoop(const double zoom);
|
||||
void Draw(const double zoom);
|
||||
void DrawMap(const double zoom);
|
||||
void ConstrainedColor(bool constrain);
|
||||
|
||||
float rotate_y = 0,
|
||||
rotate_z = 0;
|
||||
const float rotations_per_tick = .2;
|
||||
|
||||
/// Constrained triangles
|
||||
vector<Triangle*> triangles;
|
||||
/// Triangle map
|
||||
list<Triangle*> map;
|
||||
|
||||
double StringToDouble(const std::string& s) {
|
||||
std::istringstream i(s);
|
||||
@ -62,6 +66,8 @@ double StringToDouble(const std::string& s) {
|
||||
return x;
|
||||
}
|
||||
|
||||
bool draw_map = false;
|
||||
|
||||
int main(int argc, char* argv[]) {
|
||||
|
||||
if (argc != 3) {
|
||||
@ -124,6 +130,7 @@ int main(int argc, char* argv[]) {
|
||||
cout << "Elapsed time (secs) = " << dt << endl;
|
||||
|
||||
triangles = cdt->GetTriangles();
|
||||
map = cdt->GetMap();
|
||||
|
||||
MainLoop(atof(argv[2]));
|
||||
|
||||
@ -184,7 +191,12 @@ void MainLoop(const double zoom)
|
||||
rotate_z += delta_rotate;
|
||||
|
||||
// Draw the scene
|
||||
if(draw_map) {
|
||||
DrawMap(zoom);
|
||||
} else {
|
||||
Draw(zoom);
|
||||
}
|
||||
|
||||
// swap back and front buffers
|
||||
glfwSwapBuffers();
|
||||
}
|
||||
@ -214,8 +226,8 @@ void ResetZoom(double zoom, double cx, double cy, double width, double height) {
|
||||
|
||||
}
|
||||
|
||||
void Draw(const double zoom)
|
||||
{
|
||||
void Draw(const double zoom) {
|
||||
|
||||
// reset zoom
|
||||
Point center = Point(0, 0);
|
||||
|
||||
@ -250,6 +262,34 @@ void Draw(const double zoom)
|
||||
|
||||
}
|
||||
|
||||
void DrawMap(const double zoom) {
|
||||
|
||||
// reset zoom
|
||||
Point center = Point(0, 0);
|
||||
|
||||
ResetZoom(zoom, center.x, center.y, 800, 600);
|
||||
|
||||
list<Triangle*>::iterator it;
|
||||
for (it = map.begin(); it != map.end(); it++) {
|
||||
|
||||
Triangle& t = **it;
|
||||
Point& a = *t.GetPoint(0);
|
||||
Point& b = *t.GetPoint(1);
|
||||
Point& c = *t.GetPoint(2);
|
||||
|
||||
// Red
|
||||
glColor3f(1, 0, 0);
|
||||
|
||||
glBegin(GL_LINE_LOOP);
|
||||
glVertex2f(a.x, a.y);
|
||||
glVertex2f(b.x, b.y);
|
||||
glVertex2f(c.x, c.y);
|
||||
glEnd();
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void ConstrainedColor(bool constrain) {
|
||||
if(constrain) {
|
||||
// Green
|
||||
|
Loading…
Reference in New Issue
Block a user