//函式功能:哈夫變換
void hough(double x[361],double y[361],int maxi[3],int maxd[3],int max[3])
{
int i,j;
//哈夫變換
double dist;
int di;
int pointn=361;//361個掃描點
double ang;
for(i=0;i<pointn;i++){
for(j=0;j<360;j++){//0-259度
ang=j*3.14/180;
dist=( x[i]*cos(ang) + y[i]*sin(ang) );
di=int(dist);
if(di>=0)
{
v[j][di]++;
}
}
}
//找出獲得 最多 投票的 角度&距離
max[0]=0;
for(i=0;i<360;i++){
for(j=0;j<800;j++){//0-259度
if(v[i][j]>max[0])
{
max[0]=v[i][j];
maxi[0]=i;
maxd[0]=j;
}
}
}
//找出獲得 次最多 投票的 角度&距離
max[1]=0;
for(i=0;i<360;i++){
for(j=0;j<800;j++){//0-259度
if(v[i][j]>max[1])
{
if( (fabs(j-maxd[0])>10) )
{
max[1]=v[i][j];
maxi[1]=i;
maxd[1]=j;
}
}
}
}
//找出獲第三多投票的 角度&距離
max[2]=0;
for(i=0;i<360;i++){
for(j=0;j<800;j++){//0-259度
if(v[i][j]>max[2])
{
if( (fabs(j-maxd[0])>10) && (fabs(j-maxd[1])>10) )
{
max[2]=v[i][j];
maxi[2]=i;
maxd[2]=j;
}
}
}
}
}