ProtoTracer  1.0
Real-time 3D rendering and animation engine
Loading...
Searching...
No Matches
IStaticTriangleGroup.h
Go to the documentation of this file.
1/**
2 * @file IStaticTriangleGroup.h
3 * @brief Defines the IStaticTriangleGroup interface for managing a collection of static 3D triangles.
4 *
5 * This interface provides methods to access and manipulate static triangle data, including vertices,
6 * UV coordinates, and indices. It is useful for rendering, geometric calculations, and other 3D applications.
7 *
8 * @date 22/12/2024
9 * @version 1.0
10 * @author Coela Can't
11 */
12
13#pragma once
14
15#include "Triangle3D.h"
16#include "IndexGroup.h"
17
18/**
19 * @class IStaticTriangleGroup
20 * @brief Interface for managing a static group of 3D triangles and associated data.
21 */
23public:
24 /**
25 * @brief Checks if the triangle group has UV coordinates.
26 * @return True if UV coordinates are present, false otherwise.
27 */
28 virtual const bool HasUV() = 0;
29
30 /**
31 * @brief Retrieves the index group for the triangle group.
32 * @return A pointer to the IndexGroup array.
33 */
34 virtual const IndexGroup* GetIndexGroup() = 0;
35
36 /**
37 * @brief Retrieves the total number of triangles in the group.
38 * @return The number of triangles.
39 */
40 virtual const int GetTriangleCount() = 0;
41
42 /**
43 * @brief Retrieves the array of vertices in the triangle group.
44 * @return A pointer to the array of Vector3D vertices.
45 */
46 virtual const Vector3D* GetVertices() = 0;
47
48 /**
49 * @brief Retrieves the total number of vertices in the group.
50 * @return The number of vertices.
51 */
52 virtual const int GetVertexCount() = 0;
53
54 /**
55 * @brief Retrieves the array of Triangle3D objects representing the triangles.
56 * @return A pointer to the array of Triangle3D objects.
57 */
58 virtual Triangle3D* GetTriangles() = 0;
59
60 /**
61 * @brief Retrieves the array of UV vertices in the triangle group.
62 * @return A pointer to the array of Vector2D UV vertices.
63 */
64 virtual const Vector2D* GetUVVertices() = 0;
65
66 /**
67 * @brief Retrieves the index group for the UV vertices.
68 * @return A pointer to the IndexGroup array for UV vertices.
69 */
70 virtual const IndexGroup* GetUVIndexGroup() = 0;
71};
Defines the IndexGroup class for handling a group of three unsigned integer indices.
Defines the Triangle3D class for representing and manipulating 3D triangles.
Interface for managing a static group of 3D triangles and associated data.
virtual const int GetTriangleCount()=0
Retrieves the total number of triangles in the group.
virtual const bool HasUV()=0
Checks if the triangle group has UV coordinates.
virtual const IndexGroup * GetIndexGroup()=0
Retrieves the index group for the triangle group.
virtual const int GetVertexCount()=0
Retrieves the total number of vertices in the group.
virtual Triangle3D * GetTriangles()=0
Retrieves the array of Triangle3D objects representing the triangles.
virtual const Vector2D * GetUVVertices()=0
Retrieves the array of UV vertices in the triangle group.
virtual const Vector3D * GetVertices()=0
Retrieves the array of vertices in the triangle group.
virtual const IndexGroup * GetUVIndexGroup()=0
Retrieves the index group for the UV vertices.
Represents a group of three unsigned integer indices.
Definition IndexGroup.h:22
Represents a 3D triangle with support for UV mapping and ray intersection testing.
Definition Triangle3D.h:22
Represents a 2D vector (X, Y) and provides methods for vector arithmetic.
Definition Vector2D.h:27
Represents a 3D vector (X, Y, Z) and provides methods for vector arithmetic.
Definition Vector3D.h:26