RayZaler 0.1
The free opto-mechanical simulation framework
TripodFrame.h
1//
2// Copyright (c) 2024 Gonzalo José Carracedo Carballal
3//
4// This program is free software: you can redistribute it and/or modify
5// it under the terms of the GNU Lesser General Public License as
6// published by the Free Software Foundation, either version 3 of the
7// License, or (at your option) any later version.
8//
9// This program is distributed in the hope that it will be useful, but
10// WITHOUT ANY WARRANTY; without even the implied warranty of
11// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12// GNU Lesser General Public License for more details.
13//
14// You should have received a copy of the GNU Lesser General Public
15// License along with this program. If not, see
16// <http://www.gnu.org/licenses/>
17//
18
19#ifndef TRIPODFRAME_H
20#define TRIPODFRAME_H
21
22#include <ReferenceFrame.h>
23
24namespace RZ {
25 class TripodFrame : public ReferenceFrame {
26
27 Vec3 m_center;
28 Matrix3 m_R;
29
30 // Parameters
31 Real m_legs[3] = {2e-2, 2e-2, 2e-2};
32 Real m_ta_angle = 70.; // Deg
33 Real m_ta_radius = 42e-3;
34
35 // Calculated
36 Vec3 m_p1;
37 Vec3 m_p2;
38 Vec3 m_p3;
39
40 int m_centerIndex = -1;
41
42 void recalculateData();
43
44 protected:
45 void recalculateFrame();
46
47 public:
49 std::string const &name,
50 ReferenceFrame *parent);
51 virtual ~TripodFrame() override = default;
52
53 void setLeg(int, Real);
54 void setRadius(Real);
55 void setAngle(Real);
56 };
57}
58
59#endif // TRIPODFRAME_H
Definition: ReferenceFrame.h:59
Definition: TripodFrame.h:25
Definition: Matrix.h:48
Definition: Vector.h:66