📄 filldlg.cpp
字号:
if (a1*a2>0)
{
num[1]=i;
break;
}
}
d=num[1];
for (i=1;i<=3;i++)
{
if (i!=num[1])
{
j=i;
break;
}
}
for (i=1;i<=3;i++)
{
if (i!=num[1]&&i!=j)
{
c=i;
break;
}
}
k1=float(points[d].y-points[j].y)/float(points[d].x-points[j].x+0.0000001);
b1=points[d].y-k1*points[d].x;
a1=points[0].y-k1*points[0].x-b1;
a2=points[c].y-k1*points[c].x-b1;
if (a1*a2>0)
{
num[2]=j;
num[3]=c;
}
else
{
num[2]=c;
num[3]=j;
}
for (i=0;i<4;i++)
{
pts[i]=points[num[i]];
}*/
}
void CFillDlg::triangleFill(CPoint *pt, float *k, float *b)
{
bool flag=false;
UINT i,j;
UINT start,second,third;
CPoint point;
float k3[3],b3[3];
float a1,a2,a3;
for (i=0;i<height;i++)
{
for (j=0;j<width;j++)
{
point.x=j;
point.y=i;
if (point==pt[0])
{
start=0;
flag=true;
}
if (point==pt[1])
{
start=1;
flag=true;
}
if (point==pt[2])
{
start=2;
flag=true;
}
if (flag)
{
break;
}
}
if (flag)
{
break;
}
}
for (i=0;i<=2;i++)
{
if (i!=start)
{
second=i;
break;
}
}
for (i=0;i<=2;i++)
{
if (i!=start&&i!=second)
{
third=i;
break;
}
}
k3[0]=float(pt[second].y-pt[start].y)/float(pt[second].x-pt[start].x+0.0000001);
k3[1]=float(pt[start].y-pt[third].y)/float(pt[start].x-pt[third].x+0.0000001);
k3[2]=float(pt[second].y-pt[third].y)/float(pt[second].x-pt[third].x+0.0000001);
b3[0]=pt[second].y-k3[0]*pt[second].x;
b3[1]=pt[third].y-k3[1]*pt[third].x;
b3[2]=pt[second].y-k3[2]*pt[second].x;
if (k3[0]>=0&&k3[1]>=0)
{
if (k3[0]>k3[1])
{
if (k3[2]>0)
{
if (k3[2]>k[1])
{
for (i=0;i<height;i++)
{
for (j=0;j<width;j++)
{
a1=i-k3[0]*j-b3[0];
a2=i-k3[1]*j-b3[1];
a3=i-k3[2]*j-b3[2];
if (a1<=0&&a2>=0&&a3<=0)
{
if (region[i][j]==0)
{
region[i][j]=color;
}
}
}
}
}
else
{
for (i=0;i<height;i++)
{
for (j=0;j<width;j++)
{
a1=i-k3[0]*j-b3[0];
a2=i-k3[1]*j-b3[1];
a3=i-k3[2]*j-b3[2];
if (a1<=0&&a2>=0&&a3>=0)
{
if (region[i][j]==0)
{
region[i][j]=color;
}
}
}
}
}
}
else
{
for (i=0;i<height;i++)
{
for (j=0;j<width;j++)
{
a1=i-k3[0]*j-b3[0];
a2=i-k3[1]*j-b3[1];
a3=i-k3[2]*j-b3[2];
if (a1<=0&&a2>=0&&a3<=0)
{
if (region[i][j]==0)
{
region[i][j]=color;
}
}
}
}
}
}
else
{
if (k3[2]>0)
{
if (k[2]>k[1])
{
for (i=0;i<height;i++)
{
for (j=0;j<width;j++)
{
a1=i-k3[1]*j-b3[1];
a2=i-k3[0]*j-b3[0];
a3=i-k3[2]*j-b3[2];
if (a1<=0&&a2>=0&&a3<=0)
{
if (region[i][j]==0)
{
region[i][j]=color;
}
}
}
}
}
else
{
for (i=0;i<height;i++)
{
for (j=0;j<width;j++)
{
a1=i-k3[1]*j-b3[1];
a2=i-k3[0]*j-b3[0];
a3=i-k3[2]*j-b3[2];
if (a1<=0&&a2>=0&&a3>=0)
{
if (region[i][j]==0)
{
region[i][j]=color;
}
}
}
}
}
}
else
{
for (i=0;i<height;i++)
{
for (j=0;j<width;j++)
{
a1=i-k3[1]*j-b3[1];
a2=i-k3[0]*j-b3[0];
a3=i-k3[2]*j-b3[2];
if (a1<=0&&a2>=0&&a3<=0)
{
if (region[i][j]==0)
{
region[i][j]=color;
}
}
}
}
}
}
}
if (k3[0]<0&&k3[1]<0)
{
if (k3[0]>k3[1])
{
if (k3[2]>0)
{
for (i=0;i<height;i++)
{
for (j=0;j<width;j++)
{
a1=i-k3[0]*j-b3[0];
a2=i-k3[1]*j-b3[1];
a3=i-k3[2]*j-b3[2];
if (a1>=0&&a2<=0&&a3>=0)
{
if (region[i][j]==0)
{
region[i][j]=color;
}
}
}
}
}
else
{
if (k[2]>k[1])
{
for (i=0;i<height;i++)
{
for (j=0;j<width;j++)
{
a1=i-k3[0]*j-b3[0];
a2=i-k3[1]*j-b3[1];
a3=i-k3[2]*j-b3[2];
if (a1>=0&&a2<=0&&a3<=0)
{
if (region[i][j]==0)
{
region[i][j]=color;
}
}
}
}
}
else
{
for (i=0;i<height;i++)
{
for (j=0;j<width;j++)
{
a1=i-k3[0]*j-b3[0];
a2=i-k3[1]*j-b3[1];
a3=i-k3[2]*j-b3[2];
if (a1>=0&&a2<=0&&a3>=0)
{
if (region[i][j]==0)
{
region[i][j]=color;
}
}
}
}
}
}
}
else
{
if (k3[2]>0)
{
for (i=0;i<height;i++)
{
for (j=0;j<width;j++)
{
a1=i-k3[1]*j-b3[1];
a2=i-k3[0]*j-b3[0];
a3=i-k3[2]*j-b3[2];
if (a1>=0&&a2<=0&&a3>=0)
{
if (region[i][j]==0)
{
region[i][j]=color;
}
}
}
}
}
else
{
if (k[2]>k[1])
{
for (i=0;i<height;i++)
{
for (j=0;j<width;j++)
{
a1=i-k3[1]*j-b3[1];
a2=i-k3[0]*j-b3[0];
a3=i-k3[2]*j-b3[2];
if (a1>=0&&a2<=0&&a3<=0)
{
if (region[i][j]==0)
{
region[i][j]=color;
}
}
}
}
}
else
{
for (i=0;i<height;i++)
{
for (j=0;j<width;j++)
{
a1=i-k3[1]*j-b3[1];
a2=i-k3[0]*j-b3[0];
a3=i-k3[2]*j-b3[2];
if (a1>=0&&a2<=0&&a3>=0)
{
if (region[i][j]==0)
{
region[i][j]=color;
}
}
}
}
}
}
}
}
if (k3[0]*k3[1]<0)
{
if (k3[0]>k3[1])
{
for (i=0;i<height;i++)
{
for (j=0;j<width;j++)
{
a1=i-k3[1]*j-b3[1];
a2=i-k3[0]*j-b3[0];
a3=i-k3[2]*j-b3[2];
if (a1>=0&&a2>=0&&a3<=0)
{
if (region[i][j]==0)
{
region[i][j]=color;
}
}
}
}
}
else
{
for (i=0;i<height;i++)
{
for (j=0;j<width;j++)
{
a1=i-k3[0]*j-b3[0];
a2=i-k3[1]*j-b3[1];
a3=i-k3[2]*j-b3[2];
if (a1>=0&&a2>=0&&a3<=0)
{
if (region[i][j]==0)
{
region[i][j]=color;
}
}
}
}
}
}
}
bool CFillDlg::IsTriangle(CPoint *point, CPoint *tripts,float *k,float *b)
{
/*bool Istriangle=false;
int i,j;
int max,min;
float a[3];
for (i=0;i<2;i++)
{
if (i==0)
{
j=1;
}
else
{
j=0;
}
a[0]=float(point[i].y-point[j].y)/float(point[i].x-point[j].x+0.0000001);
a[1]=float(point[i].y-point[2].y)/float(point[i].x-point[2].x+0.0000001);
a[2]=float(point[i].y-point[3].y)/float(point[i].x-point[3].x+0.0000001);
if (a[0]==a[1]||a[1]==a[2]||a[2]==a[0])
{
if (a[0]==a[1])
{
if (point[i].x<point[j].x)
{
min=i;
}
else
{
min=j;
}
if (point[min].x>point[2].x)
{
min=2;
}
tripts[0]=point[min];
if (point[i].x>point[j].x)
{
max=i;
}
else
{
max=j;
}
if (point[max].x<point[2].x)
{
max=2;
}
tripts[1]=point[max];
tripts[2]=point[3];
}
if (a[1]==a[2])
{
if (point[i].x<point[2].x)
{
min=i;
}
else
{
min=2;
}
if (point[min].x>point[3].x)
{
min=3;
}
tripts[0]=point[min];
if (point[i].x>point[2].x)
{
max=i;
}
else
{
max=2;
}
if (point[max].x<point[3].x)
{
max=3;
}
tripts[1]=point[max];
tripts[2]=point[j];
}
if (a[0]==a[2])
{
if (point[i].x<point[j].x)
{
min=i;
}
else
{
min=j;
}
if (point[min].x>point[3].x)
{
min=3;
}
tripts[0]=point[min];
if (point[i].x>point[j].x)
{
max=i;
}
else
{
max=j;
}
if (point[max].x<point[3].x)
{
max=3;
}
tripts[1]=point[max];
tripts[2]=point[2];
}
k[0]=float(tripts[1].y-tripts[0].y)/float(tripts[1].x-tripts[0].x+0.0000001);
k[1]=float(tripts[2].y-tripts[1].y)/float(tripts[2].x-tripts[1].x+0.0000001);
k[2]=float(tripts[2].y-tripts[0].y)/float(tripts[2].x-tripts[0].x+0.0000001);
b[0]=tripts[0].y-k[0]*tripts[0].x;
b[1]=tripts[1].y-k[1]*tripts[1].x;
b[2]=tripts[2].y-k[2]*tripts[2].x;
Istriangle=true;
break;
}
}
return Istriangle;*/
return true;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -