HikoGUI
Select Version:
main (latest dev)
0.8.1 (latest)
0.8.0
0.7.0
0.6.0
0.5.1
0.5.0
0.4.0
0.3.0
0.2.3
0.2.2
0.2.1
0.2.0
0.1.0
theme-value
theme-tag
text
ranged-int
phrase-mask-chars
new-window-widget
msvs-bug-20230517
msvs-bug-20230503
msvs-bug-20230428
msvc-c1001-20231106
msvc-bug-20230706
msvc-bug-20221214
modules-part1
label-delegate
bug-msvs-20220928
attribute-parser
⚠️ This documents the
main
development branch of HikoGUI. It might differ from release versions.
A low latency retained GUI
Toggle main menu visibility
Main Page
Related Pages
Topics
Namespaces
Namespace List
Namespace Members
All
a
b
c
d
e
f
g
h
i
k
l
m
n
o
p
r
s
t
u
v
w
x
Functions
a
b
c
d
e
f
g
h
i
l
m
n
o
p
r
s
t
u
v
w
Variables
c
d
g
i
l
o
p
r
s
t
x
Typedefs
Enumerations
a
b
c
d
f
g
h
k
l
p
s
t
u
v
w
Concepts
Data Structures
Data Structures
Data Structure Index
Class Hierarchy
Data Fields
All
_
a
b
c
d
e
f
g
h
i
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
~
Functions
_
a
b
c
d
e
f
g
h
i
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
~
Variables
_
a
b
c
d
e
f
g
h
i
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Typedefs
Related Symbols
a
b
c
d
e
f
g
h
i
m
n
o
p
r
s
t
Files
File List
Globals
All
Functions
Macros
•
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Modules
Pages
Concepts
Loading...
Searching...
No Matches
src
hikogui
geometry
line_segment.hpp
Go to the documentation of this file.
1
// Copyright Take Vos 2021.
2
// Distributed under the Boost Software License, Version 1.0.
3
// (See accompanying file LICENSE_1_0.txt or copy at https://www.boost.org/LICENSE_1_0.txt)
4
9
#pragma once
10
11
#include "point3.hpp"
12
#include "vector3.hpp"
13
#include "../macros.hpp"
14
#include <cstddef>
15
#include <exception>
16
#include <compare>
17
18
hi_export_module(hikogui.geometry : line_segment);
19
20
hi_export
namespace
hi
{
21
inline
namespace
v1
{
22
26
class
line_segment
{
27
public
:
28
constexpr
line_segment
(
line_segment
const
&)
noexcept
=
default
;
29
constexpr
line_segment
(
line_segment
&&)
noexcept
=
default
;
30
constexpr
line_segment
&operator=(
line_segment
const
&)
noexcept
=
default
;
31
constexpr
line_segment
&operator=(
line_segment
&&)
noexcept
=
default
;
32
33
[[nodiscard]]
constexpr
line_segment
(point3 p,
vector3
v) noexcept : _p(p), _v(v) {}
34
35
[[nodiscard]]
constexpr
line_segment
(point3 p0, point3 p1) noexcept :
line_segment
(p0, p1 - p0) {}
36
37
[[nodiscard]]
constexpr
point3 origin()
const
noexcept
38
{
39
return
_p;
40
}
41
42
[[nodiscard]]
constexpr
vector3
direction()
const
noexcept
43
{
44
return
_v;
45
}
46
47
[[nodiscard]]
friend
float
hypot(
line_segment
const
&rhs)
noexcept
48
{
49
return
hypot(rhs._v);
50
}
51
52
template
<std::
size_t
I>
53
[[nodiscard]]
constexpr
friend
point3 get(
line_segment
const
&rhs)
noexcept
54
{
55
if
constexpr
(I == 0) {
56
return
rhs._p;
57
}
else
if
constexpr
(I == 1) {
58
return
rhs._p + rhs._v;
59
}
else
{
60
hi_static_no_default();
61
}
62
}
63
64
[[nodiscard]]
constexpr
friend
point3 midpoint(
line_segment
const
&rhs)
noexcept
65
{
66
return
rhs._p + rhs._v * 0.5f;
67
}
68
69
private
:
70
point3 _p;
71
vector3
_v;
72
};
26
class
line_segment
{
…
};
73
74
75
}}
76
hi
The HikoGUI namespace.
Definition
array_generic.hpp:20
v1
DOXYGEN BUG.
Definition
algorithm_misc.hpp:20
hi::line_segment
Line segment.
Definition
line_segment.hpp:26
hi::vector3
A high-level geometric vector Part of the high-level vector, point, mat and color types.
Definition
vector3.hpp:26
Generated on Mon Apr 22 2024 12:51:35 for HikoGUI by
1.10.0