Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (185.82 KB, 4 trang )
<span class='text_page_counter'>(1)</span><div class='page_container' data-page=1>
<b>THỰC HÀNH 2: CODE VẼ ĐIỂM, ĐƯỜNG, ĐỌC FILE, VẼ ĐỒ THỊ </b>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <iostream>
#include <fstream>
#include <glut.h> //khai báo thư viện OpenGL để sử dụng thư viện OpenGL
//<<<<<<<<<<<<<<<<<<<<<<< myInit >>>>>>>>>>>>>>>>>>>>
using namespace std;
int A[50][50];
int n;
int ViTri[50][2];
void myInit(void) //Thiết lập các thơng số cần thiết cho chương trình
{
//Xóa tồn bộ màn hình và tô bằng màu trắng
glClearColor(1.0,1.0,1.0,0.0);
// xác định màu cho bút vẽ là màu đen
glColor3f(0.0f, 0.0f, 0.0f);
// Thiết lập tham số cho chế độ view của chương trình. Ở đây là 2D
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
//Thiết lập vùng tọa độ hiển thị nhìn thấy trong hệ tọa độ
gluOrtho2D(0.0, 640.0, 0.0, 480.0);
}
//<<<<<<<<<<<<<<<<<<<<<<<< myMouse >>>>>>>>>>>>>>>>>
//Xử lý tất cả các sự kiện liên quan đến chuột như click chuột trái, phải, scroll,
…
void myMouse(int button, int state, int x, int y)
{ //to be added later
//<<<<<<<<<<<<<<<<<<<<<<<< myDisplay >>>>>>>>>>>>>>>>>
//Xử lý toàn bộ thao tác vẽ lên trên màn hình khi chạy chương trình
void myDisplay(void)
{
//Xóa tồn bộ màn hình
glClear(GL_COLOR_BUFFER_BIT);
glPointSize(5.0); //size
glColor3f (0.0, 0.0, 1.0); //mau
glBegin(GL_POINTS);
for (int i=0;i<n;i++)
glVertex2i( ViTri[i][0], ViTri[i][1] );
glEnd();
glColor3f (0.0, 1.0, 0.0); //mau
for (int i=0;i<n-1;i++)
for (int j=i+1;j<n;j++)
if(A[i][j]==1)
{
glBegin(GL_LINES); //canh
glVertex2i(ViTri[i][0], ViTri[i][1]);
glVertex2i(ViTri[j][0], ViTri[j][1]);
glEnd();
}
//Đẩy nội dung từ vùng nhớ đệm ra màn hình cho mình thấy
glFlush();
}
// doc file
void Doc_File()
{
ifstream f("g2.txt");
{
for (int j=0; j<n;j++)
f>>A[i][j];
}
for (int i=0;i<n;i++)
{
for (int j=0; j<2;j++)
f>>ViTri[i][j];
}
f.close();
}
// xuat file
void Xuat_File()
{
for ( int i=0;i<n;i++)
{
for (int j=0; j<n;j++)
cout<<A[i][j]<<" ";
cout<<endl;
}
for ( int i=0;i<n;i++)
{
for (int j=0; j<2;j++)
cout<<ViTri[i][j]<<" ";
cout<<endl;
}
}
//<<<<<<<<<<<<<<<<<<<<<<<< main >>>>>>>>>>>>>>>>>>>>>>
//Hàm chính chạy chương trình
void main()
{
Doc_File();
Xuat_File();
// Thiết lập kích thước cửa sổ của windows
glutInitWindowSize(640,480);
// Thiết lập vị trí hiển thị trên màn hình. ở đây hiển thị tại tọa độ (100, 50)
glutInitWindowPosition(100, 50);
// Đặt tên cửa sổ windows
glutCreateWindow("Button Example");
// Đăng ký các hàm xử lý chuột và hiển thị ra màn hình
glutDisplayFunc(myDisplay); // gắn với hàm myDisplay ở trên
glutMouseFunc(myMouse); // gắn với hàm myMouse ở trên
// Gọi hàm myInit ở trên để thiết lập các thơng số khác cho chương trình
myInit();
// Vòng lặp chờ xử lý các thao tác liên quan đến của số windows như sự
// kiện của chuột, bàn phím, …