荔园在线
荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀
[回到开始]
[上一篇][下一篇]
发信人: playboy (为了钱,努力!), 信区: Program
标 题: 消隐
发信站: BBS 荔园晨风站 (Wed Jan 12 08:54:43 2000), 转信
#define nv 10
#define n 3
#define ns 7
#define mp 6
#define ne 15
#include <stdio.h>
#include <conio.h>
#include <graphics.h>
#include <stdlib.h>
#include <math.h>
main()
{
int i,j;
int k=0,l;
int ps,pe;
int qq,mm,ll,nn;
int sc;
double th,TH;
double st,ct;
int xa,ya;
double u1,u2,u3;
double v1,v2,v3;
double ww,kk;
double v[nv][n]={40,25,-30,40,25,10,40,0,30,\
40,-25,10,40,-25,-30,-40,25,-30, \
-40,25,10,-40,0,30,-40,-25,10, \
-40,-25,-30};
double sv[nv][n];
int np[ns]={6,5,6,5,5,5,5};
int s[ns][mp]={1,2,3,4,5,1,\
1,6,7,2,1,0,\
6,10,9,8,7,6,\
10,5,4,9,10,0,\
2,7,8,3,2,0,\
4,3,8,9,4,0,\
1,5,10,6,1,0};
double n1[ns][n];
double ss[ns][n];
int e[ne][n];
int flag;
int g,m;
g=DETECT;
initgraph(&g,&m,"f:\\turboc3");
for (i=0;i<ne;i++)
for (j=0;j<n;j++)
e[i][j]=0;
for (i=0;i<ns;i++)
for (j=0;j<n;j++)
ss[i][j]=0;
xa=200;
ya=200;
sc=2;
th=35;
TH=th/57.3;
qq=200;
ll=-28;
mm=-50;
nn=-35;
st=sin(TH);
ct=cos(th);
for (i=0;i<nv;i++)
{ kk=1+(v[i][0]*st-v[i][1]*ct-mm)/qq;
sv[i][0]=(v[i][0]*ct+v[i][1]*st+ll)/kk;
sv[i][1]=(-v[i][0]*st+v[i][1]*ct+mm)/kk;
sv[i][2]=(v[i][2]+mm)/kk;
}
for (i=0;i<ns;i++)
{
u1=sv[s[i][1]-1][0]-sv[s[i][0]-1][0];
u2=sv[s[i][1]-1][1]-sv[s[i][0]-1][1];
u3=sv[s[i][1]-1][2]-sv[s[i][0]-1][2];
v1=sv[s[i][2]-1][0]-sv[s[i][0]-1][0];
v2=sv[s[i][2]-1][1]-sv[s[i][0]-1][1];
v3=sv[s[i][2]-1][2]-sv[s[i][0]-1][2];
n1[i][0]=u2*v3-u3*v2;
n1[i][1]=u3*v1-u1*v3;
n1[i][2]=u1*v2-u2*v1;
}
for (i=0;i<ns;i++)
{
ss[i][0]=-sv[s[i][0]-1][0];
ss[i][1]=qq-sv[s[i][0]-1][1];
ss[i][2]=-sv[s[i][0]-1][2];
}
for (i=0;i<ns;i++)
{
ww=ss[i][0]*n1[i][0]+ss[i][1]*n1[i][1]+ss[i][2]*n1[i]
[2];
if (ww<=0)
continue;
ps=s[i][0];
for (j=1;j<np[i];j++)
{
pe=s[i][j];
for (l=0,flag=0;l<=k-1;l++)
{
if (ps==e[l][1]&&pe==e[l][0])
{
e[l][2]=2;
flag=1;
break;
}
}
if (flag!=1)
{
e[k][0]=ps;
e[k][1]=pe;
e[k][2]=1;
k=k+1;
}
ps=pe;
}
}
for (i=0;i<ne;i++)
{
if (e[i][2]==0)
break;
line(xa-(sv[e[i][0]-1][0])*sc,ya-(sv[e[i][0]-1][2]*sc),
\
xa-(sv[e[i][1]-1][0])*sc,ya-(sv[e[i][1]-1][2])*sc);
}
getch();
closegraph();
}
--
※ 来源:·BBS 荔园晨风站 bbs.szu.edu.cn·[FROM: 192.168.1.90]
[回到开始]
[上一篇][下一篇]
荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店