Geri git   Van.GEN.TR Forum | Yerel Van Forumu > Bilgisayar > Programlama > Pascal

 
 
Konu Araçları Stil
Alt 27/05/07, 20:06   #3
salelltd
Albay
 
salelltd - ait Kullanıcı Resmi (Avatar)
 
Üyelik tarihi: May 2007
Bulunduğu yer: marsın en derin yeri
Yaş: 39
Mesajlar: 600
Tecrübe Puanı: 0 salelltd will become famous soon enough
Standart

üç boyutlu cisimlerle ilgili bi program..

uses graph,crt;
const maxz=500;ux=20;uy=20;uz=20;oux=150;ouy=150;ouz=0;k nkt=25;tknkt=knkt*knkt;
type xyz=record
...........x,y,z:real;
.........end;
.....xy=record
..........x,y:real;
........end;
.....cizgi=record
.............n1,n2:xyz;
...........end;
.....dortgen=array[1..4] of cizgi;
.....cisim=array[1..4] of dortgen;
.....kure=array[1..tknkt] of xyz;
var gd,gm,ox,oy:integer;cis:array[1..50] of cisim;c:char;sil:boolean;say:byte;ku:kure;
procedure kureyap(x,y,z,r:real;var k:kure);
var i,j,xx:integer;
begin
..xx:=0;
..for i:=1 to knkt do
..for j:=1 to knkt do
..begin
....inc(xx);
....k[xx].x:=x+r*cos(j*2*pi/knkt)*cos(i*2*pi/knkt);
....k[xx].y:=y-r*cos(j*2*pi/knkt)*sin(i*2*pi/knkt);
....k[xx].z:=z-r*sin(j*2*pi/knkt);
..end;
end;
procedure otele(var c:cisim;x,y,z:real);
var i,j:byte;
begin
..for i:=1 to 4 do
..for j:=1 to 4 do
..with c[i,j] do
..begin
....n1.x:=n1.x+x;n1.y:=n1.y+y;n1.z:=n1.z+z;
....n2.x:=n2.x+x;n2.y:=n2.y+y;n2.z:=n2.z+z;
..end;
end;
procedure kureotele(var k:kure;x,y,z:real);
var i:integer;
begin
..for i:=1 to tknkt do begin k[i].x:=k[i].x+x;k[i].y:=k[i].y+y;k[i].z:=k[i].z+z;end;
end;
procedure cevir(a:xyz;var b:xy);
begin
..b.x:=ox+a.x*(1-a.z/maxz);b.y:=oy-a.y*(1-a.z/maxz);
end;
procedure cizgic(c:cizgi);
var c1,c2:xy;
begin
..cevir(c.n1,c1);cevir(c.n2,c2);line(round(c1.x),r ound(c1.y),round(c2.x),round(c2.y));
end;
procedure karec(c:dortgen);
var c1,c2:xy;i:byte;
begin
..for i:=1 to 4 do
..begin
....cevir(c[i].n1,c1);cevir(c[i].n2,c2);
....line(round(c1.x),round(c1.y),round(c2.x),round (c2.y));
..end;
end;
procedure ciz(c:cisim;r:byte);
var i:byte;
begin
..setcolor(r);for i:=1 to 4 do karec(c[i]);
end;
procedure kureciz(k:kure;r:byte);
var i:integer;kk:xy;
begin
..for i:=1 to tknkt do
..begin
....cevir(k[i],kk);putpixel(round(kk.x),round(kk.y),r);
..end;
end;
procedure don(var a,b:real;aci:real);
var c:real;
begin
..c:=a;
..a:=c*cos(aci*pi/180)-b*sin(aci*pi/180);
..b:=b*cos(aci*pi/180)+c*sin(aci*pi/180);
end;
procedure donc(var k:xyz;axy,ayz,axz:real);
begin
..don(k.x,k.y,axy);
..don(k.y,k.z,ayz);
..don(k.z,k.x,axz);
end;
procedure donkure(var k:kure;axy,ayz,axz:real);
var i:integer;
begin
..for i:=1 to tknkt do donc(k[i],axy,ayz,axz);
end;
procedure doncizgi(var c:cizgi;a1,a2,a3:real);
begin
..donc(c.n1,a1,a2,a3);
..donc(c.n2,a1,a2,a3);
end;
procedure donk(var c:dortgen;a1,a2,a3:real);
var i:byte;
begin
..for i:=1 to 4 do doncizgi(c[i],a1,a2,a3);
end;
procedure dondur(var d:cisim;xy,xz,yz:real);
var i:byte;
begin
..for i:=1 to 4 do begin donk(d[i],xy,yz,xz);donk(d[i],xy,yz,xz);end;
end;
procedure cizgiol(var c:cizgi;n1,n2:xyz);
begin
..c.n1:=n1;c.n2:=n2;
end;
procedure dortgenolustur(var k:dortgen;n1,n2,n3,n4:xyz);
begin
..cizgiol(k[1],n1,n2);
..cizgiol(k[2],n2,n3);
..cizgiol(k[3],n3,n4);
..cizgiol(k[4],n4,n1);
end;
procedure cisimolustur(var c:cisim;n1,n2,n3,n4,n5,n6,n7,n8:xyz);
begin
..dortgenolustur(c[1],n1,n2,n3,n4);
..dortgenolustur(c[2],n1,n2,n7,n6);
..dortgenolustur(c[3],n4,n3,n8,n5);
..dortgenolustur(c[4],n7,n6,n5,n8);
end;
procedure ck(var c:cisim;x,y,z,ux,uy,uz:real);
var n1,n2,n3,n4,n5,n6,n7,n8:xyz;
begin
..n1.x:=x;n1.y:=y;n1.z:=z;
..n2.x:=x;n2.y:=y+uy;n2.z:=z;
..n3.x:=x+ux;n3.y:=y+uy;n3.z:=z;
..n4.x:=x+ux;n4.y:=y;n4.z:=z;
..n5.x:=x+ux;n5.y:=y;n5.z:=uz;
..n6.x:=x;n6.y:=y;n6.z:=uz;
..n7.x:=x;n7.y:=y+uy;n7.z:=uz;
..n8.x:=x+ux;n8.y:=y+uy;n8.z:=uz;
..cisimolustur(c,n1,n2,n3,n4,n5,n6,n7,n8);
end;
procedure init;
var i,j,k,l,m:byte;
begin
{..say:=27;for i:=1 to say do ck(cis[i],i*50-say*25-50,0,0,50,50,50);}
{..say:=27;for i:=1 to say do ck(cis[i],cos(i*pi/18)*oux,sin(i*pi/18)*ouy,ouz,ux,uy,uz);}
{..say:=27;m:=20;l:=0;for i:=0 to 2 do for j:=0 to 2 do for k:=0 to 2 do begin inc(l);ck(cis[l],i*m-m,j*m-m,-k*m,m,m,m);end;}
{..say:=1;ck(cis[1],40,0,0,45,70,50);}
..kureyap(0,0,0,50,ku);
..ox:=320;oy:=240;
end;
procedure cizim(b:byte);
var i:byte;
begin
..for i:=1 to say do ciz(cis[i],b);
end;
procedure cdondur(x,y,z:real);
var i:byte;
begin
..for i:=1 to say do dondur(cis[i],x,y,z);
end;
var k:byte;x,y,z,vx,vy,vz:real;
begin
..gd:=detect;initgraph(gd,gm,'');if graphresult<>0 then halt;init;x:=0;y:=0;z:=0;k:=1;vx:=0;vy:=0;vz:=0;si l:=true;
..repeat
....kureciz(ku,15);
....{cizim(15);}delay(10);{if sil then cizim(0);}kureciz(ku,0);
....if keypressed then
....begin
......c:=upcase(readkey);
......case c of
........'T':vx:=vx+0.2;
........'G':vx:=vx-0.2;
........'Y':vy:=vy+0.2;
........'H':vy:=vy-0.2;
........'U':vz:=vz+0.2;
........'J':vz:=vz-0.2;
........'B':begin vx:=0;vy:=0;vz:=0;end;
........'+':if k<27 then inc(k);
........'-':if k>1 then dec(k);
........'A':x:=x+0.2;
........'Q':x:=x-0.2;
........'W':y:=y+0.2;
........'S':y:=y-0.2;
........'E':z:=z+0.2;
........'D':z:=z-0.2;
........'X':begin x:=0;y:=0;z:=0;end;
........'C':cleardevice;
........#32:sil:=not sil;
......end;
....end;
....donkure(ku,x,y,z);kureotele(ku,vx,vy,vz);
{....cdondur(x,y,z);otele(cis[k],vx,vy,vz);}
..until c=#27;
..closegraph;
end.
salelltd isimli Üye şimdilik offline konumundadır   Alıntı ile Cevapla
Konu Sayısı: 3
 


