#include "graphics.h" #include "math.h" #include "stdio.h" main() { int driver, mode, i, v, x[99], y[99], xx, yy, zz, l, x2[99], u, e; char ch; float a, b,d, px[99], py[99], pz[99], px0[99],py0[99],pz0[99],px1[99],py1[99]; float sina, cosa, sinb, cosb; FILE *fp; d=100; a=3.15; b=-0.3; e=3; i=1; l=0; printf("Paina ykk”st„ jos sinulla on 3-D lasit ja jos ei ,niin paina nollaa."); scanf("%d", &u); driver=VGA; mode=VGAHI; initgraph(&driver, &mode, ""); if ((fp=fopen("alus.dat", "r"))==NULL) { line(0, 0, 640, 480); } fp=fopen("alus.dat", "r"); fscanf(fp, "%2i", &v); while (i<=v) { fscanf(fp,"%4i%4i%4i", &xx, &yy, &zz); px0[i]=xx; py0[i]=yy; pz0[i]=zz; i++; } while (l<1) { i=1; while (i<=v) { sina=sin(a); cosa=cos(a); sinb=sin(b); cosb=cos(b); px1[i]=px0[i]*cosa-py0[i]*sina; py1[i]=px0[i]*sina+py0[i]*cosa; py[i]=py1[i]*cosb+pz0[i]*sinb; pz[i]=-py1[i]*sinb+pz0[i]*cosb; px[i]=px1[i]; x[i]=e*d/(d+pz[i])*px[i]+320; x2[i]=pz[i]/(d+pz[i])*15+x[i]; y[i]=e*d/(d+pz[i])*py[i]+240; i++; } i=1; while(i<=v) { if ((i>1) && (i%2==0)) { setcolor(GREEN); line(x[i], y[i], x[i-1], y[i-1]); if(u==1) { setcolor(RED); line(x2[i], y[i], x2[i-1], y[i-1]); } } i=i++; } ch=getch(); if (ch=='4') { clearviewport(); a=a+0.1; } if (ch=='6') { clearviewport(); a=a-0.1; } if (ch=='2') { clearviewport(); b=b-0.1; } if (ch=='8') { clearviewport(); b=b+0.1; } if (ch=='+') { clearviewport(); i=1; while(i<=v) { pz0[i]=pz0[i]-10; i++; } } if (ch=='-') { clearviewport(); i=1; while(i<=v) { pz0[i]=pz0[i]+10; i++; } } if (ch==' ') l=1; } }