荔园在线

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

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


发信人: playboy (为了钱,努力!), 信区: Program
标  题: 曲线
发信站: BBS 荔园晨风站 (Wed Jan 12 08:51:47 2000), 转信

#include <graphics.h>
#include <math.h>
#include <conio.h>
#include <stdlib.h>
float qx[4][4]={{1,0,0,-1.573},{0,0,0,0},{0,0,0,0},{-1.573,0,0,.1494}};
float qy[4][4]={{0,1,1.573,0},{0,1,1.573,0},{0,0,0,0},{0,0,0,0}};
float qz[4][4]={{0,0,0,0},{1,0,0,-1.573},{1.573,0,.1494},{0,0,0,0}};
float px[4]={0,0,0,0};
float py[4]={0,0,0,0};
float pz[4]={0,0,0,0};
float hv[4]={0,0,0,0};
float hu[4]={0,0,0,0};
float x[100],y[100],z[100];
void transfhv()
{
 int i,l;
 for (i=0;i<=3;i++)
  {
    px[i]=0;
    py[i]=0;
    pz[i]=0;
    for (l=0;l<=3;l++)
     {
     px[i]=px[i]+qx[i][l]*hv[l];
     py[i]=py[i]+qy[i][l]*hv[l];
     pz[i]=pz[i]+qz[i][l]*hv[l];
     }
  }
}
void transfhu()
{
  int i,l;
  for (l=0;l<=3;l++)
  {
    px[l]=0;
    py[l]=0;
    pz[l]=0;
    for (i=0;i<=3;i++)
     {
       px[l]=px[l]+qx[i][l]*hu[i];
       py[i]=py[l]+qy[i][l]*hu[i];
       pz[i]=pz[i]+qz[i][l]*hu[i];
     }
  }
}
void transfv(int n)
{
 int i;
 x[n]=0;
 y[n]=0;
 z[n]=0;
 for (i=0;i<=3;i++)
 {
   x[n]=x[n]+px[i]*hv[i];
   y[n]=y[n]+py[i]*hv[i];
   z[n]=z[n]+pz[i]*hv[i];
 }
}
void transfu(int n)
{
 int i;
 x[n]=0;
 y[n]=0;
 z[n]=0;
 for (i=0;i<=3;i++)
  {
    x[n]=x[n]+px[i]*hu[i];
    y[n]=y[n]+py[i]*hu[i];
    z[n]=z[n]+pz[i]*hu[i];
  }
}
void draw(float ca,float sa,float cm,float sm,int n)
{
  int i;
   float st;
   for (i=0;i<n;i++)
    {
      st=x[i];
      x[i]=x[i]*cm-z[i]*sm;
      z[i]=st*sm+z[i]*cm;
      y[i]=y[i]*ca-z[i]*cm;
      y[i]=y[i]*ca-z[i]*sa;
      putpixel(getmaxx()/3+150*x[i],getmaxy()/2-y[i]*90,YELLOW);
    }
}
void main()
{
 float ca,sa,m,cm,sm,j,k,st;
 int i,l,n;
 int g=DETECT;
 int gm;
 initgraph(&g,&gm,"f:\\turboc3");
 setbkcolor(BLUE);
 setcolor(WHITE);
 cleardevice();
 ca=cos(45/57.3);
 sa=sin(45/57.3);
 for ( i=0;i<=3;i++)
  {
    m=90/57.3;
    cm=cos(i*m);
    sm=sin(i*m);
    for (j=0;j<=1;j+=.1)
     {
       hv[0]=(j-1)*(j-1)*(2*j+1);
       hv[1]=(3-2*j)*j*j;
       hv[2]=(j-1)*(j-1)*j;
       hv[3]=(j-1)*j*j;
       transfhv();
       n=0;
       for (k=0;k<1;k+=.02)
       {
       hu[0]=(k-1)*(k-1)*(2*k+1);
       hu[1]=(3-2*k)*k*k;
       hu[2]=(k-1)*(k-1)*k;
       hu[3]=(k-1)*k*k;
       n++;
       transfu(n);
    }
    draw(ca,sa,cm,sm,n);
    }
    for (j=0;j<=1;j+=.1)
    {
    hu[0]=(j-1)*(j-1)*(2*j+1);
    hu[1]=(3-2*j)*j*j;
    hu[2]=(j-1)*(j-1)*j;
    hu[3]=(j-1)*j*j;
    transfhu();
    n=0;
    for ( k=0;k<1;k+=.02)
    {
     hv[0]=(k-1)*(k-1)*(2*k+1);
     hv[1]=(3-2*k)*k*k;
     hu[2]=(k-1)*(k-1)*k;
     hu[3]=(k-1)*k*k;
     n++;
     transfv(n);
     }
     draw(ca,sa,cm,sm,n);
     }
   }
     getch();
     closegraph();
  }


--
※ 来源:·BBS 荔园晨风站 bbs.szu.edu.cn·[FROM: 192.168.1.90]


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

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店