Draw a circle without floating point arithmetic

Given a radius of a circle, draw the circle without using floating point arithmetic.

Following program uses a simple concept. Let the radius of the circle be r. Consider a square of size (2r+1)*(2r+1) around the circle to be drawn. Now walk through every point inside the square. For every every point (x,y), if (x, y) lies inside the circle (or x^2+ y^2 < r^2), then print it, otherwise print space.

filter_none

edit
close

play_arrow

link
brightness_4
code

// C++ code to demonstrate to draw
// circle without floating 
// point arithmetic
#include <stdio.h>
  
void drawCircle(int r)
{
    // Consider a rectangle of size N*N
    int N = 2*r+1;
  
    int x, y;  // Coordinates inside the rectangle
  
    // Draw a square of size N*N.
    for (int i = 0; i < N; i++)
    {
        for (int j = 0; j < N; j++)
        {
            // Start from the left most corner point
            x = i-r;
            y = j-r;
  
            // If this point is inside the circle, print it
            if (x*x + y*y <= r*r+1 )
                printf(".");
            else // If outside the circle, print space
                printf(" ");
            printf(" ");
        }
        printf("\n");
    }
}
  
// Driver Program to test above function
int  main()
{
    drawCircle(8);
    return 0;
}
chevron_right

filter_none

edit
close

play_arrow

link
brightness_4
code

// Java code to demonstrate to draw
// circle without floating 
// point arithmetic
  
class GFG
{
static void drawCircle(int r)
{
    // Consider a rectangle of size N*N
    int N = 2*r+1;
  
    int x, y; // Coordinates inside the rectangle
  
    // Draw a square of size N*N.
    for (int i = 0; i < N; i++)
    {
        for (int j = 0; j < N; j++)
        {
            // Start from the left most corner point
            x = i-r;
            y = j-r;
  
            // If this point is inside the circle, print it
            if (x*x + y*y <= r*r+1 )
                System.out.print(".");
            else 
                // If outside the circle, print space
                System.out.print(" ");
  
            System.out.print(" ");
        }
  
        System.out.println();
    }
}
  
// Driver Program to test above function
public static void main(String arg[])
{
    drawCircle(8);
}
}
  
// This code is contributed
// by Anant Agarwal.
chevron_right

filter_none

edit
close

play_arrow

link
brightness_4
code

# Python3 code to demonstrate to draw
# circle without floating
# point arithmetic
  
def drawCircle(r):
  
    # Consider a rectangle of size N*N
    N = 2 * r + 1
  
    # Draw a square of size N*N.
    for i in range(N):
        for j in range(N):
  
            # Start from the left most corner point
            x = i - r
            y = j - r
  
            # If this point is inside the circle, 
            # print it
            if x * x + y * y <= r * r + 1:
                print(".", end = " ")
                  
            # If outside the circle, print space
            else:
                print(" ", end = " ")
        print()
  
# Driver Code
if __name__ == "__main__":
    drawCircle(8)
  
# This code is contributed 
# by vibhu4agarwal
chevron_right

filter_none

edit
close

play_arrow

link
brightness_4
code

// C# code to demonstrate to draw 
// circle without floating 
// point arithmetic 
using System;
  
public class GFG{
    static void drawCircle(int r) 
    // Consider a rectangle of size N*N 
    int N = 2*r+1; 
  
    int x, y; // Coordinates inside the rectangle 
  
    // Draw a square of size N*N. 
    for (int i = 0; i < N; i++) 
    
        for (int j = 0; j < N; j++) 
        
            // Start from the left most corner point 
            x = i-r; 
            y = j-r; 
  
            // If this point is inside the circle, print it 
            if (x*x + y*y <= r*r+1 ) 
                Console.Write("."); 
            else
                // If outside the circle, print space 
                Console.Write(" "); 
  
            Console.Write(" "); 
        
  
        Console.WriteLine(); 
    
  
// Driver Program to test above function
    static public void Main (){
        drawCircle(8); 
      
       
    }
// This code is contributed 
// by ajit. 
}
chevron_right

filter_none

edit
close

play_arrow

link
brightness_4
code

<?php
// PHP code to demonstrate to draw circle 
// without floating point arithmetic
  
function drawCircle($r)
{
    // Consider a rectangle of size N*N
    $N = 2 * $r + 1;
  
    $y; // Coordinates inside the rectangle
  
    // Draw a square of size N*N.
    for ($i = 0; $i < $N; $i++)
    {
        for ( $j = 0; $j < $N; $j++)
        {
            // Start from the left most
            // corner point
            $x = $i - $r;
            $y = $j - $r;
  
            // If this point is inside the
            // circle, print it
            if ($x * $x + $y * $y <= $r * $r + 1)
                echo (".");
            else // If outside the circle, 
                 // print space
                echo (" ");
            echo (" ");
        }
    echo "\n";
    }
}
  
// Driver Code
drawCircle(8);
  
// This code is contributed by akt_mit
?>
chevron_right


Output:

Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.





Improved By : jit_t, vibhu4agarwal

Article Tags :