DDA Line generation Algorithm in Computer Graphics
Last Updated :
11 Sep, 2023
Introduction :
DDA (Digital Differential Analyzer) is a line drawing algorithm used in computer graphics to generate a line segment between two specified endpoints. It is a simple and efficient algorithm that works by using the incremental difference between the x-coordinates and y-coordinates of the two endpoints to plot the line.
The steps involved in DDA line generation algorithm are:
- Input the two endpoints of the line segment, (x1,y1) and (x2,y2).
- Calculate the difference between the x-coordinates and y-coordinates of the endpoints as dx and dy respectively.
- Calculate the slope of the line as m = dy/dx.
- Set the initial point of the line as (x1,y1).
- Loop through the x-coordinates of the line, incrementing by one each time, and calculate the corresponding y-coordinate using the equation y = y1 + m(x - x1).
- Plot the pixel at the calculated (x,y) coordinate.
- Repeat steps 5 and 6 until the endpoint (x2,y2) is reached.
DDA algorithm is relatively easy to implement and is computationally efficient, making it suitable for real-time applications. However, it has some limitations, such as the inability to handle vertical lines and the need for floating-point arithmetic, which can be slow on some systems. Nonetheless, it remains a popular choice for generating lines in computer graphics.
In any 2-Dimensional plane, if we connect two points (x0, y0) and (x1, y1), we get a line segment. But in the case of computer graphics, we can not directly join any two coordinate points, for that, we should calculate intermediate points' coordinates and put a pixel for each intermediate point, of the desired color with the help of functions like putpixel(x, y, K) in C, where (x,y) is our co-ordinate and K denotes some color.
Examples:Â
Input: For line segment between (2, 2) and (6, 6) :
Output: we need (3, 3) (4, 4) and (5, 5) as our intermediate points.
Input: For line segment between (0, 2) and (0, 6) :
Output: we need (0, 3) (0, 4) and (0, 5) as our intermediate points.
For using graphics functions, our system output screen is treated as a coordinate system where the coordinate of the top-left corner is (0, 0) and as we move down our y-ordinate increases, and as we move right our x-ordinate increases for any point (x, y). Now, for generating any line segment we need intermediate points and for calculating them we can use a basic algorithm called DDA(Digital differential analyzer) line generating algorithm.
Â
DDA Algorithm:Â
Consider one point of the line as (X0, Y0) and the second point of the line as (X1, Y1).Â
// calculate dx , dy
dx = X1 - X0;
dy = Y1 - Y0;
// Depending upon absolute value of dx & dy
// choose number of steps to put pixel as
// steps = abs(dx) > abs(dy) ? abs(dx) : abs(dy)
steps = abs(dx) > abs(dy) ? abs(dx) : abs(dy);
// calculate increment in x & y for each steps
Xinc = dx / (float) steps;
Yinc = dy / (float) steps;
// Put pixel for each step
X = X0;
Y = Y0;
for (int i = 0; i <= steps; i++)
{
  putpixel (round(X),round(Y),WHITE);
  X += Xinc;
  Y += Yinc;
}
Below is the implementation of the above approach:
C
// C program for DDA line generation
#include <graphics.h>
#include <math.h>
#include <stdio.h>
// Function for finding absolute value
int abs(int n) { return ((n > 0) ? n : (n * (-1))); }
// DDA Function for line generation
void DDA(int X0, int Y0, int X1, int Y1)
{
// calculate dx & dy
int dx = X1 - X0;
int dy = Y1 - Y0;
// calculate steps required for generating pixels
int steps = abs(dx) > abs(dy) ? abs(dx) : abs(dy);
// calculate increment in x & y for each steps
float Xinc = dx / (float)steps;
float Yinc = dy / (float)steps;
// Put pixel for each step
float X = X0;
float Y = Y0;
for (int i = 0; i <= steps; i++) {
putpixel(round(X), round(Y),
RED); // put pixel at (X,Y)
X += Xinc; // increment in x at each step
Y += Yinc; // increment in y at each step
delay(100); // for visualization of line-
// generation step by step
}
}
// Driver program
int main()
{
int gd = DETECT, gm;
// Initialize graphics function
initgraph(&gd, &gm, "");
int X0 = 2, Y0 = 2, X1 = 14, Y1 = 16;
// Function call
DDA(2, 2, 14, 16);
return 0;
}
C++
// C++ program for DDA line generation
#include <bits/stdc++.h>
using namespace std;
// function for rounding off the pixels
int round(float n)
{
if (n - (int)n < 0.5)
return (int)n;
return (int)(n + 1);
}
// Function for line generation
void DDALine(int x0, int y0, int x1, int y1)
{
// Calculate dx and dy
int dx = x1 - x0;
int dy = y1 - y0;
int step;
// If dx > dy we will take step as dx
// else we will take step as dy to draw the complete
// line
if (abs(dx) > abs(dy))
step = abs(dx);
else
step = abs(dy);
// Calculate x-increment and y-increment for each step
float x_incr = (float)dx / step;
float y_incr = (float)dy / step;
// Take the initial points as x and y
float x = x0;
float y = y0;
for (int i = 0; i < step; i++) {
// putpixel(round(x), round(y), WHITE);
cout << round(x) << " " << round(y) << "\n";
x += x_incr;
y += y_incr;
// delay(10);
}
}
// Driver code
int main()
{
int x0 = 200, y0 = 180, x1 = 180, y1 = 160;
// Function call
DDALine(x0, y0, x1, y1);
return 0;
}
// all functions regarding to graphichs.h are commented out
// contributed by hopelessalexander
Java
// Java Code for DDA line generation
public class Solution {
// function for rounding off the pixels
public static int round(float n) {
if (n - (int) n < 0.5)
return (int) n;
return (int) (n + 1);
}
// Function for line generation
public static void DDALine(int x0, int y0, int x1, int y1) {
// Calculate dx and dy
int dx = x1 - x0;
int dy = y1 - y0;
int step;
// If dx > dy we will take step as dx
// else we will take step as dy to draw the complete
// line
if (Math.abs(dx) > Math.abs(dy))
step = Math.abs(dx);
else
step = Math.abs(dy);
// Calculate x-increment and y-increment for each step
float x_incr = (float) dx / step;
float y_incr = (float) dy / step;
// Take the initial points as x and y
float x = x0;
float y = y0;
for (int i = 0; i < step; i++) {
// putpixel(round(x), round(y), WHITE);
System.out.println(round(x) + " " + round(y));
x += x_incr;
y += y_incr;
// delay(10);
}
}
// Driver code
public static void main(String[] args) {
int x0 = 200, y0 = 180, x1 = 180, y1 = 160;
// Function call
DDALine(x0, y0, x1, y1);
}
}
// This code is contributed by ishankhandelwals.
Python3
# Python program for DDA line generation
from matplotlib import pyplot as plt
# DDA Function for line generation
def DDA(x0, y0, x1, y1):
# find absolute differences
dx = abs(x0 - x1)
dy = abs(y0 - y1)
# find maximum difference
steps = max(dx, dy)
# calculate the increment in x and y
xinc = dx/steps
yinc = dy/steps
# start with 1st point
x = float(x0)
y = float(y0)
# make a list for coordinates
x_coorinates = []
y_coorinates = []
for i in range(steps):
# append the x,y coordinates in respective list
x_coorinates.append(x)
y_coorinates.append(y)
# increment the values
x = x + xinc
y = y + yinc
# plot the line with coordinates list
plt.plot(x_coorinates, y_coorinates, marker="o",
markersize=1, markerfacecolor="green")
plt.show()
# Driver code
if __name__ == "__main__":
# coordinates of 1st point
x0, y0 = 20, 20
# coordinates of 2nd point
x1, y1 = 60, 50
# Function call
DDA(x0, y0, x1, y1)
# This code is contributed by 111arpit1
C#
// C# code for DDA line generation
using System;
public class Solution
{
// function for rounding off the pixels
public static int Round(float n)
{
if (n - (int)n < 0.5)
return (int)n;
return (int)(n + 1);
}
// Function for line generation
public static void DDALine(int x0, int y0, int x1,
int y1)
{
// Calculate dx and dy
int dx = x1 - x0;
int dy = y1 - y0;
int step;
// If dx > dy we will take step as dx
// else we will take step as dy to draw the complete
// line
if (Math.Abs(dx) > Math.Abs(dy))
step = Math.Abs(dx);
else
step = Math.Abs(dy);
// Calculate x-increment and y-increment for each
// step
float x_incr = (float)dx / step;
float y_incr = (float)dy / step;
// Take the initial points as x and y
float x = x0;
float y = y0;
for (int i = 0; i < step; i++) {
// putpixel(round(x), round(y), WHITE);
Console.WriteLine(Round(x) + " " + Round(y));
x += x_incr;
y += y_incr;
// delay(10);
}
}
// Driver code
public static void Main(string[] args)
{
int x0 = 200, y0 = 180, x1 = 180, y1 = 160;
// Function call
DDALine(x0, y0, x1, y1);
}
}
// This code is contributed by ishankhandelwals
JavaScript
// JS program for DDA Line generation
function round(n) {
if (n - Math.floor(n) < 0.5)
return Math.floor(n);
return Math.floor(n + 1);
};
function DDALine(x0, y0, x1, y1) {
let dx = x1 - x0;
let dy = y1 - y0;
let step;
if (Math.abs(dx) > Math.abs(dy))
step = Math.abs(dx);
else
step = Math.abs(dy);
let x_incr = (dx / step);
let y_incr = (dy / step);
let x = x0;
let y = y0;
for (let i = 0; i < step; i++) {
console.log(round(x) + " " + round(y));
x += x_incr;
y += y_incr;
}
};
let x0 = 200, y0 = 180, x1 = 180, y1 = 160;
DDALine(x0, y0, x1, y1);
// This code is contributed by ishankhandelwals.
Output:Â
200 180
199 179
198 178
197 177
196 176
195 175
194 174
193 173
192 172
191 171
190 170
189 169
188 168
187 167
186 166
185 165
184 164
183 163
182 162
181 161
Advantages of DDA Algorithm:Â
- It is a simple and easy-to-implement algorithm.
- It avoids using multiple operations which have high time complexities.
- It is faster than the direct use of the line equation because it does not use any floating point multiplication and it calculates points on the line.
Disadvantages of DDA Algorithm:Â
- It deals with the rounding off operation and floating point arithmetic so it has high time complexity.
- As it is orientation-dependent, so it has poor endpoint accuracy.
- Due to the limited precision in the floating point representation, it produces a cumulative error.
Bresenham’s Line Generation Algorithm
Uses of DDA Algorithm:Â
DDA (Digital Differential Analyzer) algorithm is commonly used in computer graphics for line drawing. It has a wide range of applications, including:
- Creating basic graphics primitives: DDA algorithm can be used to draw simple shapes such as lines, polygons, and rectangles. By using a series of line segments generated using DDA, more complex shapes can also be created.
- Computer-aided design (CAD): In CAD software, DDA algorithm is used to draw lines between two points, which are used to create 2D and 3D models.
- Image processing: DDA algorithm can be used in image processing for tasks such as edge detection and image segmentation.
- Video game development: DDA algorithm is used for rendering lines and polygons in real-time graphics rendering for video games.
- Simulation and modeling: DDA algorithm is used to simulate physical phenomena such as ray tracing, which is used in computer graphics to create realistic images of 3D objects.
Â
Issues in DDA Algorithm:Â
some limitations and issues, which are:
- Floating point arithmetic: The DDA algorithm requires floating-point arithmetic, which can be slow on some systems. This can be a problem when dealing with large datasets.
- Limited precision: The use of floating-point arithmetic can lead to limited precision in some cases, especially when the slope of the line is very steep or shallow.
- Round-off errors: Round-off errors can occur during calculations, which can lead to inaccuracies in the generated line. This is particularly true when the slope of the line is close to 1.
- Inability to handle vertical lines: The DDA algorithm is unable to handle vertical lines, as the slope becomes undefined.
- Slow for complex curves: The DDA algorithm is not suitable for generating complex curves such as circles and ellipses, as it requires a large number of line segments to approximate these curves accurately.
- Aliasing: Aliasing occurs when the line segments generated using the DDA algorithm do not accurately represent the line being drawn, resulting in a jagged appearance.
- Not suitable for thick lines: The DDA algorithm generates thin lines, which can be problematic when drawing thick lines, as the line segments may overlap or leave gaps.
Reference :
Here are some references for the DDA (Digital Differential Analyzer) algorithm in computer graphics:
- Computer Graphics: Principles and Practice (3rd Edition) by James D. Foley, Andries van Dam, Steven K. Feiner, and John F. Hughes.
- Computer Graphics: C Version (2nd Edition) by Donald Hearn and M. Pauline Baker.
- Fundamentals of Computer Graphics (4th Edition) by Steve Marschner and Peter Shirley.
- Computer Graphics with OpenGL (4th Edition) by Donald Hearn, M. Pauline Baker, and Warren Carithers.
- Introduction to Computer Graphics: Using Java 2D and 3D by Frank Klawonn.
Similar Reads
Computer Graphics Recent Articles on Computer GraphicsTable of Content Basics :Output Primitives :2-Dimensional Viewing :Visible Surface Detection :3-Dimension Object Representation :Open GL :Graphics function in C :Misc : Basics :Basic Graphic Programming in C++Vector vs Raster GraphicsSegments in Computer GraphicsI
2 min read
Basics
Basic Graphic Programming in C++Introduction So far we have been using C language for simple console output only.  Most of us are unaware that using C++, low level graphics program can also be made. This means we can incorporate shapes,colors and designer fonts in our program. This article deals with the steps to enable the DevC++
2 min read
Vector vs Raster GraphicsWhen it comes to digital images, two main types are commonly used: raster and vector graphics. Understanding the difference between these two can help you choose the right format for your project. Raster graphics, made up of tiny pixels, are ideal for detailed and colorful images like photographs. O
7 min read
Segments in Computer GraphicsIntroduction : Introduction segments are a fundamental concept in computer graphics, used to represent the basic building blocks of a graphical scene. They are commonly used in 2D graphics to represent lines or curves that connect two or more points. An introduction segment is defined by two endpoin
8 min read
Image FormatsImage formats are different types of file types used for saving pictures, graphics, and photos. Choosing the right image format is important because it affects how your images look, load, and perform on websites, social media, or in print. Common formats include JPEG, PNG, GIF, and SVG, each with it
5 min read
Output Primitives
DDA Line generation Algorithm in Computer GraphicsIntroduction : DDA (Digital Differential Analyzer) is a line drawing algorithm used in computer graphics to generate a line segment between two specified endpoints. It is a simple and efficient algorithm that works by using the incremental difference between the x-coordinates and y-coordinates of th
12 min read
Bresenhamâs Line Generation AlgorithmGiven the coordinate of two points A(x1, y1) and B(x2, y2). The task is to find all the intermediate points required for drawing line AB on the computer screen of pixels. Note that every pixel has integer coordinates. Examples: Input : A(0,0), B(4,4)Output : (0,0), (1,1), (2,2), (3,3), (4,4) Input :
14 min read
Mid-Point Line Generation AlgorithmGiven coordinate of two points A(x1, y1) and B(x2, y2) such that x1 < x2 and y1 < y2. The task to find all the intermediate points required for drawing line AB on the computer screen of pixels. Note that every pixel has integer coordinates.We have discussed below algorithms for this task. DDA
11 min read
Program to find line passing through 2 PointsGiven two points P and Q in the coordinate plane, find the equation of the line passing through both points.This kind of conversion is very useful in many geometric algorithms like intersection of lines, finding the circumcenter of a triangle, finding the incenter of a triangle and many more... Exam
6 min read
Bresenhamâs circle drawing algorithmIt is not easy to display a continuous smooth arc on the computer screen as our computer screen is made of pixels organized in matrix form. So, to draw a circle on a computer screen we should always choose the nearest pixels from a printed pixel so as they could form an arc. There are two algorithm
4 min read
Anti-aliased Line | Xiaolin Wu's algorithmAnti-Aliased Line Drawing Below is the image showing line drawn with Bresenham's line algorithm (left) and Xiaolin Wu's line algorithm (right) which smooths the line. Which one looks better to you ? Anti Aliasing concept Suppose we want to draw a line from point(1 , 1) to point(8 , 4) with rectangul
10 min read
Neighbors of a point on a circle using Bresenham's algorithmGiven a center of a circle and its radius. our task is to find the neighbors of any point on the discrete circle. Examples: Input : Center = (0, 0), Radius = 3 Point for determining neighbors = (2, 2)Output : Neighbors of given point are : (1, 3), (3, 1)Input : Center = (2, 2) Radius 2 Point of det
15 min read
Mid-Point Circle Drawing AlgorithmThe mid-point circle drawing algorithm is an algorithm used to determine the points needed for rasterizing a circle. We use the mid-point algorithm to calculate all the perimeter points of the circle in the first octant and then print them along with their mirror points in the other octants. This wi
15+ min read
Boundary Fill AlgorithmPrerequisite : Flood fill algorithm, Scan-line polygon fillingIntroduction : Boundary Fill Algorithm starts at a pixel inside the polygon to be filled and paints the interior proceeding outwards towards the boundary. This algorithm works only if the color with which the region has to be filled and t
5 min read
Flood fill Algorithm - how to implement fill() in paint?Flood Fill is a classic algorithm used to change the color of an area in a 2D image where all pixels are connected and have the same initial color. Think of it like the paint bucket tool in graphic design software like MS Paint or Photoshopâwhen you click on a spot, it automatically fills that area
2 min read
Flood fill algorithm using C graphicsGiven a rectangle, your task to fill this rectangle using flood fill algorithm. Examples: Input : rectangle(left = 50, top = 50, right= 100, bottom = 100) flood( x = 55, y = 55, new_color = 12, old_color = 0) Output : Input : rectangle(left = 50, top = 50, right= 200, bottom = 400) flood( x = 51, y
2 min read
Draw a line in C++ graphicsgraphics.h library is used to include and facilitate graphical operations in program. graphics.h functions can be used to draw different shapes, display text in different fonts, change colors and many more. Using functions of graphics.h you can make graphics programs, animations, projects and games.
2 min read
Draw Rectangle in C graphicsrectangle() is used to draw a rectangle. Coordinates of left top and right bottom corner are required to draw the rectangle. left specifies the X-coordinate of top left corner, top specifies the Y-coordinate of top left corner, right specifies the X-coordinate of right bottom corner, bottom specifie
2 min read
Draw circle in C graphicsThe header file graphics.h contains circle() function which draws a circle with center at (x, y) and given radius. Syntax : circle(x, y, radius); where, (x, y) is center of the circle. 'radius' is the Radius of the circle. Examples : Input : x = 250, y = 200, radius = 50 Output : Input : x = 300, y
1 min read
Draw a circle without floating point arithmeticGiven 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 (
6 min read
Code to Generate the Map of India (With Explanation)Given an obfuscated code that generates the map of India, explain its working. The following code when executed generates the map of India. An obfuscated code is a code that has been deliberately made difficult to understand or difficult to read, typically for the purpose of hiding its logic or maki
8 min read
2-Dimensional Viewing
2D Transformation in Computer Graphics | Set 1 (Scaling of Objects)We can use a 2 Ã 2 matrix to change or transform, a 2D vector. This kind of operation, which takes in a 2-vector and produces another 2-vector by a simple matrix multiplication, is a linear transformation. By this simple formula, we can achieve a variety of useful transformations, depending on what
5 min read
2D Transformation | Rotation of objectsWe have to rotate an object by a given angle about a given pivot point and print the new co-ordinates.Examples: Input : {(100, 100), (150, 200), (200, 200), (200, 150)} is to be rotated about (0, 0) by 90 degrees Output : (-100, 100), (-200, 150), (-200, 200), (-150, 200) Input : {(100, 100), (100,
7 min read
Point Clipping Algorithm in Computer GraphicsThe Point Clipping Algorithm is a fundamental algorithm used in Computer Graphics to determine whether a point lies inside or outside a specific region or boundary. It is particularly useful when dealing with objects that have complex shapes or when displaying only a portion of an image. Clipping: I
10 min read
Line Clipping | Set 1 (CohenâSutherland Algorithm)Description:- In this algorithm, we are given 9 regions on the screen. Out of which one region is of the window and the rest 8 regions are around it given by 4 digit binary. Â The division of the regions are based on (x_max, y_max) and (x_min, y_min). The central part is the viewing region or window,
15+ min read
Polygon Clipping | SutherlandâHodgman AlgorithmA convex polygon and a convex clipping area are given. The task is to clip polygon edges using the SutherlandâHodgman Algorithm. Input is in the form of vertices of the polygon in clockwise order. Examples: Input : Polygon : (100,150), (200,250), (300,200) Clipping Area : (150,150), (150,200), (200,
15 min read
Implementation of a Falling MatrixSince the dawn of computers, Hollywood has greatly demonstrated a Hacker or a Programmer as someone sitting on a computer typing random keys on computer which ultimately compiles to a Falling matrix like simulation. Here, we will try to implement a similar falling matrix simulation on the console us
5 min read
Visible Surface Detection
3-Dimension Object Representation
Snowflakes Fractal using PythonTo create Snowflake fractals using Python programmingWhat are fractals A fractal is a never-ending pattern. Fractals are infinitely complex patterns that are self-similar across different scales. They are created by repeating a simple process over and over in an ongoing feedback loop. Driven by recu
3 min read
Koch Curve or Koch SnowflakeWhat is Koch Curve? The Koch snowflake (also known as the Koch curve, Koch star, or Koch island) is a mathematical curve and one of the earliest fractal curves to have been described. It is based on the Koch curve, which appeared in a 1904 paper titled "On a continuous curve without tangents, constr
4 min read
Klee's Algorithm (Length Of Union Of Segments of a line)Given starting and ending positions of segments on a line, the task is to take the union of all given segments and find length covered by these segments.Examples: Input : segments[] = {{2, 5}, {4, 8}, {9, 12}} Output : 9 Explanation: segment 1 = {2, 5} segment 2 = {4, 8} segment 3 = {9, 12} If we ta
9 min read
Cubic Bezier Curve Implementation in CWhat is a bezier curve? So a Bezier curve is a mathematically defined curve used in two-dimensional graphic applications like adobe Illustrator, Inkscape etc. The curve is defined by four points: the initial position and the terminating position i.e P0 and P3 respectively (which are called "anchors"
11 min read
Fractals in C/C++A Fractal is a never-ending pattern. Fractals are infinitely complex patterns that are self-similar across different scales. They are created by repeating a simple process over and over in an ongoing feedback loop. Mathematically fractals can be explained as follows. The location of a point on a scr
6 min read
Open GL
Scan-line Polygon filling using OPENGL in CFigures on a computer screen can be drawn using polygons. To fill those figures with color, we need to develop some algorithm.There are two famous algorithms for this purpose: Boundary fill and Scanline fill algorithms.Boundary filling requires a lot of processing and thus encounters few problems in
8 min read
Rendering a Triangle using OpenGL(using Shaders)In this article we'll see how to render a triangle using OpenGL. A triangle is probably the simplest shapes you can draw in OpenGL after points and lines and any complicated geometry that you make will me made up of number of triangles joined together.We'll be using the programmable pipeline, so we'
9 min read
Getting started with OpenGLOpen Graphics Library (OpenGL) is a cross-language (language independent), cross-platform (platform-independent) API for rendering 2D and 3D Vector Graphics(use of polygons to represent image). OpenGL API is designed mostly in hardware. Design : This API is defined as a set of functions which may be
4 min read
OpenGL program for Simple Ball GamePrerequisite - OpenGLOpenGL is a cross-language, cross-platform API for rendering 2D and 3D Vector Graphics. Using this, we can make a lot of design as well as animations. Below is a simple Game made using OpenGL.Description : In this, a ball is moving starting from middle and goes to up-left in sta
5 min read
OpenGL program for simple Animation (Revolution) in COpenGL is a cross-language, cross-platform API for rendering 2D and 3D Vector Graphics. Using this, we can make a lot of design as well as animations. Below is the simple animation made using OpenGL.Approach : To make a picture moving, we need to understand the working procedure of a function used t
6 min read
Translation of objects in computer graphicsIn computer graphics, we have seen how to draw some basic figures like line and circles. In this post we will discuss on basics of an important operation in computer graphics as well as 2-D geometry, which is transformation. In computer graphics, transformation of the coordinates consists of three m
7 min read
Graphics function in C
pieslice() function in Cpieslice() draws and fills a pie slice with center at (x, y) and given radius r. The slice travels from s_angle to e_angle which are starting and ending angles for the pie slice. The angles for pie-slice are given in degrees and are measured counterclockwise. Syntax : void pieslice(int x, int y, int
2 min read
outtextxy() function in CThe header file graphics.h contains outtextxy() function which displays the text or string at a specified point (x, y) on the screen. Syntax : void outtextxy(int x, int y, char *string); where, x, y are coordinates of the point and, third argument contains the address of string to be displayed. Exam
1 min read
settextstyle function in CThe header file graphics.h contains settextstyle() function which is used to change the way in which text appears. Using it we can modify the size of text, change direction of text and change the font of text. Syntax : void settextstyle(int font, int direction, int font_size); where, font argument s
2 min read
outtext() function in CThe header file graphics.h contains outtext() function which displays text at current position. Syntax : void outtext(char *string); Examples : Input : string = "Hello Geek, Have a good day !" Output : Input : string = "GeeksforGeeks is the best !" Output : Note : Do not use text mode functions like
1 min read
setlinestyle() function in CThe header file graphics.h contains setlinestyle() function which sets the style for all lines drawn by line, lineto, rectangle, drawpoly, and so on. Syntax : void setlinestyle(int linestyle, unsigned upattern, int thickness); Examples : Input : x = 200, y = 100 Output : x and y are initialized as (
2 min read
getx() function in CThe header file graphics.h contains getx() function which returns the X coordinate of the current position. Syntax : int getx(); Example : Explanation : Initially, the X coordinate of the current position is 0. On moving the coordinates using moveto() function, the X coordinate changes to 80. Below
2 min read
sector() function in CThe header file graphics.h contains sector() function which draws and fills an elliptical pie slice with (x, y) as center, (s_angle, e_angle) as starting and ending angle and (x_radius, y_radius) as x and y radius of sector. Syntax : void sector(int x, int y, int s_angle, int e_angle, int x_radius,
2 min read
moveto() function in CThe header file graphics.h contains moveto() function which changes the current position to (x, y) Syntax : void moveto(int x, int y); Examples : Input : x = 70, y = 40 Output : Input : x = 50, y = 80 Output : Below is the implementation of moveto() function: C // C Implementation for moveto() #incl
2 min read
gety() function in CThe header file graphics.h contains gety() function which returns the Y coordinate of the current position. Syntax : int gety(); Example : Explanation : Initially, the Y coordinate of the current position is 0. On moving the coordinates using moveto() function, the Y coordinate changes to 50. Below
2 min read
getmaxx() function in CThe header file graphics.h contains getmaxx() function which returns the maximum X coordinate for current graphics mode and driver. Syntax : int getmaxx(); Below is the implementation of getmaxx() function: C // C Implementation for getmaxx() #include <graphics.h> #include <stdio.h> // d
1 min read
lineto() function in CThe header file graphics.h contains lineto() function which draws a line from current position to the point(x,y). Note : Use getx() and gety() to get the current position. Syntax : lineto(int x, int y); where, (x, y) are the coordinates upto which the line will be drawn from previous point. CASE 1 :
2 min read
arc function in CThe header file graphics.h contains arc() function which draws an arc with center at (x, y) and given radius. start_angle is the starting point of angle and end_angle is the ending point of the angle. The value of the angle can vary from 0 to 360 degree. Syntax : void arc(int x, int y, int start_ang
2 min read
bar3d() function in C graphicsThe header file graphics.h contains bar3d() function which is used to draw a 2-dimensional, rectangular filled in bar . Coordinates of left top and right bottom corner of bar are required to draw the bar. Syntax : void bar3d(int left, int top, int right, int bottom, int depth, int topflag); where, l
2 min read
moverel() function in CThe header file graphics.h contains moverel() function which moves a point from the current position(x_pos1, y_pos1) to a point that is at a relative distance (x, y) from the Current Position and then advances the Current Position by (x, y). Note : getx and gety can be used to find the current posit
3 min read
cleardevice() function in CThe header file graphics.h contains cleardevice() function which clears the screen in graphics mode and sets the current position to (0,0). Clearing the screen consists of filling the screen with current background color. Syntax : void cleardevice(); Below is the implementation of cleardevice() in C
1 min read
closegraph() function in CThe header file graphics.h contains closegraph() function which closes the graphics mode, deallocates all memory allocated by graphics system and restores the screen to the mode it was in before you called initgraph. Syntax : void closegraph(); Below is the implementation of closegraph() in C. C //
1 min read
drawpoly() function in CThe header file graphics.h contains drawpoly() function which is used to draw polygons i.e. triangle, rectangle, pentagon, hexagon etc. Syntax : void drawpoly( int number, int *polypoints ); where, number indicates (n + 1) number of points where n is the number of vertices in a polygon. polypoints p
2 min read
putpixel() function in CThe header file graphics.h contains putpixel() function which plots a pixel at location (x, y) of specified color. Syntax : void putpixel(int x, int y, int color); where, (x, y) is the location at which pixel is to be put , and color specifies the color of the pixel. Explanation : A RED color pixel
2 min read
getarcoords() function in CThe header file graphics.h contains getarccoords() function which is used to get coordinates of arc which is drawn most recently. arccoordstype is a predefined structure which is defined as follows: Syntax : struct arccoordstype { // center point of arc int x, y; // start position int xstart, ystart
2 min read
getbkcolor() function in CThe header file graphics.h contains getbkcolor() function which returns the current background color. Syntax : int getbkcolor(); As getbkcolor() returns an integer value corresponding to the background color, so below is the table for Color values. Colors Table : COLOR INT VALUES -------------------
2 min read
getmaxcolor() function in CThe header file graphics.h contains getmaxcolor() function, which returns maximum color value for current graphics mode and driver. As color numbering starts from zero, total number of colors available for current graphics mode and driver are ( getmaxcolor() + 1 ) . Syntax : int getmaxcolor(); Below
2 min read
getpixel() function in CThe header file graphics.h contains getpixel() function which returns the color of pixel present at location (x, y). Syntax : int getpixel(int x, int y); Note : By default the screen is BLACK, therefore color of pixel at (0,0) is BLACK. Below is the implementation of getpixel() function. C // C Impl
2 min read
setcolor function in CThe header file graphics.h contains setcolor() function which is used to set the current drawing color to the new color. Syntax : void setcolor(int color); Explanation : In Graphics, each color is assigned a number. Total number of colors available are 16. Number of available colors depends on curre
2 min read
imagesize() function in CThe header file graphics.h contains imagesize() function which returns the number of bytes required to store a bit-image. Syntax : unsigned int imagesize(int left, int top, int right, int bottom); where, left, top, right, and bottom define the area of the screen in which image is stored. Below is th
2 min read
textheight() function in CThe header file graphics.h contains textheight() function which returns the height of input string in pixels. Syntax : int textheight(char *string); Example : Input : string = "Hello Geek ! Have a good day." Output : Below is the implementation of textheight() function. C // C Implementation for tex
1 min read
textwidth() function in CThe header file graphics.h contains textwidth () function which returns the width of input string in pixels. Syntax : int textwidth(char *string); Example : Input : string = "Hello Geek ! Have a good day." Output : Below is the implementation of textwidth() function. C // C Implementation for textwi
1 min read
grapherrormsg() function in CThe header file graphics.h contains grapherrormsg() function which returns an error message string. Syntax : char *grapherrormsg( int errorcode ); where, errorcode: code for the respective error Illustration of the grapherrormsg() : In the below program, gd = DETECT is not written and thus program m
1 min read
fillpoly() function in CThe header file graphics.h contains fillpoly() function which is used to draw and fill a polygon i.e. triangle, rectangle, pentagon, hexagon etc. It require same arguments as drawpoly(). Syntax : void fillpoly( int number, int *polypoints ); where, number indicates (n + 1) number of points where, n
3 min read
fillellipse() function in CThe header file graphics.h contains fillellipse() function which draws and fills an ellipse with center at (x, y) and (x_radius, y_radius) as x and y radius of ellipse. Syntax : void fillellipse(int x, int y, int x_radius, int y_radius); where, (x, y) is center of the ellipse. (x_radius, y_radius) a
1 min read
bar() function in C graphicsThe header file graphics.h contains bar() function which is used to draw a 2-dimensional, rectangular filled in bar. Syntax : void bar(int left, int top, int right, int bottom); where, left specifies the X-coordinate of top left corner, top specifies the Y-coordinate of top left corner, right specif
2 min read
Misc