Báo cáo bài tập lớn đồ họa máy tính | Trường đại học Điện Lực

Báo cáo bài tập lớn đồ họa máy tính | Trường đại học Điện Lực được sưu tầm và soạn thảo dưới dạng file PDF để gửi tới các bạn sinh viên cùng tham khảo, ôn tập đầy đủ kiến thức, chuẩn bị cho các buổi học thật tốt. Mời bạn đọc đón xem!

TRƯỜNG ĐẠI HỌC ĐIỆN LỰC
KHOA CÔNG NGHỆ THÔNG TIN
BÁO CÁO CHUYÊN ĐỀ HỌC PHẦN
ĐỒ HỌA MÁY TÍNH
ĐỀ T I:
VẼ TRANH PHONG CẢNH
Sinh viên thực hiện : NGUYỄN TUẤN NHẬT
NGUYỄN ĐÌNH SANG
Giảng viên hướng dẫn : NGÔ NGỌC TH NH
Ngành : CÔNG NGHỆ THÔNG TIN
Chuyên ngành : CÔNG NGHỆ PHẦN MỀM
Lớp : D14CNPM6
Khóa : 2019-2023
PHIẾU CHẤM ĐIỂM
Sinh viên thực hiện:
STT Họ và tên Chữ ký Nhiệm vụ
1 Nguyễn Tuấn Nhật
Mã SV: 19810310242
2 Nguyễn Đình Sang
Mã SV
LỜI MỞ ĐẦU
Trong thời đại ngày nay, cùng với sự bùng nổ của cuộc cách mạng công
nghiệp 4.0 tập trung vào sự phát triển của công nghệ không thể không kể tới đồ
họa máy tính.
Đồ họa máy tính là phương pháp công nghệ dùng trong việc chuyển đổi
qua lại giữa dữ liệu hình ảnh bằng máy tính. Đồ họa máy tính một lĩnh vực
của khoa học máy tính nghiên cứu về toán học, các thuật toán cũng như các
thuật để cho phép tạo, hiển thị và điều khiển hình ảnh trên màn hình máy tính.
Đồ họa máy tính liên quan ít nhiều đến một số lĩnh vực như đại số, hình
học giải tích, hình học họa hình, quang học,... và kĩ thuật máy tính, đặc biệt là chế
tạo phần cứng (các loại màn hình, các thiết bị xuất, nhập, các vỉ mạch đồ họa...).
Nhận thấy được đồ họa máy tính là công cụ không thể thiếu trong nhiều lĩnh
vực. Vậy nên, qua quá trình học tập nghiên cứu môn học Đồ họa máy tính
cùng với sự chỉ dạy tận tình của thầy nhóm chúng em đãNguyễn Ngọc Thành
chọn đề tài làm đề tàiVẽ tranh phong cảnh sử dụng thư viện Graphics.h
nghiên cứu của mình.
Em xin gửi lời cảm ơn chân thành tới thầy giáo “Nguyễn Ngọc Thành
thầy giáo bộ môn khoa CNTT Trường Đại Học Điện Lực đã tận tình chỉ bảo
hướng dẫn và giúp đỡ chúng em để hoàn thành tốt bài báo cáo của mình.Trong quá
trình thực hiện có nhiều thiếu xót, khuyết điểm vì vậy mong thầy cô và các bạn cho
ý kiến đóng góp để nhóm e hoàn thiện đề tài của mình hơn.
CHƯƠNG 1: GIỚI THIỆU VỀ ĐỒ HỌA MÁY TÍNH
1.1.Lịch sử phát triển
- Graphics những năm 1950-1960:
+ Năm 1959 Thiết bị đồ hoạ đầu tiên là màn hình xuất hiện tại Đức.
+ Năm 1960 - SAGE (Semi-Automatic Ground Environment System) xuất hiện bút
sáng thao tác với màn hình.
+ Năm 1960 William Fetter nhà khoa học người Mỹ, ông đang nghiên cứu xây
dựng hình buồng lái máy bay cho hãng Boeing của Mỹ. Ông đã dựa trên hình
ảnh 3 chiều của mô hình ngườiphi công trong buồng lái của máy bay để xây dựng
nên một mô hình tối ưu cho buồng lái máy bay. Phương pháp này cho phép các nhà
thiết kế quan sát một cách trực quan vị trí của người lái trong khoang. Ông đặt tên
cho phương pháp này là đồ hoạ máy tính (Computer Graphics) .
+ Màn hình thiết bị thông dụng nhất trong hệ đồ hoạ, các thao tác của hầu hết
các màn hình đều dựa trên thiết kế ống tia âm cực CRT (Cathode ray tube). Khi đó
giá để làm tươi màn hìnhrất cao, máy tính xử chậm, đắt không chắc chắn
(không đáng tin cậy).
- Graphics: 1960-1970
+ Năm 1963 Ivan Sutherland (hội nghị Fall Joint Computer - lần đầu tiên khả
năng tạo mới, hiển thị thay đổi được thực hiện trong thời gian thực trên màn
CRT).
+ Hệ thống này được dùng để thiết kế mạch điện: CRT, LightPen (bút sáng),
computer (chứa chương trình xửthông tin). Người sử dụng có thể vẽ mạch điện
trực tiếp lên màn hình thông qua bút sáng.
- Graphics:1970-1980
+ Raster Graphics (đồ hoạ điểm). Bắt đầu chuẩn đồ hoạ ví dụ như: GKS(Graphics
Kernel System): European effort (kết quả của châu âu), Becomes ISO 2D standard.
- Graphics: 1980-1990
+ Mục đích đặc biệt về phần cứng, thiết bị hình học đồ hoạ Silicon. Xuất hiện các
chuẩn công nghiệp: PHIGS (Programmers Hierarchical Interactive Graphics
Standard) xác định các phương pháp chuẩn cho các hình thời gian thực lập
trình hướng đối tượng.
+ Giao diện người máy Human-Computer Interface (HCI)
- Computer Graphics: 1990-2000
+ OpenGL API (Application Program Interface giao diện chương trình ứng
dụng).
+ Completely computer-sinh ra ngành điện ảnh phim truyện (Toy Story) rất thành
công. Các tiềm tàng phần cứng mới: Texture mapping (dán các ảnh của cảnh thật
lên bề mặt của đối tượng),blending (trộn màu)....
- Computer Graphics: 2000- nay
+ Ảnh hiện thực, các cạc đồ hoạ cho máy tính (Graphics cards for PCs), game
boxes and game players.
+ Công nghiệp phim ảnh nhờ vào đồ hoạ máy tính (Computer graphics becoming
routine in movie industry): Maya (thế giới vật chất tri giác được)....
1.2. Khái niệm đồ họa máy tính và các kỹ thuật đồ họa
1.2.1. Đồ họa máy tính là gì ?
- Đồ họa máy tính một ngành khoa học Tin học chuyên nghiên cứu về các
phương pháp và kỹ thuật để có thể mô tả và thao tác trên các đối tượng của thế giới
thực bằng máy tính
- Về bản chất: đó một quá trình xây dựng phát triển các công cụ trên cả hai
lĩnh vực phần cứng phần mềm hổ trợ cho các lập trình viên thiết kế các chương
trình có khả năng đồ họa cao.
- Với việc tả dữ liệu thông qua các hình ảnh màu sắc đa dạng của nó, các
chương trình đồ họa thường thu hút người sử dụng bởi tính thân thiện, dể dùng,...
kích thích khả năng sáng tạo và nâng cao năng suất làm việc.
1.2.2. Các kỹ thuật đồ họa
1.2.2.1. Kỹ thuật đồ họa điểm
- Các hình, hình ảnh của các đối tượng được hiển thị thông qua từng pixel
(từng mẫu rời rạc)
- Đặc điểm: Có thể thay đổi thuộc tính
+ Xoá đi từng pixel của mô hình và hình ảnh các đối tượng.
+ Các mô hình hình ảnh được hiển thị như một lưới điểm (grid) các pixel rời rạc,
+ Từng pixel đều vị trí xác định, được hiển thị với một giá trị rời rạc (số
nguyên)
các thông số hiển thị (màu sắc hoặc độ sáng)
+ Tập hợp tất cả các pixel của grid cho chúng ta mô hình, hình ảnh đối tượng mà
chúng ta muốn hiển thị.
- Phương pháp để tạo ra các pixel:
+ Phương pháp dùng phần mềm để vẽ trực tiếp từng pixel một.
+ Dựa trên các thuyết phỏng (lý thuyết Fractal, v.v) để xây dựng nên hình
ảnh mô phỏng của sự vật.
+ Phương pháp rời rạc hoá (số hoá) hình ảnh thực của đối tượng.
+ Có thể sửa đổi (image editing) hoặc xử lý (image processing) mảng các pixel thu
được theo những phương pháp khác nhau để thu được hình ảnh đặc trưng của đối
tượng.
1.2.2.2. Kỹ thuật đồ họa Vector
- Xây dựng hình hình học cho hình ảnh đối tượng, xác định các thuộc tính của
hình hình học, sau đó dựa trên hình này để thực hiện quá trình trát để
hiển thị từng điểm của mô hình, hình ảnh của đối tượng.
- Kỹ thuật này chỉ lưu trữ mô hình toán học của các thành phần trong mô hình hình
học cùng với các thuộc tính tương ứng không cần lưu lại toàn bộ tất cả các
pixel của hình ảnh đối tượng.
- So sánh giữa Đồ họa điểm và Đồ họa Vector:
Đồ họa điểm Đồ họa Vector
- Hình ảnh và mô hình của các vật thể
được biểu diễn bởi tập hợp các điểm
của lưới (grid)
- Thay đổi thuộc tính của các pixel =>
thay đổi từng phần từng vùng của
hình ảnh.
- Copy được các pixel từ một hình ảnh
- Không thay đổi thuộc tính của từng
điểm trực tiếp
- Xử với từng thành phần hình học
cơ sở củathực hiện quá trình
trát và hiển thị lại.
- Quan sát hình ảnh hình của
hình ảnh sự vật nhiều góc độ
này sang hình ảnh khác. khác nhau bằng cách thay đổi điểm
nhìn và góc nhìn.
1.3. Phân loại của đồ họa máy tính
1.3.1. Phân loại theo các lĩnh vực của đồ họa máy tính
* Kỹ thuật đồ họa:
- Kiến tạo đồ họa gồm:
+ Các hệ CAD/CAM (Computer Aided Design/Computer Aided Manufacture
System): kỹthuật đồ hoạ tập hợp các công cụ, các kỹ thuật trợ giúp cho thiết kế các
chi tiết và các hệ thống khác nhau: hệ thống cơ, hệ thống điện, hệ thống điện tử….
+ Đồ hoạ minh hoạ (Presentation Graphics): gồm các công cụ giúp hiển thị các số
liệu thí nghiệm một cách trực quan, dựa trên các mẫu đồ thị hoặc các thuật toán
sẵn.
+ Đồ hoạ hoạt hình nghệ thuật: bao gồm các công cụ giúp cho các hoạ sĩ, các
nhà thiết kế phim hoạt hình chuyên nghiệp làm các kỹ xảo hoạt hình, vẽ tranh... Ví
dụ: phần mềm 3D Studio, 3D Animation, 3D Studio Max
- Xử lý đồ họa gồm :
+ Kỹ thuật xử ảnh (Computer Imaging): sau quá trình xử ảnh cho ta ảnh số
của đối tượng. Trong quá trình xử ảnh sử dụng rất nhiều các kỹ thuật phức tạp:
kỹ thuật khôi phục ảnh, kỹ thuật làm nổi ảnh, kỹ thuật xác định biên ảnh.
+ Kỹ thuật nhận dạng (Pattern Recognition): từ những ảnh mẫu có sẵn ta phân loại
theo cấu trúc, hoặc theo các tiêu trí được xác định từ trước bằng các thuật toán
chọn lọc để thể phân tích hay tổng hợp ảnh đã cho thành một tập hợp các ảnh
gốc, các ảnh gốc này được lưu trong một thư viện căn cứ vào thư viện này ta
xây dựng được các thuật giải phân tích và tổ hợp ảnh.
+ Kỹ thuật tổng hợp ảnh (Image Synthesis): là lĩnh vực xây dựng mô hình và hình
ảnh của các vật thể dựa trên các đối tượng và mối quan hệ giữa chúng.
1.3.2.Phân loại theo hệ tọa độ
- Kỹ thuật đồ họa:
+ Kỹ thuật đồ họa 2 chiều: là kỹ thuật đồ hoạ máy tính sử dụng hệ toạ độ hai chiều
(hệ toạ độ phẳng), sử dụng rất nhiều trong kỹ thuật xử lý bản đồ, đồ thị.
+ Kỹ thuật đồ họa 3 chiều: : kỹ thuật đồ hoạ máy tính sử dụng hệ toạ độ ba
chiều, đòi hỏi rất nhiều tính toán và phức tạp hơn nhiều so với kỹ thuật đồ hoạ hai
chiều.
CHƯƠNG 2: GIẢI QUYẾT B I TOÁN
2.1. Phát biểu bài toán
- Sau khi tìm hiểu về thư viện Graphics.h nhóm chúng em đã quyết định thực hiện
vẽ một bức tranh 2D với đề tài phong cảnh từ những kiến thức đã học.
2.2. Các bước cài đặt
- Bước 1: Khai báo thư viện Graphics.h
- Bước 2: Khởi tạo cửa sổ có kích thước 720x500
- Bước 3: Khai báo các biến cần sử dụng.
- Bước 4: Sử dụng vòng lặp for để thực hiện chuyển động của bức tranh.
- Bước 5: Gọi hàm closegraph(); để đóng cửa sổ đồ họa.
2.3. Cài đặt thuật toán
#include<iostream>
#include<conio.h>
#include<graphics.h>
#include<dos.h>
int main()
{
initwindow(720,500);
//a,b,c,d are used for Translation
int a=200, b=-190;
int c=200, d=-190;
//x,y,m,n are used for Scaling.
float x=0.5, y=0.5;
float m=0.5, n=0.5;
for(int i=0;i<=700;i++)
{
setcolor(15);
setfillstyle(SOLID_FILL,15);
circle(150,35,25);
floodfill(149,29,15);
setcolor(WHITE);
//================================= 3 CLOUDS
===============================//
//================================= MIDDLE CLOUD
===========================//
ellipse(200+200-i,30,60,240,10,15);
ellipse(225+200-i,20,345,165,20,15);
ellipse(262+200-i,27,340,160,20,15);
ellipse(268+200-i,42,230,50,20,10);
ellipse(226+200-i,46,163,340,31,15);
ellipse(300+200-i,21,20,182,21,19);
ellipse(325+200-i,31,290,100,21,15);
ellipse(299+200-i,45,228,20,33,11);
//================================= LEFT CLOUD
=============================//
ellipse(40+200-i,30,60,240,10,15);
ellipse(65+200-i,20,345,165,20,15);
ellipse(105+200-i,27,340,160,20,15);
ellipse(109+200-i,42,230,50,20,10);
ellipse(66+200-i,46,163,340,31,17);
//================================= RIGHT CLOUD
============================//
ellipse(450+200-i,30,60,240,10,15);
ellipse(475+200-i,20,345,165,20,15);
ellipse(512+200-i,27,340,160,20,15);
ellipse(518+200-i,42,230,50,20,10);
ellipse(476+200-i,46,163,340,31,15);
//================================= 3 TREES
==============================//
//================================= 1ST TREE
==============================//
//TREE 1 CROWN
setcolor(WHITE);
setfillstyle(SOLID_FILL,GREEN);
line(240-i,420,275-i,420);
line(240-i,420,245-i,405);
line(275-i,420,270-i,405);
line(245-i,405,240-i,405);
line(270-i,405,275-i,405);
line(240-i,405,245-i,390);
line(275-i,405,270-i,390);
line(245-i,390,240-i,390);
line(270-i,390,275-i,390);
line(240-i,390,258-i,370);
line(275-i,390,257-i,370);
floodfill(259-i,375,WHITE);
//TREE 1 TRUNK
setcolor(WHITE);
setfillstyle(SOLID_FILL,BROWN);
line(250-i,460,250-i,420);
line(265-i,460,265-i,420);
line(250-i,460,265-i,460);
line(250-i,420,265-i,420);
floodfill(255-i,441,WHITE);
//================================= 2ND TREE
===============================//
/* THIS TREE IS TRANSLATION (TRANSFORMATION) OF 1ST
TREE. */
//TREE 2 CROWN
setcolor(WHITE);
setfillstyle(SOLID_FILL,GREEN);
line(240+c-i,420+d,275+c-i,420+d);
line(240+c-i,420+d,245+c-i,405+d);
line(275+c-i,420+d,270+c-i,405+d);
line(245+c-i,405+d,240+c-i,405+d);
line(270+c-i,405+d,275+c-i,405+d);
line(240+c-i,405+d,245+c-i,390+d);
line(275+c-i,405+d,270+c-i,390+d);
line(245+c-i,390+d,240+c-i,390+d);
line(270+c-i,390+d,275+c-i,390+d);
line(240+c-i,390+d,258+c-i,370+d);
line(275+c-i,390+d,257+c-i,370+d);
floodfill(259+c-i,375+d,WHITE);
//TREE 2 TRUNK
setcolor(WHITE);
setfillstyle(SOLID_FILL,BROWN);
line(250+c-i,460+d,250+c-i,420+d);
line(265+c-i,460+d,265+c-i,420+d);
line(250+c-i,460+d,265+c-i,460+d);
line(250+c-i,420+d,265+c-i,420+d);
floodfill(255+c-i,441+d,WHITE);
//================================= 3RD TREE
===============================//
/* THIS TREE IS SCALING (TRANSFORMATION) OF 1ST TREE.
*/
//TREE 3 CROWN
setcolor(WHITE);
setfillstyle(SOLID_FILL,GREEN);
line(240*m-i,420*n,275*m-i,420*n);
line(240*m-i,420*n,245*m-i,405*n);
line(275*m-i,420*n,270*m-i,405*n);
line(245*m-i,405*n,240*m-i,405*n);
line(270*m-i,405*n,275*m-i,405*n);
line(240*m-i,405*n,245*m-i,390*n);
line(275*m-i,405*n,270*m-i,390*n);
line(245*m-i,390*n,240*m-i,390*n);
line(270*m-i,390*n,275*m-i,390*n);
line(240*m-i,390*n,258*m-i,370*n);
line(275*m-i,390*n,257*m-i,370*n);
floodfill(259*m-i,375*n,WHITE);
//TREE 3 TRUNK
setcolor(WHITE);
setfillstyle(SOLID_FILL,BROWN);
line(250*m-i,460*n,250*m-i,420*n);
line(265*m-i,460*n,265*m-i,420*n);
line(250*m-i,460*n,265*m-i,460*n);
line(250*m-i,420*n,265*m-i,420*n);
floodfill(255*m-i,441*n,WHITE);
//================================= 3 HOUSES
===============================//
//================================= 1ST HOUSE
==============================//
//TRIANGLE OF HOUSE 1
setcolor(WHITE);
setfillstyle(SOLID_FILL,BROWN);
line(88-i,400,163-i,400);
line(100-i,370,88-i,400);
line(100-i,370,112-i,400);
line(100-i,370,150-i,370);
line(150-i,370,163-i,400);
floodfill(100-i,375,WHITE);
setcolor(WHITE);
setfillstyle(SOLID_FILL,BROWN);
line(88-i,400,163-i,400);
line(100-i,370,112-i,400);
line(100-i,370,112-i,400);
line(100-i,370,150-i,370);
line(150-i,370,163-i,400);
floodfill(105-i,375,WHITE);
setcolor(WHITE);
setfillstyle(SOLID_FILL,5);
line(112-i,400,112-i,440);
line(88-i,440,112-i,440);
line(88-i,400,88-i,440);
line(112-i,440,163-i,440);
floodfill(90-i,402,WHITE);
setcolor(WHITE);
setfillstyle(SOLID_FILL,5);
line(163-i,400,163-i,440);
line(112-i,440,163-i,440);
line(112-i,400,112-i,440);
line(88-i,400,163-i,400);
floodfill(115-i,405,WHITE);
//1ST HOUSE DOOR
setcolor(WHITE);
setfillstyle(SOLID_FILL,RED);
line(94-i,440,94-i,420);
line(106-i,440,106-i,420);
line(94-i,420,106-i,420);
floodfill(97-i,435,WHITE);
//================================= 2ND HOUSE
==============================//
/* THIS HOUSE IS TRANSLATION (TRANSFORMATION) OF
1ST TREE. */
//TRIANGLE OF HOUSE 2
setcolor(WHITE);
setfillstyle(SOLID_FILL,YELLOW);
line(88+a-i,400+b,163+a-i,400+b);
line(100+a-i,370+b,88+a-i,400+b);
line(100+a-i,370+b,112+a-i,400+b);
line(100+a-i,370+b,150+a-i,370+b);
line(150+a-i,370+b,163+a-i,400+b);
floodfill(100+a-i,375+b,WHITE);
setcolor(WHITE);
setfillstyle(SOLID_FILL,YELLOW);
line(88+a-i,400+b,163+a-i,400+b);
line(100+a-i,370+b,112+a-i,400+b);
line(100+a-i,370+b,112+a-i,400+b);
line(100+a-i,370+b,150+a-i,370+b);
line(150+a-i,370+b,163+a-i,400+b);
floodfill(105+a-i,375+b,WHITE);
setcolor(WHITE);
setfillstyle(SOLID_FILL,1);
line(112+a-i,400+b,112+a-i,440+b);
line(88+a-i,440+b,112+a-i,440+b);
line(88+a-i,400+b,88+a-i,440+b);
line(112+a-i,440+b,163+a-i,440+b);
floodfill(90+a-i,402+b,WHITE);
setcolor(WHITE);
setfillstyle(SOLID_FILL,1);
line(163+a-i,400+b,163+a-i,440+b);
line(112+a-i,440+b,163+a-i,440+b);
line(112+a-i,400+b,112+a-i,440+b);
line(88+a-i,400+b,163+a-i,400+b);
floodfill(115+a-i,405+b,WHITE);
//2ND HOUSE DOOR
setcolor(WHITE);
setfillstyle(SOLID_FILL,BROWN);
line(94+a-i,440+b,94+a-i,420+b);
line(106+a-i,440+b,106+a-i,420+b);
line(94+a-i,420+b,106+a-i,420+b);
floodfill(97+a-i,435+b,WHITE);
//================================= 3RD HOUSE
==============================//
/* THIS HOUSE IS SCALING (TRANSFORMATION) OF 1ST
TREE. */
//TRIANGLE OF HOUSE 3
setcolor(WHITE);
setfillstyle(SOLID_FILL,LIGHTBLUE);
line(88*x-i,400*y,163*x-i,400*y);
line(100*x-i,370*y,88*x-i,400*y);
line(100*x-i,370*y,112*x-i,400*y);
line(100*x-i,370*y,150*x-i,370*y);
line(150*x-i,370*y,163*x-i,400*y);
floodfill(100*x-i,375*y,WHITE);
setcolor(WHITE);
setfillstyle(SOLID_FILL,LIGHTBLUE);
line(88*x-i,400*y,163*x-i,400*y);
line(100*x-i,370*y,112*x-i,400*y);
line(100*x-i,370*y,112*x-i,400*y);
line(100*x-i,370*y,150*x-i,370*y);
line(150*x-i,370*y,163*x-i,400*y);
floodfill(105*x-i,375*y,WHITE);
setcolor(WHITE);
setfillstyle(SOLID_FILL,4);
line(112*x-i,400*y,112*x-i,440*y);
line(88*x-i,440*y,112*x-i,440*y);
line(88*x-i,400*y,88*x-i,440*y);
line(112*x-i,440*y,163*x-i,440*y);
floodfill(90*x-i,402*y,WHITE);
setcolor(WHITE);
setfillstyle(SOLID_FILL,4);
line(163*x-i,400*y,163*x-i,440*y);
line(112*x-i,440*y,163*x-i,440*y);
line(112*x-i,400*y,112*x-i,440*y);
line(88*x-i,400*y,163*x-i,400*y);
floodfill(115*x-i,405*y,WHITE);
//3RD HOUSE DOOR
setcolor(WHITE);
setfillstyle(SOLID_FILL,YELLOW);
line(94*x-i,440*y,94*x-i,420*y);
line(106*x-i,440*y,106*x-i,420*y);
line(94*x-i,420*y,106*x-i,420*y);
floodfill(97*x-i,435*y,WHITE);
//================================= MOUNTAIN
===============================//
//1ST TRIANGLE
setcolor(WHITE);
//BOUNDARY COLOR OF MOUNTAIN
setfillstyle(SOLID_FILL,GREEN); //ACTUAL COLOR OF
MOUNTAIN
line(0,150,100,75);
line(100,75,200,150);
//2ND TRIANGLE
setcolor(WHITE);
setfillstyle(SOLID_FILL,GREEN);
line(175,131,275,75);
line(275,75,375,150);
//3RD TRIANGLE
setcolor(WHITE);
setfillstyle(SOLID_FILL,GREEN);
line(350,131,450,75);
line(450,75,550,150);
//4TH TRIANGLE
setcolor(WHITE);
setfillstyle(SOLID_FILL,GREEN);
line(525,131,600,75);
line(600,75,710,150);
line(0,150,710,150);
floodfill(100,136,WHITE);
//BOTTOM LINE OF MOUNTAIN
floodfill(275,136,WHITE); //2ND TRIANGLE
floodfill(450,136,WHITE); //3RD TRIANGLE
floodfill(600,136,WHITE); //4TH TRIANGLE
//================================= CAR
====================================//
//ROAD
setcolor(WHITE);
line(0,325,700,325);
line(0,275,700,275);
//CAR BODY
setcolor(WHITE);
setfillstyle(SOLID_FILL,4);
line(0+i,300,13+i,298);
line(13+i,298,30+i,280);
line(30+i,280,80+i,280);
line(80+i,280,97+i,298);
line(97+i,298,120+i,300);
line(0+i,300,0+i,315);
line(0+i,315,25+i,315);
arc(35+i,315,0,180,9);
line(45+i,315,67+i,315);
arc(77+i,315,0,180,9);
line(85+i,315,120+i,315);
line(120+i,300,120+i,315);
// floodfill(1+i,301,WHITE);
//FIRST WINDOW
setcolor(WHITE);
setfillstyle(SOLID_FILL,BLACK);
line(32+i,285,50+i,285);
line(50+i,285,50+i,295);
line(50+i,295,23+i,295);
line(32+i,285,23+i,295);
floodfill(33+i,286,WHITE);
//SECOND WINDOW
setcolor(WHITE);
setfillstyle(SOLID_FILL,BLACK);
line(60+i,285,78+i,285);
line(60+i,285,60+i,295);
line(60+i,295,85+i,295);
line(78+i,285,85+i,295);
floodfill(61+i,286,WHITE);
//WHEELS
//LEFT WHEELS
setcolor(WHITE);
setfillstyle(SOLID_FILL,BROWN);
circle(35+i,315,6);
floodfill(36+i,314,WHITE);
//RIGHT WHEELS
setcolor(WHITE);
setfillstyle(SOLID_FILL,BROWN);
circle(77+i,315,6);
floodfill(76+i,314,WHITE);
delay(40);
cleardevice();
}
getch();
closegraph();
}
| 1/21

