Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
100.00% covered (success)
100.00%
7 / 7
100.00% covered (success)
100.00%
7 / 7
CRAP
100.00% covered (success)
100.00%
1 / 1
Trapezoid
100.00% covered (success)
100.00%
7 / 7
100.00% covered (success)
100.00%
7 / 7
7
100.00% covered (success)
100.00%
1 / 1
 getSurface
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 getPerimeter
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 getHeight
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 getA
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 getB
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 getC
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 getD
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
1<?php
2/**
3 * Jingga
4 *
5 * PHP Version 8.1
6 *
7 * @package   phpOMS\Math\Geometry\Shape\D2
8 * @copyright Dennis Eichhorn
9 * @license   OMS License 2.0
10 * @version   1.0.0
11 * @link      https://jingga.app
12 */
13declare(strict_types=1);
14
15namespace phpOMS\Math\Geometry\Shape\D2;
16
17/**
18 * Trapezoid shape.
19 *
20 * @package phpOMS\Math\Geometry\Shape\D2
21 * @license OMS License 2.0
22 * @link    https://jingga.app
23 * @since   1.0.0
24 */
25final class Trapezoid implements D2ShapeInterface
26{
27    /**
28     * Area
29     *
30     *       --- a ----
31     *     /  |        \
32     *    c   h         d
33     *  /     |          \
34     * -------- b ---------
35     *
36     * @param float $a Edge
37     * @param float $b Edge
38     * @param float $h Height
39     *
40     * @return float
41     *
42     * @since 1.0.0
43     */
44    public static function getSurface(float $a, float $b, float $h) : float
45    {
46        return ($a + $b) / 2 * $h;
47    }
48
49    /**
50     * Perimeter
51     *
52     *       --- a ----
53     *     /  |        \
54     *    c   h         d
55     *  /     |          \
56     * -------- b ---------
57     *
58     * @param float $a Edge
59     * @param float $b Edge
60     * @param float $c Edge
61     * @param float $d Edge
62     *
63     * @return float
64     *
65     * @since 1.0.0
66     */
67    public static function getPerimeter(float $a, float $b, float $c, float $d) : float
68    {
69        return $a + $b + $c + $d;
70    }
71
72    /**
73     * Height
74     *
75     *       --- a ----
76     *     /  |        \
77     *    c   h         d
78     *  /     |          \
79     * -------- b ---------
80     *
81     * @param float $area Area
82     * @param float $a    Edge
83     * @param float $b    Edge
84     *
85     * @return float
86     *
87     * @since 1.0.0
88     */
89    public static function getHeight(float $area, float $a, float $b) : float
90    {
91        return 2 * $area / ($a + $b);
92    }
93
94    /**
95     * A
96     *
97     *       --- a ----
98     *     /  |        \
99     *    c   h         d
100     *  /     |          \
101     * -------- b ---------
102     *
103     * @param float $area Area
104     * @param float $h    Height
105     * @param float $b    Edge
106     *
107     * @return float
108     *
109     * @since 1.0.0
110     */
111    public static function getA(float $area, float $h, float $b) : float
112    {
113        return 2 * $area / $h - $b;
114    }
115
116    /**
117     * B
118     *
119     *       --- a ----
120     *     /  |        \
121     *    c   h         d
122     *  /     |          \
123     * -------- b ---------
124     *
125     * @param float $area Area
126     * @param float $h    Height
127     * @param float $a    Edge
128     *
129     * @return float
130     *
131     * @since 1.0.0
132     */
133    public static function getB(float $area, float $h, float $a) : float
134    {
135        return 2 * $area / $h - $a;
136    }
137
138    /**
139     * C
140     *
141     *       --- a ----
142     *     /  |        \
143     *    c   h         d
144     *  /     |          \
145     * -------- b ---------
146     *
147     * @param float $perimeter Perimeter
148     * @param float $a         Edge
149     * @param float $b         Edge
150     * @param float $d         Edge
151     *
152     * @return float
153     *
154     * @since 1.0.0
155     */
156    public static function getC(float $perimeter, float $a, float $b, float $d) : float
157    {
158        return $perimeter - $a - $b - $d;
159    }
160
161    /**
162     * D
163     *
164     *       --- a ----
165     *     /  |        \
166     *    c   h         d
167     *  /     |          \
168     * -------- b ---------
169     *
170     * @param float $perimeter Perimeter
171     * @param float $a         Edge
172     * @param float $b         Edge
173     * @param float $c         Edge
174     *
175     * @return float
176     *
177     * @since 1.0.0
178     */
179    public static function getD(float $perimeter, float $a, float $b, float $c) : float
180    {
181        return $perimeter - $a - $b - $c;
182    }
183}