Académique Documents
Professionnel Documents
Culture Documents
h>
#include <conio.h>
#include <stdlib.h>
#include <graphics.h>
#include <dos.h>
#include <iostream.h>
#define MAX_VERTEX 20
#define MAX_EDGE 20
#define TRUE 1
#define FALSE 0
#define Round(x) int(x+0.5)
// === Cau truc 1 DIEM === //
typedef struct
{
double x;
double y;
}DIEM;
// === Cau truc 1 DA GIAC
typedef struct
{
int sodinh;
DIEM dinh[MAX_VERTEX];
}DAGIAC;
typedef struct
{
int NumPt;
int xPt[MAX_EDGE];
}XINTERSECT; //hoanh do giao diem
typedef struct
{
DIEM P1[MAX_EDGE];
DIEM P2[MAX_EDGE];
}EDGE;
void Initgraph()
{
int gdriver = DETECT, gmode, errorcode;
initgraph(&gdriver, &gmode, "d:\\BORLANDC\\BGI");
}
int yMin()
{
int Min = p.dinh[0].y;
for(int i = 0;i < 6; i++)
{
if(p.dinh[i].y <Min)
Min = p.dinh[i].y;
}
return Min;
}
//* Buoc 2: Tim diem cat:
void Tomau()
{
/* Cho cac canh vao 1 DS canh
Giam tung do cua cac doan dac biet 1 dvi:*/
setcolor(YELLOW);
int t;
for(int i = 0;i < 6; i++)
{
if((p.dinh[i].y < p.dinh[(i+1)%6].y)&&
(p.dinh[(i+1)%6].y < p.dinh[(i+2)%6].y))
{
t = p.dinh[(i+1)%6].y;
e.P1[i] = p.dinh[i];
e.P2[i].x = p.dinh[(i+1)%6].x - (p.dinh[i].x-p.dinh[(i+1)%6].x)/(p.dinh[i]
.y-p.dinh[(i+1)%6].y);
e.P2[i].y = t-1;
}
else
if((p.dinh[i].y > p.dinh[(i+1)%6].y)&&(p.dinh[(i+1)%6].y > p.dinh[(i+2)%6]
.y))
{
t = p.dinh[(i+1)%6].y;
e.P1[i] = p.dinh[i];
e.P2[i].y = t+1;
e.P2[i].x = p.dinh[(i+1)%6].x +
(p.dinh[(i+2)%6].x-p.dinh[(i+1)%6].x)/
(p.dinh[(i+2)%6].y-p.dinh[(i+1)%6].y);
}
else
{
e.P1[i] = p.dinh[i];
e.P2[i] = p.dinh[(i+1)%6];
}
}