Preview text:

TRƯỜNG ĐẠI HỌC ĐIỆN LỰC
KHOA CÔNG NGHỆ THÔNG TIN
BÁO CÁO CHUYÊN ĐỀ HỌC PHẦN ĐỒ HỌA MÁY TÍNH ĐỀ T I:
VẼ TRANH PHONG CẢNH
Sinh viên thực hiện
: NGUYỄN TUẤN NHẬT NGUYỄN ĐÌNH SANG
Giảng viên hướng dẫn : NGÔ NGỌC TH NH Ngành
: CÔNG NGHỆ THÔNG TIN Chuyên ngành
: CÔNG NGHỆ PHẦN MỀM Lớp : D14CNPM6 Khóa : 2019-2023 PHIẾU CHẤM ĐIỂM
Sinh viên thực hiện: STT Họ và tên Chữ ký Nhiệm vụ 1 Nguyễn Tuấn Nhật Mã SV: 19810310242 2 Nguyễn Đình Sang Mã SV LỜI MỞ ĐẦU
Trong thời đại ngày nay, cùng với sự bùng nổ của cuộc cách mạng công
nghiệp 4.0 tập trung vào sự phát triển của công nghệ không thể không kể tới đồ họa máy tính.
Đồ họa máy tính là phương pháp và công nghệ dùng trong việc chuyển đổi
qua lại giữa dữ liệu và hình ảnh bằng máy tính. Đồ họa máy tính là một lĩnh vực
của khoa học máy tính nghiên cứu về ở toán học, các thuật toán cũng như các kĩ
thuật để cho phép tạo, hiển thị và điều khiển hình ảnh trên màn hình máy tính.
Đồ họa máy tính có liên quan ít nhiều đến một số lĩnh vực như đại số, hình
học giải tích, hình học họa hình, quang học,... và kĩ thuật máy tính, đặc biệt là chế
tạo phần cứng (các loại màn hình, các thiết bị xuất, nhập, các vỉ mạch đồ họa...).
Nhận thấy được đồ họa máy tính là công cụ không thể thiếu trong nhiều lĩnh
vực. Vậy nên, qua quá trình học tập và nghiên cứu môn học “ Đồ họa máy tính
cùng với sự chỉ dạy tận tình của thầy Nguyễn Ngọc Thành nhóm chúng em đã
chọn đề tài “Vẽ tranh phong cảnh sử dụng thư viện Graphics.h” làm đề tài nghiên cứu của mình.
Em xin gửi lời cảm ơn chân thành tới thầy giáo “Nguyễn Ngọc Thành ”
thầy cô giáo bộ môn khoa CNTT Trường Đại Học Điện Lực đã tận tình chỉ bảo
hướng dẫn và giúp đỡ chúng em để hoàn thành tốt bài báo cáo của mình.Trong quá
trình thực hiện có nhiều thiếu xót, khuyết điểm vì vậy mong thầy cô và các bạn cho
ý kiến đóng góp để nhóm e hoàn thiện đề tài của mình hơn.
CHƯƠNG 1: GIỚI THIỆU VỀ ĐỒ HỌA MÁY TÍNH
1.1.Lịch sử phát triển
- Graphics những năm 1950-1960:
+ Năm 1959 Thiết bị đồ hoạ đầu tiên là màn hình xuất hiện tại Đức.
+ Năm 1960 - SAGE (Semi-Automatic Ground Environment System) xuất hiện bút
sáng thao tác với màn hình.
+ Năm 1960 William Fetter nhà khoa học người Mỹ, ông đang nghiên cứu xây
dựng mô hình buồng lái máy bay cho hãng Boeing của Mỹ. Ông đã dựa trên hình
ảnh 3 chiều của mô hình ngườiphi công trong buồng lái của máy bay để xây dựng
nên một mô hình tối ưu cho buồng lái máy bay. Phương pháp này cho phép các nhà
thiết kế quan sát một cách trực quan vị trí của người lái trong khoang. Ông đặt tên
cho phương pháp này là đồ hoạ máy tính (Computer Graphics) .
+ Màn hình là thiết bị thông dụng nhất trong hệ đồ hoạ, các thao tác của hầu hết
các màn hình đều dựa trên thiết kế ống tia âm cực CRT (Cathode ray tube). Khi đó
giá để làm tươi màn hình là rất cao, máy tính xử lý chậm, đắt và không chắc chắn (không đáng tin cậy). - Graphics: 1960-1970
+ Năm 1963 Ivan Sutherland (hội nghị Fall Joint Computer - lần đầu tiên có khả
năng tạo mới, hiển thị và thay đổi được thực hiện trong thời gian thực trên màn CRT).
+ Hệ thống này được dùng để thiết kế mạch điện: CRT, LightPen (bút sáng),
computer (chứa chương trình xử lý thông tin). Người sử dụng có thể vẽ mạch điện
trực tiếp lên màn hình thông qua bút sáng. - Graphics:1970-1980
+ Raster Graphics (đồ hoạ điểm). Bắt đầu chuẩn đồ hoạ ví dụ như: GKS(Graphics
Kernel System): European effort (kết quả của châu âu), Becomes ISO 2D standard. - Graphics: 1980-1990
+ Mục đích đặc biệt về phần cứng, thiết bị hình học đồ hoạ Silicon. Xuất hiện các
chuẩn công nghiệp: PHIGS (Programmers Hierarchical Interactive Graphics
Standard) xác định các phương pháp chuẩn cho các mô hình thời gian thực và lập
trình hướng đối tượng.
+ Giao diện người máy Human-Computer Interface (HCI)
- Computer Graphics: 1990-2000
+ OpenGL API (Application Program Interface – giao diện chương trình ứng dụng).
+ Completely computer-sinh ra ngành điện ảnh phim truyện (Toy Story) rất thành
công. Các tiềm tàng phần cứng mới: Texture mapping (dán các ảnh của cảnh thật
lên bề mặt của đối tượng),blending (trộn màu)....
- Computer Graphics: 2000- nay
+ Ảnh hiện thực, các cạc đồ hoạ cho máy tính (Graphics cards for PCs), game boxes and game players.
+ Công nghiệp phim ảnh nhờ vào đồ hoạ máy tính (Computer graphics becoming
routine in movie industry): Maya (thế giới vật chất tri giác được)....
1.2. Khái niệm đồ họa máy tính và các kỹ thuật đồ họa
1.2.1. Đồ họa máy tính là gì ?
- Đồ họa máy tính là một ngành khoa học Tin học chuyên nghiên cứu về các
phương pháp và kỹ thuật để có thể mô tả và thao tác trên các đối tượng của thế giới thực bằng máy tính
- Về bản chất: đó là một quá trình xây dựng và phát triển các công cụ trên cả hai
lĩnh vực phần cứng và phần mềm hổ trợ cho các lập trình viên thiết kế các chương
trình có khả năng đồ họa cao.
- Với việc mô tả dữ liệu thông qua các hình ảnh và màu sắc đa dạng của nó, các
chương trình đồ họa thường thu hút người sử dụng bởi tính thân thiện, dể dùng,...
kích thích khả năng sáng tạo và nâng cao năng suất làm việc.
1.2.2. Các kỹ thuật đồ họa
1.2.2.1. Kỹ thuật đồ họa điểm
- Các mô hình, hình ảnh của các đối tượng được hiển thị thông qua từng pixel (từng mẫu rời rạc)
- Đặc điểm: Có thể thay đổi thuộc tính
+ Xoá đi từng pixel của mô hình và hình ảnh các đối tượng.
+ Các mô hình hình ảnh được hiển thị như một lưới điểm (grid) các pixel rời rạc,
+ Từng pixel đều có vị trí xác định, được hiển thị với một giá trị rời rạc (số nguyên)
các thông số hiển thị (màu sắc hoặc độ sáng)
+ Tập hợp tất cả các pixel của grid cho chúng ta mô hình, hình ảnh đối tượng mà chúng ta muốn hiển thị.
- Phương pháp để tạo ra các pixel:
+ Phương pháp dùng phần mềm để vẽ trực tiếp từng pixel một.
+ Dựa trên các lý thuyết mô phỏng (lý thuyết Fractal, v.v) để xây dựng nên hình
ảnh mô phỏng của sự vật.
+ Phương pháp rời rạc hoá (số hoá) hình ảnh thực của đối tượng.
+ Có thể sửa đổi (image editing) hoặc xử lý (image processing) mảng các pixel thu
được theo những phương pháp khác nhau để thu được hình ảnh đặc trưng của đối tượng.
1.2.2.2. Kỹ thuật đồ họa Vector
- Xây dựng mô hình hình học cho hình ảnh đối tượng, xác định các thuộc tính của
mô hình hình học, sau đó dựa trên mô hình này để thực hiện quá trình tô trát để
hiển thị từng điểm của mô hình, hình ảnh của đối tượng.
- Kỹ thuật này chỉ lưu trữ mô hình toán học của các thành phần trong mô hình hình
học cùng với các thuộc tính tương ứng mà không cần lưu lại toàn bộ tất cả các
pixel của hình ảnh đối tượng.
- So sánh giữa Đồ họa điểm và Đồ họa Vector: Đồ họa điểm Đồ họa Vector
- Hình ảnh và mô hình của các vật thể - Không thay đổi thuộc tính của từng
được biểu diễn bởi tập hợp các điểm điểm trực tiếp của lưới (grid)
- Xử lý với từng thành phần hình học
- Thay đổi thuộc tính của các pixel => cơ sở của nó và thực hiện quá trình tô
thay đổi từng phần và từng vùng của trát và hiển thị lại. hình ảnh.
- Quan sát hình ảnh và mô hình của
- Copy được các pixel từ một hình ảnh hình ảnh và sự vật ở nhiều góc độ này sang hình ảnh khác.
khác nhau bằng cách thay đổi điểm nhìn và góc nhìn.
1.3. Phân loại của đồ họa máy tính
1.3.1. Phân loại theo các lĩnh vực của đồ họa máy tính * Kỹ thuật đồ họa:
- Kiến tạo đồ họa gồm:
+ Các hệ CAD/CAM (Computer Aided Design/Computer Aided Manufacture
System): kỹthuật đồ hoạ tập hợp các công cụ, các kỹ thuật trợ giúp cho thiết kế các
chi tiết và các hệ thống khác nhau: hệ thống cơ, hệ thống điện, hệ thống điện tử….
+ Đồ hoạ minh hoạ (Presentation Graphics): gồm các công cụ giúp hiển thị các số
liệu thí nghiệm một cách trực quan, dựa trên các mẫu đồ thị hoặc các thuật toán có sẵn.
+ Đồ hoạ hoạt hình và nghệ thuật: bao gồm các công cụ giúp cho các hoạ sĩ, các
nhà thiết kế phim hoạt hình chuyên nghiệp làm các kỹ xảo hoạt hình, vẽ tranh... Ví
dụ: phần mềm 3D Studio, 3D Animation, 3D Studio Max - Xử lý đồ họa gồm :
+ Kỹ thuật xử lý ảnh (Computer Imaging): sau quá trình xử lý ảnh cho ta ảnh số
của đối tượng. Trong quá trình xử lý ảnh sử dụng rất nhiều các kỹ thuật phức tạp:
kỹ thuật khôi phục ảnh, kỹ thuật làm nổi ảnh, kỹ thuật xác định biên ảnh.
+ Kỹ thuật nhận dạng (Pattern Recognition): từ những ảnh mẫu có sẵn ta phân loại
theo cấu trúc, hoặc theo các tiêu trí được xác định từ trước và bằng các thuật toán
chọn lọc để có thể phân tích hay tổng hợp ảnh đã cho thành một tập hợp các ảnh
gốc, các ảnh gốc này được lưu trong một thư viện và căn cứ vào thư viện này ta
xây dựng được các thuật giải phân tích và tổ hợp ảnh.
+ Kỹ thuật tổng hợp ảnh (Image Synthesis): là lĩnh vực xây dựng mô hình và hình
ảnh của các vật thể dựa trên các đối tượng và mối quan hệ giữa chúng.
1.3.2.Phân loại theo hệ tọa độ - Kỹ thuật đồ họa:
+ Kỹ thuật đồ họa 2 chiều: là kỹ thuật đồ hoạ máy tính sử dụng hệ toạ độ hai chiều
(hệ toạ độ phẳng), sử dụng rất nhiều trong kỹ thuật xử lý bản đồ, đồ thị.
+ Kỹ thuật đồ họa 3 chiều: : là kỹ thuật đồ hoạ máy tính sử dụng hệ toạ độ ba
chiều, đòi hỏi rất nhiều tính toán và phức tạp hơn nhiều so với kỹ thuật đồ hoạ hai chiều.
CHƯƠNG 2: GIẢI QUYẾT B I TOÁN
2.1. Phát biểu bài toán
- Sau khi tìm hiểu về thư viện Graphics.h nhóm chúng em đã quyết định thực hiện
vẽ một bức tranh 2D với đề tài phong cảnh từ những kiến thức đã học.
2.2. Các bước cài đặt
- Bước 1: Khai báo thư viện Graphics.h
- Bước 2: Khởi tạo cửa sổ có kích thước 720x500
- Bước 3: Khai báo các biến cần sử dụng.
- Bước 4: Sử dụng vòng lặp for để thực hiện chuyển động của bức tranh.
- Bước 5: Gọi hàm closegraph(); để đóng cửa sổ đồ họa.
2.3. Cài đặt thuật toán #include #include #include #include int main() { initwindow(720,500);
//a,b,c,d are used for Translation int a=200, b=-190; int c=200, d=-190;
//x,y,m,n are used for Scaling. float x=0.5, y=0.5; float m=0.5, n=0.5; for(int i=0;i<=700;i++) { setcolor(15); setfillstyle(SOLID_FILL,15); circle(150,35,25); floodfill(149,29,15); setcolor(WHITE);
//================================= 3 CLOUDS
===============================//
//================================= MIDDLE CLOUD ===========================//
ellipse(200+200-i,30,60,240,10,15);
ellipse(225+200-i,20,345,165,20,15);
ellipse(262+200-i,27,340,160,20,15);
ellipse(268+200-i,42,230,50,20,10);
ellipse(226+200-i,46,163,340,31,15);
ellipse(300+200-i,21,20,182,21,19);
ellipse(325+200-i,31,290,100,21,15);
ellipse(299+200-i,45,228,20,33,11);
//================================= LEFT CLOUD
=============================//
ellipse(40+200-i,30,60,240,10,15);
ellipse(65+200-i,20,345,165,20,15);
ellipse(105+200-i,27,340,160,20,15);
ellipse(109+200-i,42,230,50,20,10);
ellipse(66+200-i,46,163,340,31,17);
//================================= RIGHT CLOUD ============================//
ellipse(450+200-i,30,60,240,10,15);
ellipse(475+200-i,20,345,165,20,15);
ellipse(512+200-i,27,340,160,20,15);
ellipse(518+200-i,42,230,50,20,10);
ellipse(476+200-i,46,163,340,31,15);
//================================= 3 TREES
==============================//
//================================= 1ST TREE
==============================// //TREE 1 CROWN setcolor(WHITE);
setfillstyle(SOLID_FILL,GREEN); line(240-i,420,275-i,420); line(240-i,420,245-i,405); line(275-i,420,270-i,405); line(245-i,405,240-i,405); line(270-i,405,275-i,405); line(240-i,405,245-i,390); line(275-i,405,270-i,390); line(245-i,390,240-i,390); line(270-i,390,275-i,390); line(240-i,390,258-i,370); line(275-i,390,257-i,370); floodfill(259-i,375,WHITE); //TREE 1 TRUNK setcolor(WHITE);
setfillstyle(SOLID_FILL,BROWN); line(250-i,460,250-i,420); line(265-i,460,265-i,420); line(250-i,460,265-i,460); line(250-i,420,265-i,420); floodfill(255-i,441,WHITE);
//================================= 2ND TREE
===============================//
/* THIS TREE IS TRANSLATION (TRANSFORMATION) OF 1ST TREE. */ //TREE 2 CROWN setcolor(WHITE);
setfillstyle(SOLID_FILL,GREEN);
line(240+c-i,420+d,275+c-i,420+d);
line(240+c-i,420+d,245+c-i,405+d);
line(275+c-i,420+d,270+c-i,405+d);
line(245+c-i,405+d,240+c-i,405+d);
line(270+c-i,405+d,275+c-i,405+d);
line(240+c-i,405+d,245+c-i,390+d);
line(275+c-i,405+d,270+c-i,390+d);
line(245+c-i,390+d,240+c-i,390+d);
line(270+c-i,390+d,275+c-i,390+d);
line(240+c-i,390+d,258+c-i,370+d);
line(275+c-i,390+d,257+c-i,370+d);
floodfill(259+c-i,375+d,WHITE); //TREE 2 TRUNK setcolor(WHITE);
setfillstyle(SOLID_FILL,BROWN);
line(250+c-i,460+d,250+c-i,420+d);
line(265+c-i,460+d,265+c-i,420+d);
line(250+c-i,460+d,265+c-i,460+d);
line(250+c-i,420+d,265+c-i,420+d);
floodfill(255+c-i,441+d,WHITE);
//================================= 3RD TREE
===============================//
/* THIS TREE IS SCALING (TRANSFORMATION) OF 1ST TREE. */ //TREE 3 CROWN setcolor(WHITE);
setfillstyle(SOLID_FILL,GREEN);
line(240*m-i,420*n,275*m-i,420*n);
line(240*m-i,420*n,245*m-i,405*n);
line(275*m-i,420*n,270*m-i,405*n);
line(245*m-i,405*n,240*m-i,405*n);
line(270*m-i,405*n,275*m-i,405*n);
line(240*m-i,405*n,245*m-i,390*n);
line(275*m-i,405*n,270*m-i,390*n);
line(245*m-i,390*n,240*m-i,390*n);
line(270*m-i,390*n,275*m-i,390*n);
line(240*m-i,390*n,258*m-i,370*n);
line(275*m-i,390*n,257*m-i,370*n);
floodfill(259*m-i,375*n,WHITE); //TREE 3 TRUNK setcolor(WHITE);
setfillstyle(SOLID_FILL,BROWN);
line(250*m-i,460*n,250*m-i,420*n);
line(265*m-i,460*n,265*m-i,420*n);
line(250*m-i,460*n,265*m-i,460*n);
line(250*m-i,420*n,265*m-i,420*n);
floodfill(255*m-i,441*n,WHITE);
//================================= 3 HOUSES
===============================//
//================================= 1ST HOUSE
==============================// //TRIANGLE OF HOUSE 1 setcolor(WHITE);
setfillstyle(SOLID_FILL,BROWN); line(88-i,400,163-i,400); line(100-i,370,88-i,400); line(100-i,370,112-i,400); line(100-i,370,150-i,370); line(150-i,370,163-i,400); floodfill(100-i,375,WHITE); setcolor(WHITE);
setfillstyle(SOLID_FILL,BROWN); line(88-i,400,163-i,400); line(100-i,370,112-i,400); line(100-i,370,112-i,400); line(100-i,370,150-i,370); line(150-i,370,163-i,400); floodfill(105-i,375,WHITE); setcolor(WHITE); setfillstyle(SOLID_FILL,5); line(112-i,400,112-i,440); line(88-i,440,112-i,440); line(88-i,400,88-i,440); line(112-i,440,163-i,440); floodfill(90-i,402,WHITE); setcolor(WHITE); setfillstyle(SOLID_FILL,5); line(163-i,400,163-i,440); line(112-i,440,163-i,440); line(112-i,400,112-i,440); line(88-i,400,163-i,400); floodfill(115-i,405,WHITE); //1ST HOUSE DOOR setcolor(WHITE); setfillstyle(SOLID_FILL,RED); line(94-i,440,94-i,420); line(106-i,440,106-i,420); line(94-i,420,106-i,420); floodfill(97-i,435,WHITE);
//================================= 2ND HOUSE
==============================//
/* THIS HOUSE IS TRANSLATION (TRANSFORMATION) OF 1ST TREE. */ //TRIANGLE OF HOUSE 2 setcolor(WHITE);
setfillstyle(SOLID_FILL,YELLOW);
line(88+a-i,400+b,163+a-i,400+b);
line(100+a-i,370+b,88+a-i,400+b);
line(100+a-i,370+b,112+a-i,400+b);
line(100+a-i,370+b,150+a-i,370+b);
line(150+a-i,370+b,163+a-i,400+b);
floodfill(100+a-i,375+b,WHITE); setcolor(WHITE);
setfillstyle(SOLID_FILL,YELLOW);
line(88+a-i,400+b,163+a-i,400+b);
line(100+a-i,370+b,112+a-i,400+b);
line(100+a-i,370+b,112+a-i,400+b);
line(100+a-i,370+b,150+a-i,370+b);
line(150+a-i,370+b,163+a-i,400+b);
floodfill(105+a-i,375+b,WHITE); setcolor(WHITE); setfillstyle(SOLID_FILL,1);
line(112+a-i,400+b,112+a-i,440+b);
line(88+a-i,440+b,112+a-i,440+b);
line(88+a-i,400+b,88+a-i,440+b);
line(112+a-i,440+b,163+a-i,440+b); floodfill(90+a-i,402+b,WHITE); setcolor(WHITE); setfillstyle(SOLID_FILL,1);
line(163+a-i,400+b,163+a-i,440+b);
line(112+a-i,440+b,163+a-i,440+b);
line(112+a-i,400+b,112+a-i,440+b);
line(88+a-i,400+b,163+a-i,400+b);
floodfill(115+a-i,405+b,WHITE); //2ND HOUSE DOOR setcolor(WHITE);
setfillstyle(SOLID_FILL,BROWN);
line(94+a-i,440+b,94+a-i,420+b);
line(106+a-i,440+b,106+a-i,420+b);
line(94+a-i,420+b,106+a-i,420+b); floodfill(97+a-i,435+b,WHITE);
//================================= 3RD HOUSE
==============================//
/* THIS HOUSE IS SCALING (TRANSFORMATION) OF 1ST TREE. */ //TRIANGLE OF HOUSE 3 setcolor(WHITE);
setfillstyle(SOLID_FILL,LIGHTBLUE);
line(88*x-i,400*y,163*x-i,400*y);
line(100*x-i,370*y,88*x-i,400*y);
line(100*x-i,370*y,112*x-i,400*y);
line(100*x-i,370*y,150*x-i,370*y);
line(150*x-i,370*y,163*x-i,400*y);
floodfill(100*x-i,375*y,WHITE); setcolor(WHITE);
setfillstyle(SOLID_FILL,LIGHTBLUE);
line(88*x-i,400*y,163*x-i,400*y);
line(100*x-i,370*y,112*x-i,400*y);
line(100*x-i,370*y,112*x-i,400*y);
line(100*x-i,370*y,150*x-i,370*y);
line(150*x-i,370*y,163*x-i,400*y);
floodfill(105*x-i,375*y,WHITE); setcolor(WHITE); setfillstyle(SOLID_FILL,4);
line(112*x-i,400*y,112*x-i,440*y);
line(88*x-i,440*y,112*x-i,440*y);
line(88*x-i,400*y,88*x-i,440*y);
line(112*x-i,440*y,163*x-i,440*y); floodfill(90*x-i,402*y,WHITE); setcolor(WHITE); setfillstyle(SOLID_FILL,4);
line(163*x-i,400*y,163*x-i,440*y);
line(112*x-i,440*y,163*x-i,440*y);
line(112*x-i,400*y,112*x-i,440*y);
line(88*x-i,400*y,163*x-i,400*y);
floodfill(115*x-i,405*y,WHITE); //3RD HOUSE DOOR setcolor(WHITE);
setfillstyle(SOLID_FILL,YELLOW);
line(94*x-i,440*y,94*x-i,420*y);
line(106*x-i,440*y,106*x-i,420*y);
line(94*x-i,420*y,106*x-i,420*y); floodfill(97*x-i,435*y,WHITE);
//================================= MOUNTAIN
===============================// //1ST TRIANGLE setcolor(WHITE); //BOUNDARY COLOR OF MOUNTAIN
setfillstyle(SOLID_FILL,GREEN); //ACTUAL COLOR OF MOUNTAIN line(0,150,100,75); line(100,75,200,150); //2ND TRIANGLE setcolor(WHITE);
setfillstyle(SOLID_FILL,GREEN); line(175,131,275,75); line(275,75,375,150); //3RD TRIANGLE setcolor(WHITE);
setfillstyle(SOLID_FILL,GREEN); line(350,131,450,75); line(450,75,550,150); //4TH TRIANGLE setcolor(WHITE);
setfillstyle(SOLID_FILL,GREEN); line(525,131,600,75); line(600,75,710,150); line(0,150,710,150); floodfill(100,136,WHITE); //BOTTOM LINE OF MOUNTAIN
floodfill(275,136,WHITE); //2ND TRIANGLE
floodfill(450,136,WHITE); //3RD TRIANGLE
floodfill(600,136,WHITE); //4TH TRIANGLE
//================================= CAR
====================================// //ROAD setcolor(WHITE); line(0,325,700,325); line(0,275,700,275); //CAR BODY setcolor(WHITE); setfillstyle(SOLID_FILL,4); line(0+i,300,13+i,298); line(13+i,298,30+i,280); line(30+i,280,80+i,280); line(80+i,280,97+i,298); line(97+i,298,120+i,300); line(0+i,300,0+i,315); line(0+i,315,25+i,315); arc(35+i,315,0,180,9); line(45+i,315,67+i,315); arc(77+i,315,0,180,9); line(85+i,315,120+i,315); line(120+i,300,120+i,315); // floodfill(1+i,301,WHITE); //FIRST WINDOW setcolor(WHITE);
setfillstyle(SOLID_FILL,BLACK); line(32+i,285,50+i,285); line(50+i,285,50+i,295); line(50+i,295,23+i,295); line(32+i,285,23+i,295); floodfill(33+i,286,WHITE); //SECOND WINDOW setcolor(WHITE);
setfillstyle(SOLID_FILL,BLACK); line(60+i,285,78+i,285); line(60+i,285,60+i,295); line(60+i,295,85+i,295); line(78+i,285,85+i,295); floodfill(61+i,286,WHITE); //WHEELS //LEFT WHEELS setcolor(WHITE);
setfillstyle(SOLID_FILL,BROWN); circle(35+i,315,6); floodfill(36+i,314,WHITE); //RIGHT WHEELS setcolor(WHITE);
setfillstyle(SOLID_FILL,BROWN); circle(77+i,315,6); floodfill(76+i,314,WHITE); delay(40); cleardevice(); } getch(); closegraph(); }