資源簡介
將繪制的折線連接成多邊形,并選擇種子填充法或掃描線填充法進(jìn)行填充
鼠標(biāo)交互生成矩形裁剪框,實(shí)現(xiàn)對繪制的折線的裁剪
鼠標(biāo)交互生成矩形裁剪框,實(shí)現(xiàn)對繪制的折線的裁剪
代碼片段和文件信息
#include
#include
#include
#include?
#include?
#include?
#include
#define?pointSize?1
class?point4
{
public:
point4(){startx=0;starty=0;endx=0;endy=0;}
int?startx;
int?starty;
int?endx;
int?endy;
};
point4?array[20];
int?line_number;
int?startXstartYendXendY;
int?mouse_button_state;//0:沒有操作??1:第一個(gè)點(diǎn)剛按下????2:松開點(diǎn)
int?mark;
void?lineBresPlane(int?xStartint?yStartint?xEndint?yEnd)
{
int?x?y?xx?yy;
if(?xStart>xEnd?)
{
x?=?xEnd;
y?=?yEnd;
xx?=?xStart;
yy?=?yStart;
}
else
{
x?=?xStart;
y?=?yStart;
xx?=?xEnd;
yy?=?yEnd;
}
glBegin(GL_POINTS);
glVertex2i(x?y);
glEnd();
while(x {
x?++;
glBegin(GL_POINTS);
glVertex2i(x?y);
glEnd();
}
}
void?lineBresApeak(int?xStartint?yStartint?xEndint?yEnd)
{
int?x?y?xx?yy;
if(?yStart>yEnd?)
{
y?=?yEnd;
x?=?xEnd;
yy?=?yStart;
xx?=?xStart;
}
else
{
y?=?yStart;
x?=?xStart;
yy?=?yEnd;
xx?=?xEnd;
}
glBegin(GL_POINTS);
glVertex2i(x?y);
glEnd();
while(y {
y?++;
glBegin(GL_POINTS);
glVertex2i(x?y);
glEnd();
}
}
void?lineBresDiagonal(int?xStartint?yStartint?xEndint?yEnd)
{
int?x?y?xx?yy;
if(?xStart>xEnd?)
{
x?=?xEnd;
y?=?yEnd;
xx?=?xStart;
yy?=?yStart;
}
else
{
x?=?xStart;
y?=?yStart;
xx?=?xEnd;
yy?=?yEnd;
}
glBegin(GL_POINTS);
glVertex2i(x?y);
glEnd();
bool?flag?=?false;
if(yy>y)?flag?=?true;
while(x {
x?++;
if(flag)
??y?++;
else
??y?--;
glBegin(GL_POINTS);
glVertex2i(x?y);
glEnd();
}
}
void?lineBresXbig(int?xStartint?yStartint?xEndint?yEnd)
{
int?dx?=?fabs(xEnd?-?xStart)?dy?=?fabs(yEnd?-?yStart);
int?p?=?2*dy?-?dx;
int?twoDy?=?2*dy?twoDyMinusDx?=?2*(dy-dx);
int?x?y?xx?yy;
if(?xStart>xEnd?)
{
x?=?xEnd;
y?=?yEnd;
xx?=?xStart;
yy?=?yStart;
}
else
{
x?=?xStart;
y?=?yStart;
xx?=?xEnd;
yy?=?yEnd;
}
glBegin(GL_POINTS);
glVertex2i(x?y);
glEnd();
bool?flag?=?false;
if(yy>y)?flag?=?true;
while(x {
x?++;
if(p<0)
p?+=?twoDy;
else
{
if(flag)
??y?++;
else
??y?--;
p?+=?twoDyMinusDx;
}
glBegin(GL_POINTS);
glVertex2i(x?y);
glEnd();
}
}
void?lineBresYbig(int?xStartint?yStartint?xEndint?yEnd)
{
int?dx?=?fabs(xEnd?-?xStart)?dy?=?fabs(yEnd?-?yStart);
int?p?=?2*dx?-?dy;
int?twoDx?=?2*dx?twoDxMinusDy?=?2*(dx-dy);
int?x?y?xx?yy;
if(?yStart>yEnd?)
{
y?=?yEnd;
x?=?xEnd;
yy?=?yStart;
xx?=?xStart;
}
else
{
y?=?yStart;
x?=?xStart;
yy?=?yEnd;
xx?=?xEnd;
}
glBegin(GL_POINTS);
glVertex2i(x?y);
glEnd();
bool?flag?=?false;
if(xx>x)?flag?=?true;
while(y {
y?++;
if(p<0)
p?+=?twoDx;
else
{
if(flag)
??x?++;
else
??x?--;
p?+=?twoDxMinusDy;
}
glBegin(GL_P
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????文件???????6327??2009-12-14?19:25??Bresenham.cpp
-----------?---------??----------?-----??----
?????????????????6327????????????????????1
評論
共有 條評論