Guest User

Untitled

a guest
Apr 12th, 2017
94
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.69 KB | None | 0 0
  1. unit Unit1;
  2.  
  3. interface
  4.  
  5. uses
  6. Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  7. Dialogs, ExtCtrls;
  8.  
  9. type
  10. TForm1 = class(TForm)
  11. Image1: TImage;
  12. Timer1: TTimer;
  13. procedure FormKeyDown(Sender: TObject; var Key: Word;
  14. Shift: TShiftState);
  15. procedure FormCreate(Sender: TObject);
  16. procedure Timer1Timer(Sender: TObject);
  17. private
  18. { Private declarations }
  19. public
  20. { Public declarations }
  21. end;
  22. pCanvas=^TCanvas;
  23. Txyz=record
  24. x,y,z:double;
  25. end;
  26.  
  27. const TIME_MORPHING=100;
  28.  
  29. type TShape=array[0..700] of Txyz;
  30. var
  31. Form1: TForm1;
  32. Can:PCanvas;
  33. Stars:array[1..500] of Txyz;
  34. w,h:integer;
  35. c:byte;
  36. l:double;
  37. dl,k:integer;
  38. t:double;
  39. cc:byte;
  40. Shape:array[0..10] of TShape;
  41. Shaper:TShape;
  42. morf:TShape;
  43. cosx,siny:double;
  44. cosx1,siny1:double;
  45. m:double;
  46. tm:double;
  47. fl:boolean;
  48. morf1,morf2:TShape;
  49. sm:integer;
  50. fsm:integer;
  51. d:double;
  52. l2:double;
  53. dl2:double;
  54. dl3:double;
  55. tt:double;
  56. // ll:integer;
  57.  
  58. implementation
  59.  
  60. {$R *.dfm}
  61. Procedure Point3d(Width2,Height2:integer;Canvas:TCanvas;x,y,z:double;r:integer;Color:longint);
  62. var x2d,y2d:integer;
  63. begin
  64. if 400+z<>0 then
  65. begin
  66. Canvas.Brush.Color:=Color;
  67. X2D:=round(0.5+(Width2+400*(x) /(400+z)));
  68. Y2D:=round(0.5+(Height2-400*(y) /(400+z)));
  69. Canvas.FillRect(rect(x2d,y2d,x2d+r,y2d+r));
  70. end;
  71. end;
  72.  
  73. procedure TForm1.FormCreate(Sender: TObject);
  74. var ii:integer;
  75. i,j,ll:integer;
  76. begin
  77. randomize;
  78. Timer1.Interval:=50;
  79. dl:=-100000;
  80. l:=1/dl;
  81. dl2:=-5500;
  82. l2:=1/dl2;
  83. dl3:=-1/TIME_MORPHING;
  84. for j:=0 to 30 do
  85. for i:=0 to 15 do
  86. begin
  87. Shape[0,k].X:=1500*sin(pi*2*i/30)*cos(pi*2*j/30);
  88. Shape[0,k].Y:=1500*cos(pi*2*i/30);
  89. Shape[0,k].Z:=1500*sin(pi*2*i/30)*sin(pi*2*j/30);
  90. k:=k+1;
  91. end;
  92. k:=0;
  93. for j:=0 to 33 do
  94. for i:=0 to 15 do
  95. begin
  96. Shape[1,k].X:=(1300+650*sin(pi*2*i/15))*cos(pi*2*j/33);
  97. Shape[1,k].Y:=650*cos(pi*2*i/15);
  98. Shape[1,k].Z:=(1300+650*sin(pi*2*i/15))*sin(pi*2*j/33);
  99. k:=k+1;
  100. end;
  101. k:=0;
  102. for j:=0 to 49 do
  103. for i:=0 to 10 do
  104. begin
  105. Shape[2,k].X:=(700+330*sin(pi*2*i/10))*cos(pi*2*j/20);
  106. Shape[2,k].Y:=330*cos(pi*2*i/10)+(24.5-j)*60;
  107. Shape[2,k].Z:=(700+330*sin(pi*2*i/10))*sin(pi*2*j/20);
  108. k:=k+1;
  109. end;
  110. k:=0;
  111. for j:=0 to 30 do
  112. for i:=0 to 15 do
  113. begin
  114. Shape[3,k].X:=-(1500)+random(3000);
  115. Shape[3,k].Y:=-(1500)+random(3000);
  116. Shape[3,k].Z:=-(1500)+random(3000);
  117. k:=k+1;
  118. end;
  119. k:=0;
  120. for j:=1 to 15 do
  121. for i:=1 to 15 do
  122. begin
  123. Shape[4,k].X:=(7.5-i)*200;
  124. Shape[4,k].Y:=600*cos(sqrt((7.5-i)*(7.5-i)+(7.5-j)*(7.5-j))/2);
  125. Shape[4,k].Z:=(7.5-j)*200;
  126. k:=k+1;
  127. end;
  128. for j:=0 to 24 do
  129. for i:=0 to 12 do
  130. begin
  131. Shape[4,k].X:=550*sin(pi*2*i/24)*cos(pi*2*j/24);
  132. Shape[4,k].Y:=550*cos(pi*2*i/24)-600;
  133. Shape[4,k].Z:=550*sin(pi*2*i/24)*sin(pi*2*j/24);
  134. k:=k+1;
  135. end;
  136. k:=0;
  137. for j:=0 to 30 do
  138. for i:=0 to 15 do
  139. begin
  140. Shape[5,k].X:=(7-i)*200;
  141. Shape[5,k].Y:=1000*cos(pi*2*j/30);
  142. Shape[5,k].Z:=1000*sin(pi*2*j/30);
  143. k:=k+1;
  144. end;
  145. k:=0;
  146. for j:=0 to 20 do
  147. for i:=0 to 10 do
  148. begin
  149. Shape[6,k].X:=1000*sin(pi*2*i/20)*cos(pi*2*j/20);
  150. Shape[6,k].Y:=1000*cos(pi*2*i/20);
  151. Shape[6,k].Z:=1000*sin(pi*2*i/20)*sin(pi*2*j/20);
  152. k:=k+1;
  153. end;
  154. for i:=0 to 20 do
  155. for j:=0 to 10 do
  156. begin
  157. Shape[6,k].X:=(1200+j*50)*sin(j*2+pi*2*(i)/20);
  158. Shape[6,k].Y:=0;
  159. Shape[6,k].Z:=(1200+j*50)*cos(j*2+pi*2*(i)/20);
  160. k:=k+1;
  161. end;
  162. k:=0;
  163. for i:=0 to 7 do
  164. for j:=0 to 7 do
  165. for ii:=0 to 7 do
  166. begin
  167. if ((i=0) xor (j=0) xor (ii=0)) xor ((i=7) xor (j=7) xor (ii=7)) then
  168. begin
  169. Shape[7,k].X:=(3.5-ii)*350;
  170. Shape[7,k].Y:=(3.5-j)*350;
  171. Shape[7,k].Z:=(3.5-i)*350;
  172. k:=k+1;
  173. end;
  174. end;
  175. for j:=1 to 20 do
  176. for i:=1 to 10 do
  177. begin
  178. Shape[7,k].X:=600*sin(pi*2*i/20)*cos(pi*2*j/20);
  179. Shape[7,k].Y:=600*cos(pi*2*i/20);
  180. Shape[7,k].Z:=600*sin(pi*2*i/20)*sin(pi*2*j/20);
  181. k:=k+1;
  182. end;
  183. k:=0;
  184. for i:=-10 to 10 do
  185. for j:=-4 to 4 do
  186. begin
  187. k:=k+1;
  188. Shape[8,k].X:=(j*180)*cos(pi*2*i/20);
  189. Shape[8,k].Z:=(i*170);
  190. Shape[8,k].Y:=(j*180)*sin(pi*2*i/20);
  191. end;
  192. for ll:=-8 to 8 do
  193. for j:=0 to 4 do
  194. for i:=0 to 2 do
  195. begin
  196. k:=k+1;
  197. Shape[8,k].X:=(550+130*sin(pi*2*i/4)*cos(pi*2*j/4))*cos(pi*2*ll/15);
  198. Shape[8,k].Z:=ll*200+130*sin(pi*2*i/4)*sin(pi*2*j/4);
  199. Shape[8,k].Y:=(350+130*cos(pi*2*i/4))*sin(pi*2*ll/15);
  200. end;
  201. for ll:=-8 to 8 do
  202. for j:=0 to 4 do
  203. for i:=0 to 2 do
  204. begin
  205. k:=k+1;
  206. Shape[8,k].X:=(-550+130*sin(pi*2*i/4)*cos(pi*2*j/4))*cos(pi*2*ll/15);
  207. Shape[8,k].Z:=ll*200+130*sin(pi*2*i/4)*sin(pi*2*j/4);
  208. Shape[8,k].Y:=(-550+130*cos(pi*2*i/4))*sin(pi*2*ll/15);
  209. end;
  210. sm:=random(9);
  211. morf:=Shape[sm];
  212. morf1:=morf;
  213. morf2:=shape[sm];
  214. for i:= 1 to 500 do
  215. begin
  216. stars[i].x:=-90000+random(180000);
  217. stars[i].y:=-90000+random(180000);
  218. stars[i].z:=random(100000);
  219. end;
  220. end;
  221.  
  222. procedure TForm1.Timer1Timer(Sender: TObject);
  223. Label A;
  224. var i:integer;
  225. begin
  226. tt:=tt+1;
  227. t:=50*cos(pi*2*(tt)/1000)-150*sin(pi*2*(tt)/1600);
  228. randomize;
  229. w:=CLientWidth div 2;
  230. h:=CLientheight div 2;
  231. Image1.Width:=CLientWidth;
  232. Image1.height:=CLientheight;
  233. image1.Canvas.Brush.Color:=rgb(0,0,60);
  234. image1.Canvas.Pen.Style:=pssolid;
  235. image1.Canvas.FillRect(Rect(0,0,CLientWidth,CLientheight));
  236. image1.Canvas.Pen.Style:=psclear;
  237. //>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  238. //MORPHING
  239. tm:=tm+1;
  240. if tm=800 then
  241. begin
  242. tm:=0;
  243. fl:=true;
  244. fsm:=sm;
  245. A:
  246. sm:=random(9);
  247. if sm=fsm then goto A;
  248. morf1:=morf;
  249. morf2:=shape[sm];
  250. end;
  251. if fl=true then
  252. begin
  253. m:=m+1;
  254. for i:=0 to 700 do
  255. begin
  256. morf[i].z:=morf2[i].z+(morf1[i].z-morf2[i].z)*(m-Time_morphing)*dl3;
  257. morf[i].x:=morf2[i].x+(morf1[i].x-morf2[i].x)*(m-Time_morphing)*dl3;
  258. morf[i].y:=morf2[i].y+(morf1[i].y-morf2[i].y)*(m-Time_morphing)*dl3;
  259. end;
  260. end;
  261. if m>=Time_morphing then
  262. begin
  263. m:=0;
  264. fl:=false;
  265. end;
  266. //>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  267. cosx:=cos(pi*2*t/120);
  268. siny:=sin(pi*2*t/120);
  269. cosx1:=cos(pi*2*t/360);
  270. siny1:=sin(pi*2*t/360);
  271. for i:=0 to 700 do
  272. begin
  273. shaper[i].x:=morf[i].x*cosx-morf[i].y*siny ;
  274. shaper[i].y:=(morf[i].x*siny+morf[i].y*cosx)*siny1-morf[i].z*cosx1 ;
  275. shaper[i].z:=3000+(morf[i].x*siny+morf[i].y*cosx)*cosx1+morf[i].z*siny1 ;
  276. c:=round(((265)*((shaper[i].z)-5500)*l2)) ;
  277. point3d(w,h,Image1.canvas,shaper[i].x,shaper[i].y,shaper[i].z,4,rgb(c ,c ,c));
  278. end;
  279. for i:= 1 to 500 do
  280. begin
  281. if stars[i].z<=0 then
  282. begin
  283. stars[i].x:=-90000+random(180000);
  284. stars[i].y:=-90000+random(180000);
  285. stars[i].z:=50000+random(50000);
  286. end;
  287. stars[i].z:=stars[i].z-400;
  288. end;
  289. for i:= 1 to 500 do
  290. begin
  291. c:=round(((255)*(stars[i].z-200000)*l)) ;
  292. cc:=(round(c*0.55));
  293. point3d(w,h,Image1.canvas,stars[i].x,stars[i].y,stars[i].z,2+(cc div 40),rgb(cc,cc,c));
  294. end;
  295. Form1.Canvas.Draw(0,0,Image1.Picture.Bitmap);
  296. end;
  297.  
  298. procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  299. Shift: TShiftState);
  300. begin
  301. Application.terminate;
  302. end;
  303. end.
Advertisement
Add Comment
Please, Sign In to add comment