荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: 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软件 网络书店