Open In App

Draw a circle without floating point arithmetic

Last Updated : 16 Dec, 2022
Comments
Improve
Suggest changes
Like Article
Like
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 - r  
            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(".&nbsp;");
                else // If outside the circle, print space
                    document.write("&nbsp;&nbsp;");
                document.write("&nbsp;&nbsp;");
            }
            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)


Next Article
Practice Tags :

Similar Reads