MinusculeRender/src/triangle.h

31 lines
834 B
C
Raw Normal View History

2024-03-22 20:12:09 +08:00
// Copyright 2024 SquareBlock Inc. All Rights Reserved.
2024-03-01 21:31:47 +08:00
// Author: tianlei.richard@qq.com (tianlei.richard)
#pragma once
2024-03-05 21:43:08 +08:00
#include "common.h"
2024-03-01 21:31:47 +08:00
#include <array>
#include <vector>
2024-03-01 21:31:47 +08:00
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);
2024-03-29 18:09:16 +08:00
Triangle(const std::vector<Vertex> &vertices, unsigned int idx_a,
unsigned int idx_b, unsigned int idx_c);
2024-03-01 21:31:47 +08:00
public:
std::vector<unsigned int> get_vertex_index() const;
std::vector<Point3d> get_vertex_position() const;
void set_points(const std::vector<Point3d> &points);
2024-03-05 21:43:08 +08:00
2024-03-01 21:31:47 +08:00
public:
2024-03-05 21:43:08 +08:00
BBox axis_align_bbox() const;
Vector3d normal_vector() const;
2024-03-29 18:09:16 +08:00
Vector3d unit_normal_vector() const;
2024-03-01 21:31:47 +08:00
private:
std::array<unsigned int, 3> indices_;
std::array<Point3d, 3> vertices_;
2024-03-01 21:31:47 +08:00
};