⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 filldlg.cpp

📁 用于内存中任意四边形的填充,无论凹凸四边形都适用
💻 CPP
📖 第 1 页 / 共 2 页
字号:
		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 + -