Content deleted Content added
dfhgf |
→Program: The DDA algorithm requires rounding the floating point x,y to the nearest integer. The sample code should not depend on the behavior of some specific graphics library's putpixel() (for example if it takes int parameters, float->int uses truncation and will produce the wrong answer) |
||
(14 intermediate revisions by 11 users not shown) | |||
Line 1:
{{short description|Hardware or software used for interpolation of variables over an interval}}
{{About|a graphics algorithm|the digital implementation of a differential analyzer|Digital differential analyzer}}
Line 7 ⟶ 8:
:<math>m = \frac{y_{\rm end} -y_{\rm start}}{x_{\rm end}-x_{\rm start}}</math>
In fact any two consecutive points
== Performance ==
Line 14 ⟶ 15:
The [[Fixed-point arithmetic|fixed-point]] integer operation requires two additions per output cycle, and in case of fractional part overflow, one additional increment and subtraction. The probability of fractional part overflows is proportional to the ratio m of the interpolated start/end values.
DDAs are well suited for hardware implementation and
== Algorithm ==
Line 33 ⟶ 34:
== Program ==
DDA algorithm
<syntaxhighlight lang="
#include <graphics.h>
#include <iostream.h>
#include <math.h>
Line 43:
#include <conio.h>
void main(
{
float x,
float y, float x1, y1, float x2, y2, dx, dy, step; int i, gd = DETECT, gm;
initgraph(&gd, &gm, "C:\\TURBOC3\\BGI");
cout << "Enter the value of x1 and y1
cin >> x1 >> y1;
cout << "Enter the value of x2 and y2: ";
Line 56 ⟶ 59:
dx = (x2 - x1);
dy = (y2 - y1);
if (abs(dx) >= abs(dy))
step = abs(dx);
else
step = abs(dy);
dx = dx / step;
dy = dy / step;
x = x1;
y = y1;
i =
while
putpixel(round(x), round(y), 5);
x = x + dx;
y = y + dy;
Line 72 ⟶ 78:
delay(100);
}
getch();
closegraph();
Line 80 ⟶ 87:
* [[Bresenham's line algorithm]] is an algorithm for line rendering.
* [[
* [[Xiaolin Wu's line algorithm]] is an algorithm for line anti-aliasing
Line 93 ⟶ 100:
[[Category:Computer graphics algorithms]]
[[Category:Digital geometry]]
[[Category:Articles with example C++ code]]
|