Konuyu Toplam 1 Üye okuyor. (0 Kayıtlı üye ve 1 Misafir)
 

Yetkileriniz
Yeni Mesaj yazma yetkiniz Aktif değil dir.
Mesajlara Cevap verme yetkiniz aktif değil dir.
Eklenti ekleme yetkiniz Aktif değil dir.
Kendi Mesajınızı değiştirme yetkiniz Aktif değildir dir.

BB code is Açık
Smileler Açık
[IMG] Kodları Açık
HTML-KodlarıKapalı
Gitmek istediğiniz klasörü seçiniz


Bütün Zaman Ayarları WEZ +3 olarak düzenlenmiştir. Şu Anki Saat: 19:39 .


Powered by vBulletin
Copyright © 2000-2007 Jelsoft Enterprises Limited.
Sitemap
6, 5, 3, 7, 8, 9, 10, 11, 12, 13, 14, 15, 113, 16, 17, 18, 19, 81, 20, 27, 22, 23, 24, 25, 26, 48, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 43, 136, 40, 58, 45, 42, 44, 46, 47, 53, 54, 55, 56, 57, 59, 60, 70, 61, 62, 63, 64, 65, 66, 68, 69, 71, 72, 74, 75, 76, 77, 78, 79, 80, 82, 83, 96, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 98, 97, 100, 101, 102, 103, 106, 104, 105, 112, 109, 108, 107, 110, 111, 114, 115, 118, 116, 117, 119, 148, 154, 124, 165, 122, 120, 123, 121, 150, 153, 125, 128, 129, 131, 132, 133, 134, 135, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 151, 149, 202, 175, 164, 152, 167, 155, 156, 157, 158, 159, 160, 161, 162, 163, 195, 169, 166, 168, 170, 171, 172, 199, 174, 173, 196, 200, 176, 177, 180, 178, 179, 182, 189, 187, 184, 186, 191, 192, 193, 194, 197, 198, 201, 203, 229, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 236, 231, 232, 233, 234, 235, 237, 240, 239, 241, 243, 242, 244,