PLaSK library
Loading...
Searching...
No Matches
triangle.hpp
Go to the documentation of this file.
1
/*
2
* This file is part of PLaSK (https://plask.app) by Photonics Group at TUL
3
* Copyright (c) 2022 Lodz University of Technology
4
*
5
* This program is free software: you can redistribute it and/or modify
6
* it under the terms of the GNU General Public License as published by
7
* the Free Software Foundation, version 3.
8
*
9
* This program is distributed in the hope that it will be useful,
10
* but WITHOUT ANY WARRANTY; without even the implied warranty of
11
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12
* GNU General Public License for more details.
13
*/
14
#ifndef PLASK__GEOMETRY_TRIANGLE_H
15
#define PLASK__GEOMETRY_TRIANGLE_H
16
21
#include "
leaf.hpp
"
22
23
namespace
plask
{
24
29
struct
PLASK_API
Triangle
:
public
GeometryObjectLeaf
<2> {
30
typedef
GeometryObjectLeaf<2>
BaseClass
;
31
33
typedef
typename
BaseClass::DVec
DVec
;
34
36
typedef
typename
BaseClass::Box
Box
;
37
38
static
const
char
*
NAME
;
39
40
std::string getTypeName()
const override
;
41
47
explicit
Triangle
(
const
DVec
& p0 =
Primitive<2>::ZERO_VEC
,
48
const
DVec
& p1 =
Primitive<2>::ZERO_VEC
,
49
const
shared_ptr<Material>
& material =
shared_ptr<Material>
());
50
56
explicit
Triangle
(
const
DVec
& p0,
57
const
DVec
& p1,
58
shared_ptr<MaterialsDB::MixedCompositionFactory>
materialTopBottom
);
59
60
// explicit Triangle(const DVec& p0, const DVec& p1, const std::unique_ptr<MaterialProvider>& materialProvider);
61
62
Box2D
getBoundingBox()
const override
;
63
64
bool
contains(
const
DVec
& p)
const override
;
65
66
shared_ptr<GeometryObject>
shallowCopy
()
const override
{
return
make_shared<Triangle>
(*
this
); }
67
68
void
addPointsAlongToSet(std::set<double>& points,
69
Primitive<3>::Direction
direction,
70
unsigned
max_steps,
71
double
min_step_size)
const override
;
72
73
void
addLineSegmentsToSet(std::set<
typename
GeometryObjectD<2>::LineSegment
>& segments,
74
unsigned
max_steps,
75
double
min_step_size)
const override
;
76
77
void
writeXMLAttr(
XMLWriter::Element
&
dest_xml_object
,
const
AxisNames
& axes)
const override
;
78
79
DVec
p0
, p1;
80
85
void
setP0
(
const
DVec
&
new_p0
) {
86
p0 =
new_p0
;
87
this->fireChanged(
GeometryObject::Event::EVENT_RESIZE
);
88
}
89
94
void
setP1
(
const
DVec
&
new_p1
) {
95
p1 =
new_p1
;
96
this->fireChanged(
GeometryObject::Event::EVENT_RESIZE
);
97
}
98
};
99
100
}
// namespace plask
101
102
#endif
// PLASK__GEOMETRY_TRIANGLE_H
plask
geometry
triangle.hpp
Generated by
1.9.8