19 std::array<double, 3> _sides;
21 std::array<double, 3> _angles;
23 double _area, _perimeter;
32 if (a <= 0.0 || b <= 0.0) {
33 throw std::domain_error(__func__);
35 const double c = std::hypot(a, b);
37 _angles = { asin(a / c), asin(b / c), 0.5 *
Math::PI };
39 _perimeter = a + b +
c;
52 inline const auto &
sides()
const {
return _sides; }
58 inline auto side(
Idx idx)
const {
return _sides.at(idx); }
64 inline const auto &
angles()
const {
return _angles; }
70 inline auto angle(
Idx idx)
const {
return _angles.at(idx); }
76 inline double area()
const {
return _area; }
82 inline double perimeter()
const {
return _perimeter; }
92 os <<
"{" << t.
side(Idx::a) <<
",";
93 os << t.
side(Idx::b) <<
",";
94 os << t.
side(Idx::c) <<
"}" << std::endl;
95 os <<
"{" << t.
angle(Idx::a) <<
",";
96 os << t.
angle(Idx::b) <<
",";
97 os << t.
angle(Idx::c) <<
"}" << std::endl;
98 os <<
"{" << t.
area() <<
"," 110 Triangle tr0{ 1, 2 };
114 std::cout <<
"-------------------------------\n";
const auto & sides() const
sides
Idx
The Idx enum Zugriff auf die Seiten und Winkel des Dreiecks per Index (Aufzählungstyp) ...
auto side(Idx idx) const
side Länge einer Seite
double perimeter() const
perimeter
RightTriangle(double a, double b)
RightTriangle Konstruktor.
The RightTriangle Klasse für ein rechtwinkliges Dreieck.
static constexpr double PI
auto angle(Idx idx) const
angle lese einen Winkel
friend std::ostream & operator<<(std::ostream &os, const RightTriangle &t)
operator << Ausgabe der Daten eines Dreiecks
void ex1()
ex1 Beispiel Ausgabe der Daten für ein rechtwinkliges Dreieck
const auto & angles() const
angles