Chuyển đến nội dung chính

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

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


* Cài đặt thuật toán: 
   Ứng dụng MidPoint_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);
}

// MidPoint_Line

void Mid_Line(int x1, int y1, int x2, int y2, int c)

 int x, y, dx, dy,d;
 y = y1;
 dx = x2 - x1;
 dy = y2 - y1;
 d= dy - dx/2;
 for (x=x1; x<=x2; x++)
  {
   putpixel(x, y, c);
   if (d <= 0)
     d = d + dy;
   else
    {
      y ++;
      d = d + dy - dx;
     }
   }
}

// 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);
 Mid_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

BÀI ĐỌC NHIỀU

[Java] Hướng dẫn lập trình Java với NetBean [Clip hướng dẫn]

[Đồ họa trong C\C++] Sử dụng các hàm đồ họa thông dụng trong C\C++ [C\C++]

[ C++ ] Tính đa hình, phương thức ảo, lớp trừu tượng trong C++ [Lập trình hướng đối tượng với C++]

[ Sort ] Thuật toán Heap-Sort [Code C++]

[Algorithm] Thuật toán Đệ quy và một số bài toán Đệ quy cơ bản

[Assembly] Tính tổng 2 số nguyên nhỏ hơn 10 [Lập trình hợp ngữ]

[Assembly] Hướng dẫn sử dụng Emu8086 [Lập trình hợp ngữ]

Bài tập +đáp án Lý thuyết đồ họa máy tính

[Thuật toán đồ thị / code C++] Thuật toán Dijkstra tìm đường đi ngắn nhất trên đồ thị G

[ C++ ] Kế thừa trong C++ [Lập trình hướng đối tượng với C++]