VisuTwin Canvas
C++ 3D Engine — Metal Backend
Loading...
Searching...
No Matches
tri.h
Go to the documentation of this file.
1// SPDX-License-Identifier: Apache-2.0
2// Copyright 2025-2026 Arnis Lektauers
3#pragma once
4
5#include <string>
6
7#include <core/math/vector3.h>
8#include <core/shape/ray.h>
9
10namespace visutwin::canvas
11{
12 class Tri
13 {
14 public:
15 Tri();
16 Tri(const Vector3& v0, const Vector3& v1, const Vector3& v2);
17
18 const Vector3& v0() const { return _v0; }
19 Vector3& v0() { return _v0; }
20 const Vector3& v1() const { return _v1; }
21 Vector3& v1() { return _v1; }
22 const Vector3& v2() const { return _v2; }
23 Vector3& v2() { return _v2; }
24
25 Tri& set(const Vector3& v0, const Vector3& v1, const Vector3& v2);
26 bool intersectsRay(const Ray& ray, Vector3* point = nullptr) const;
27 [[nodiscard]] std::string toString() const;
28
29 private:
30 Vector3 _v0;
31 Vector3 _v1;
32 Vector3 _v2;
33 };
34}
Infinite ray defined by origin and direction for raycasting and picking.
Definition ray.h:14
bool intersectsRay(const Ray &ray, Vector3 *point=nullptr) const
Definition tri.cpp:33
const Vector3 & v2() const
Definition tri.h:22
Vector3 & v2()
Definition tri.h:23
std::string toString() const
Definition tri.cpp:66
Vector3 & v0()
Definition tri.h:19
Vector3 & v1()
Definition tri.h:21
const Vector3 & v0() const
Definition tri.h:18
Tri & set(const Vector3 &v0, const Vector3 &v1, const Vector3 &v2)
Definition tri.cpp:25
const Vector3 & v1() const
Definition tri.h:20
3D vector for positions, directions, and normals with multi-backend SIMD acceleration.
Definition vector3.h:29