         
         var currentTime = getCurrentMillis()
         var elapsedTime = currentTime - startTime
-        //print("Data added to queue in: \(Double(elapsedTime)) (ms)")
         print("Total dataCounter: \(dataCounter)")
         
         let elevPoints: [ElevationPoint] = pointsOnLine(demData, viewpoint: observPt, radius: radius, numQuadrants: numQuadrants);

        } else if (numOfPeers == 3 || numOfPeers >= 5 ) {
            
            // parametric euqation of a circle
            //x = r cos(t)    y = r sin(t)
            if (quadrant2Calc >= 1) {
                
               let perimeter:[(x:Int, y:Int)] = getAnySizedPerimeter(observerX, inY:observerY, radius: radius, numberOfQuadrants: numOfPeers, whichQuadrant: quadrant2Calc)
                
                for (x, y) in perimeter {
                    let pointsInLine:[(x:Int, y:Int)] = findLine(observerX, y1: observerY, x2: x, y2: y)
                    cellsInRadius.appendContentsOf(pointsInLine)
                }
                /*
                // get all the points
                for (var a = (observerX - radius); a <= (observerX + radius); a++) {
                    for (var b:Int = (observerY - radius); b <= (observerY + radius); b++) {
                        cellsInRadius.append((a, Int(b)))
                    }
                }
                
                
                // 360/3 ==> 120 degrees
                var angleInDegrees:Double = 120
                var x: Double = Double(observerX) - Double(radius) * cos(angleInDegrees)
                var y: Double = Double(observerY) - Double(radius) * sin(angleInDegrees)
                print("\tx: \(x)\ty: \(y)")
                
                let pointsInLine:[(x:Int, y:Int)] = findLine(observerX, y1: observerY, x2: Int(x), y2: Int(y))
                print("\t\(pointsInLine)")

                var newDataArray = [[Int]](count:Srtm3.MAX_SIZE, repeatedValue:[Int](count:Srtm3.MAX_SIZE, repeatedValue:0))
                for (x, y) in cellsInRadius {
                    for (x1, y1) in pointsInLine {
                        if ((x >= x1 && x <= (observerX + radius)) && (y >= y1 && y <= (observerY))) {
                            newDataArray[x][y] = 1
                        }
                    }
                }*/
            }
        }
        //print("\t\(cellsInRadius)")
        
        return cellsInRadius
    }
    

        var sweepEventQueue = PriorityQueue(ascending: true, startingValues: [KreveldSweepEventNode(state: dummy, eventType: KreveldEventTypeOther,
            dataElevPoint: observPt, observerViewPt: observPt, angle: calculateAngle(observPt, view: observPt, type: KreveldEventTypeOther), distance: 0.0)])
        
        //  fill the EventList with all points
        var dataCounter: Int = 0
        
        for (x, y) in cellsInRadius {
            dataCounter++
