9 type Ellipse (cx
: float, cy
: float, a
: float, b
: float, alpha
: float) =
14 member this
.Alpha = alpha
15 member this
.Area = a
* b
* Math.PI
17 // Does the ellipse contain the point (x, y)?.
18 member this
.Contains x y
=
19 ((x - cx
) * cos
alpha + (y
- cy
) * sin
alpha) ** 2.0 / a
** 2.0 + ((x - cx
) * sin
alpha - (y
- cy
) * cos
alpha) ** 2.0 / b
** 2.0 <= 1.0
21 // A line is defined as : y = mx + l
22 member this
.CutALine (m
: float) (l
: float) : bool =
23 -2.0 * l
** 2.0 + a
** 2.0 + m
** 2.0 * a
** 2.0 + b
** 2.0 + m
** 2.0 * b
** 2.0 -
24 4.0 * m
* l
* cx
- 2.0 * m
** 2.0 * cx
** 2.0 + 4.0 * l
* cy
+ 4.0 * m
* cx
* cy
-
25 2.0 * cy
** 2.0 + (-1.0 + m
** 2.0) * (a
** 2.0 - b
** 2.0) * cos
(2.0 * alpha) - 2.0 * m
* (a
** 2.0 - b
** 2.0) * sin
(2.0 * alpha) > 0.0
27 member this
.CutAVericalLine (y
: float) : bool =
28 a
** 2.0 + b
** 2.0 - 2.0 * y
** 2.0 + 4.0 * y
* cx
- 2.0 * cx
** 2.0 + a
** 2.0 * cos
(2.0 * alpha) - b
** 2.0 * cos
(2.0 * alpha) > 0.0
30 member this
.CutAnHorizontalLine (x: float) : bool =
31 a
** 2.0 + b
** 2.0 - 2.0 * x ** 2.0 + 4.0 * x * cy
- 2.0 * cy
** 2.0 - a
** 2.0 * cos
(2.0 * alpha) + b
** 2.0 * cos
(2.0 * alpha) > 0.0
33 member this
.isOutside
(width
: float) (height
: float) =
34 this
.Cx <= 0.0 || this.Cx >= width
||
35 this.Cy <= 0.0 || this.Cy >= height
||
36 this.CutAVericalLine 0.0
|| this.CutAVericalLine width ||
37 this.CutAnHorizontalLine 0.0
|| this.CutAnHorizontalLine height
40 type CellClass = HealthyRBC | InfectedRBC | Peculiar
45 elements
: Matrix<byte
> }
48 type Line (a
: float, b
: float) =
52 type PointD (x: float, y
: float) =