VisuTwin Canvas
C++ 3D Engine — Metal Backend
Loading...
Searching...
No Matches
plane.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#include <core/shape/ray.h>
7
8namespace visutwin::canvas
9{
10 class Plane
11 {
12 public:
13 Plane();
14 Plane(const Vector3& normal, float distance);
15
16 const Vector3& normal() const { return _normal; }
17 void setNormal(const Vector3& normal) { _normal = normal; }
18 float distance() const { return _distance; }
19 void setDistance(float distance) { _distance = distance; }
20
21 Plane& copy(const Plane& src);
22 [[nodiscard]] Plane clone() const;
23 bool intersectsLine(const Vector3& start, const Vector3& end, Vector3* point = nullptr) const;
24 bool intersectsRay(const Ray& ray, Vector3* point = nullptr) const;
26 Plane& set(float nx, float ny, float nz, float d);
27 Plane& setFromPointNormal(const Vector3& point, const Vector3& normal);
28
29 private:
30 Vector3 _normal;
31 float _distance;
32 };
33}
float distance() const
Definition plane.h:18
const Vector3 & normal() const
Definition plane.h:16
bool intersectsLine(const Vector3 &start, const Vector3 &end, Vector3 *point=nullptr) const
Definition plane.cpp:30
void setDistance(float distance)
Definition plane.h:19
Plane clone() const
Definition plane.cpp:25
Plane & setFromPointNormal(const Vector3 &point, const Vector3 &normal)
Definition plane.cpp:71
bool intersectsRay(const Ray &ray, Vector3 *point=nullptr) const
Definition plane.cpp:42
Plane & set(float nx, float ny, float nz, float d)
Definition plane.cpp:64
void setNormal(const Vector3 &normal)
Definition plane.h:17
Plane & copy(const Plane &src)
Definition plane.cpp:18
Infinite ray defined by origin and direction for raycasting and picking.
Definition ray.h:14
3D vector for positions, directions, and normals with multi-backend SIMD acceleration.
Definition vector3.h:29