I am trying to generate a Mandelbrot fractal using the draw function to draw CGRects of points included in set. The code doesn't work and I get a circle instead. Any help?

I am a beginner so sorry if I posting this in the wrong place. 

This is the class for my custom view:

```
class View: UIView {

var pointsToDraw = [Point]()

override func draw(_ rect: CGRect) {

    for point in pointsToDraw {

        point.color.setFill()
        UIRectFill(point.coordinates)
    }

}
}

```

this is my complex number struct:

```
struct complexNumber {

var real:Double = 0.0
var imaginary:Double = 0.0

mutating func add(This complexNumberToAdd:complexNumber){

    real += complexNumberToAdd.real
    imaginary += complexNumberToAdd.imaginary

}

mutating func squared() {

    let tempReal = real
    let tempImaginary = imaginary

    real = (tempReal * tempReal) - (tempImaginary * tempImaginary)
    imaginary = 2 * tempReal * tempImaginary

}

func modulus () -> Double {
    return sqrt(real * real + imaginary * imaginary)
}

mutating func iterate (With C:complexNumber) {
    squared()
    add(This: C)
}

}

```

and finally, this is my mandelbrot class:

```
class Mandelbrot {

var points = [Point]()
var xMin:Double, xMax:Double, yMin:Double, yMax:Double
var parentView:View
var Z:complexNumber, C:complexNumber
var maxIterations:Int
var currentIteration:Int

var xPixelValue:Double {
    return (xMax - xMin) / Double(parentView.bounds.maxX)
}

var yPixelValue:Double {
    return (yMax - yMin) / Double(parentView.bounds.maxY)
}

init (InView view:View) {

    xMin = -2.0
    xMax = 2.5
    yMin = -2
    yMax = 2.5
    Z = complexNumber()
    C = complexNumber()
    maxIterations = 50
    currentIteration = 0

    parentView = view

    for i in 1...Int(parentView.bounds.maxX) {

        for j in 1...Int(parentView.bounds.maxY) {

            Z.real = 0
            Z.imaginary = 0
            currentIteration = 0

            C.real = xMin + (Double(i) * xPixelValue)
            C.imaginary = yMax - (Double(j) * yPixelValue)

            while (currentIteration < maxIterations)
            {
                Z.iterate(With: C)
                currentIteration += 1

                if Z.modulus() > 2 {
                    break
                }

                else
                {
                    points.append(Point(PointX: i, PointY: j))
                }

            }
        }
    }

    dispatchPoints()

}

func dispatchPoints() {

    parentView.pointsToDraw.removeAll()

    for point in points {
        parentView.pointsToDraw.append(point)
    }
}

}

```

Thank you, 
Mehdi