// Copyright 2024 SquareBlock Inc. All Rights Reserved. // Author: tianlei.richard@qq.com (tianlei.richard) #pragma once #include "common.h" #include #include class Triangle { public: Triangle(const Point3d &a, unsigned int idx_a, const Point3d &b, unsigned int idx_b, const Point3d &c, unsigned int idx_c); Triangle(const std::vector &vertices, unsigned int idx_a, unsigned int idx_b, unsigned int idx_c); public: std::vector get_vertex_index() const; std::vector get_vertex_position() const; void set_points(const std::vector &points); public: BBox axis_align_bbox() const; Vector3d normal_vector() const; Vector3d unit_normal_vector() const; private: std::array indices_; std::array vertices_; };