void krawedzie()
{
for(int i=0;i<ile;i++)
{
//--- kr. podst. dolnej------
l1[i]=i;
l2[i]=(i+1)%ile;
//--- kr. podst. srodkowej---
l1[i+ile]=ile+i;
l2[i+ile]=ile+((i+1)%ile);
//--- kr. podst. górnej------
l1[2*ile+i]=i;
l2[2*ile+i]=ile+i;
//--- kr. boczne dolne-------
l1[i+3*ile]=2*ile+i;
l2[i+3*ile]=2*ile+((i+1)%ile);
//--- kr. boczne górne-------
l1[4*ile+i]=i+ile;
l2[4*ile+i]=2*ile+i;
}
}
void rysuj(Graphics g)
{
for(int i=0;i<5*ile;i++)
if(l[i])
_3d.linia(g,w[l1[i]],w[l2[i]]);
}
|
A oto kluczowe procedury :
void ocena_widocznosci()
{int i,j;
for(i=0;i<5*ile;i++) l[i]=false;
//---podstawy--------------------
if(widoczna(2,1,0))
for(i=0;i<ile;i++) l[i]=true;
else
for(i=3*ile;i<4*ile;i++)
l[i]=true;
for(i=0;i<ile;i++)
{
j=(i+1)%ile;
//---sciany boczne dolne---------
if(widoczna(i,j,i+ile))
{
l[i]=true;
l[2*ile+i]=true;
l[i+ile]=true;
l[2*ile+j]=true;
}
//---sciany boczne górne---------
if(widoczna(i+ile,j+ile,i+2*ile))
{
l[i+ile]=true;
l[3*ile+i]=true;
l[i+4*ile]=true;
l[4*ile+j]=true;
}
}
}
|