[ C\C++ ] Thuật toán Bresenham_Line - Vẽ đoạn thẳng [ Kỹ thuật Đồ họa máy tính ]

* Thuật toán Bresenham_Line - Vẽ đoạn thẳng (xét 0<=k<=1)


* Cài đặt thuật toán: 
   Ứng dụng Bresenham_Line để vẽ đoạn thằng AB với A(100,100); B(300,200)

[Code Turbo C++]

#include<iostream.h>
#include<conio.h>
#include<stdio.h>
#include<graphics.h>
#include<math.h>

// ham lam tron
int Round(float a){
 return (int)floor(a+0.5);
}

// Bresenham_Line

void Bre_Line(int x1, int y1, int x2, int y2, int c)
{
int x, y, dx, dy,p,const1,const2;
y = y1;
dx = x2 - x1;
dy = y2 - y1;
p = 2*dy - dx;
const1 = 2*dy;
const2 = 2*(dy-dx);
for (x=x1; x<=x2; x++) {
  putpixel(x, y, c);
  if (p < 0)
   p += const1; // p=p + 2dy
  else {
   p +=const2; //p=p+2dy-2dx
   y++;
  }
 }
}

// ham main
void main(){
 clrscr();
 int driver=DETECT, mode;
 initgraph(&driver,&mode,"C:\\TC\\BGI"); /* Ban co the thay doi Path tuy vao may cua ban */
 cout<<"\n Ve duong thang:\n";
 gotoxy(100,100);
 Bre_Line(100,100,300,200,4);
 getch();
}

// đề nghị độc giả giải quyết tiếp các trường hợp khác của k

* Tải code về TẠI ĐÂY - Lưu ý: Sau 5s, click BỎ QUA QUẢNG CÁO

* Hướng dẫn tự học lập trình:  C/C++  |  Java  |  Android  | iOS (Swift) JavaScript   Assembly 

* Chương trình ví dụ:  Đồ họa máy tính  |  Cấu trúc dữ liệu và giải thuật  |  Toán rời rạc 

* Tìm hiểu:  Blockchain  |  Trí tuệ nhân tạo  |  Thuật toán di truyền  |  Học máy   |  Cơ sở dữ liệu

Bài viết nổi bật