let minX, minY, maxX, maxY = ellipseWindow e
let mutable area = 0
- for y in (if minY < 0 then 0 else minY) .. (if maxY >= height then height - 1 else maxY) do
- for x in (if minX < 0 then 0 else minX) .. (if maxX >= width then width - 1 else maxX) do
+ for y = (if minY < 0 then 0 else minY) to (if maxY >= height then height - 1 else maxY) do
+ for x = (if minX < 0 then 0 else minX) to (if maxX >= width then width - 1 else maxX) do
let p = PointF(float32 x, float32 y)
if pixelOwnedByE p e neighbors
then
let mutable darkStainPixels = 0
let mutable nbElement = 0
let minX, minY, maxX, maxY = ellipseWindow e
- for y in minY .. maxY do
- for x in minX .. maxX do
+ for y = minY to maxY do
+ for x = minX to maxX do
let p = PointF(float32 x, float32 y)
if pixelOwnedByE p e neighbors
then
darkStainPixels <- darkStainPixels + 1
if float darkStainPixels > config.Parameters.maxDarkStainRatio * (float nbElement) then Some e else None)
+
+ // We do not change the state during the process to avoid to have peculiar neighbors which change the behavior of 'pixelOwnedByE'.
|> List.iter (fun e -> e.State <- CellState.Peculiar)
// 5) Define pixels associated to each ellipse and create the cells.
let mutable nbElement = 0
let elements = new Matrix<byte>(maxY - minY + 1, maxX - minX + 1)
- for y in minY .. maxY do
- for x in minX .. maxX do
+ for y = minY to maxY do
+ for x = minX to maxX do
let p = PointF(float32 x, float32 y)
if pixelOwnedByE p e neighbors
then