Skip to content
Snippets Groups Projects
triangle.h 767 B
Newer Older
Brandon Lai-Cheong's avatar
Brandon Lai-Cheong committed
#pragma once
#include "point.h"
#include "print_triangle.h"
#include <vector>
#include <memory>

// note : Triangle equality is only specified for tests
// points specified in counterclockwise or collinear (line / point) order
Brandon Lai-Cheong's avatar
Brandon Lai-Cheong committed
struct Triangle
{
    Point points[3];
    int mainTriangleId;
    int fragmentId;
    std::shared_ptr<std::vector<int>> neighbours;
    Triangle(const Point &p1, const Point &p2, const Point &p3, int mainTriangleId = 0, const std::vector<int> neighbours = {});
    Triangle(const Point &p1, const Point &p2, const Point &p3, int mainTriangleId, std::shared_ptr<std::vector<int>> neighbours);
    bool pointInTriangle(const Point &p) const;
Brandon Lai-Cheong's avatar
Brandon Lai-Cheong committed
    Point nextPoint(int pointIndex) const;
    bool operator==(const Triangle &other) const;
Brandon Lai-Cheong's avatar
Brandon Lai-Cheong committed
};