Open In App

Draw a circle without floating point arithmetic

Last Updated : 16 Dec, 2022
Improve
Improve
Like Article
Like
Save
Share
Report

Given a radius of a circle, draw the circle without using floating point arithmetic.
The 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 point (x,y), if (x, y) lies inside the circle (or x^2+ y^2 < r^2), then print it, otherwise print space.

C++




// C++ program to draw a 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;
}


Java




// Java program to draw a circle without
// floating point arithmetic
 
import java.io.*;
 
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[] args) {
        drawCircle(8);
    }
//This code is contributed by ajit.
}


Python3




# Python3 program to draw a 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 -
            y = j - r
   
            # If this point is inside the circle, print it 
            if (x * x + y * y <= r * r + 1 ) :
                print(".", end = "")
            else :# If outside the circle, print space 
                print(" ", end = "") 
            print(" ", end = "")
             
        print()
             
drawCircle(8)
 
# This code is contributed by divyeshrabadiya07.


C#




// C#  program to draw a 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 Sachin.
}


PHP




<?php
// PHP program to draw a circle without
// floating point arithmetic
 
function drawCircle($r)
{
    // Consider a rectangle
    // of size N*N
    $N = 2 * $r + 1;
 
    // Coordinates inside
    // the rectangle
    $x; $y;
 
    // 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 ".";
             
            // If outside the circle,
            // print space
            else
                echo " ";
            echo " ";
        }
        echo "\n";
    }
}
 
// Driver Code
drawCircle(8);
 
// This code is contributed by aj_36
?>


Javascript




<script>
// javascript program to draw a circle without
// floating point arithmetic
 
    function drawCircle(r) {
        // Consider a rectangle of size N*N
        var N = (2 * r + 1);
 
        var x, 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)
                    document.write(". ");
                else // If outside the circle, print space
                    document.write("  ");
                document.write("  ");
            }
            document.write("<br/>");
        }
    }
 
    // Driver Program to test above function
        drawCircle(8);
 
// This code is contributed by gauravrajput1
</script>


Output

              . . .               
        . . . . . . . . .         
      . . . . . . . . . . .       
    . . . . . . . . . . . . .     
  . . . . . . . . . . . . . . .   
  . . . . . . . . . . . . . . .   
  . . . . . . . . . . . . . . .   
. . . . . . . . . . . . . . . . . 
. . . . . . . . . . . . . . . . . 
. . . . . . . . . . . . . . . . . 
  . . . . . . . . . . . . . . .   
  . . . . . . . . . . . . . . .   
  . . . . . . . . . . . . . . .   
    . . . . . . . . . . . . .     
      . . . . . . . . . . .       
        . . . . . . . . .         
              . . .               

Time complexity: O(N2)
Auxiliary space: O(1)



Like Article
Suggest improvement
Previous
Next
Share your thoughts in the comments

Similar Reads