VisuTwin Canvas
C++ 3D Engine — Metal Backend
Loading...
Searching...
No Matches
ray.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 <core/math/vector3.h>
6
7namespace visutwin::canvas
8{
13 class Ray
14 {
15 public:
16 Ray();
17 Ray(const Vector3& origin, const Vector3& direction);
18
19 const Vector3& origin() const { return _origin; }
20 Vector3& origin() { return _origin; }
21 const Vector3& direction() const { return _direction; }
22 Vector3& direction() { return _direction; }
23
24 Ray& set(const Vector3& origin, const Vector3& direction);
25 Ray& copy(const Ray& src);
26 [[nodiscard]] Ray clone() const;
27
28 private:
29 Vector3 _origin;
30 Vector3 _direction;
31 };
32}
Infinite ray defined by origin and direction for raycasting and picking.
Definition ray.h:14
Ray & set(const Vector3 &origin, const Vector3 &direction)
Definition ray.cpp:18
Vector3 & origin()
Definition ray.h:20
Ray clone() const
Definition ray.cpp:30
Ray & copy(const Ray &src)
Definition ray.cpp:25
const Vector3 & origin() const
Definition ray.h:19
const Vector3 & direction() const
Definition ray.h:21
Vector3 & direction()
Definition ray.h:22
3D vector for positions, directions, and normals with multi-backend SIMD acceleration.
Definition vector3.h:29