home *** CD-ROM | disk | FTP | other *** search
/ Trixter's Scene Collection / trixter.zip / trixter / Demos / FAST3D.ZIP / makeobj.pas < prev    next >
Pascal/Delphi Source File  |  1996-06-27  |  8KB  |  410 lines

  1. type Point3D=record
  2.              X:single;
  3.              Y:single;
  4.              Z:single;
  5.              end;
  6.  
  7. type TPoly=record
  8.            NumVert:byte;
  9.            Red:byte;
  10.            Green:byte;
  11.            Blue:byte;
  12.            Vert:array[1..10] of Point3D;
  13.            end;
  14.  
  15. var f:file;
  16.     NumPoly:word;
  17.     res:integer;
  18.     cont:integer;
  19.     a:TPoly;
  20.     LR,SR,VLR,VSR,HSR:single;
  21.     flag:boolean;
  22. begin
  23. assign(f,'DATA.MDL');
  24. rewrite(f,1);
  25. NumPoly:=120;
  26. blockwrite(f,NumPoly,2,res);
  27. NumPoly:=NumPoly div 12;
  28. LR:=80;
  29. SR:=35;
  30. VLR:=85;
  31. VSR:=17;
  32. HSR:=5;
  33. for cont:=0 to (NumPoly-1) do
  34.   begin
  35.   a.NumVert:=3;
  36.   a.Blue:=50;
  37.   a.Green:=0;
  38.   a.Red:=0;
  39.   with a.Vert[3] do
  40.     begin
  41.     x:=LR*Sin((cont+1)*Pi/(NumPoly/2));
  42.     y:=5;
  43.     z:=LR*Cos((cont+1)*Pi/(NumPoly/2));
  44.     end;
  45.   with a.Vert[2] do
  46.     begin
  47.     x:=LR*Sin((cont)*Pi/(NumPoly/2));
  48.     y:=5;
  49.     z:=LR*Cos((cont)*Pi/(NumPoly/2));
  50.     end;
  51.   with a.Vert[1] do
  52.     begin
  53.     x:=SR*Sin((cont+0.5)*Pi/(NumPoly/2));
  54.     y:=-4;
  55.     z:=SR*Cos((cont+0.5)*Pi/(NumPoly/2));
  56.     end;
  57.   blockwrite(f,a,4+a.NumVert*12,res);
  58.   end;
  59.  
  60. for cont:=0 to (NumPoly-1) do
  61.   begin
  62.   a.NumVert:=3;
  63.   a.Blue:=65;
  64.   a.Green:=0;
  65.   a.Red:=0;
  66.   with a.Vert[3] do
  67.     begin
  68.     x:=SR*Sin((cont-0.5)*Pi/(NumPoly/2));
  69.     y:=-4;
  70.     z:=SR*Cos((cont-0.5)*Pi/(NumPoly/2));
  71.     end;
  72.   with a.Vert[2] do
  73.     begin
  74.     x:=SR*Sin((cont+0.5)*Pi/(NumPoly/2));
  75.     y:=-4;
  76.     z:=SR*Cos((cont+0.5)*Pi/(NumPoly/2));
  77.     end;
  78.   with a.Vert[1] do
  79.     begin
  80.     x:=LR*Sin((cont)*Pi/(NumPoly/2));
  81.     y:=5;
  82.     z:=LR*Cos((cont)*Pi/(NumPoly/2));
  83.     end;
  84.   blockwrite(f,a,4+a.NumVert*12,res);
  85.   end;
  86.  
  87. for cont:=0 to (NumPoly-1) do
  88.   begin
  89.   a.NumVert:=4;
  90.   a.Blue:=50;
  91.   a.Green:=50;
  92.   a.Red:=50;
  93.   with a.Vert[4] do
  94.     begin
  95.     x:=LR*Sin((cont+1)*Pi/(NumPoly/2));
  96.     y:=5;
  97.     z:=LR*Cos((cont+1)*Pi/(NumPoly/2));
  98.     end;
  99.   with a.Vert[3] do
  100.     begin
  101.     x:=VLR*Sin((cont+1)*Pi/(NumPoly/2));
  102.     y:=10;
  103.     z:=VLR*Cos((cont+1)*Pi/(NumPoly/2));
  104.     end;
  105.   with a.Vert[2] do
  106.     begin
  107.     x:=VLR*Sin((cont)*Pi/(NumPoly/2));
  108.     y:=10;
  109.     z:=VLR*Cos((cont)*Pi/(NumPoly/2));
  110.     end;
  111.   with a.Vert[1] do
  112.     begin
  113.     x:=LR*Sin((cont)*Pi/(NumPoly/2));
  114.     y:=5;
  115.     z:=LR*Cos((cont)*Pi/(NumPoly/2));
  116.     end;
  117.   blockwrite(f,a,4+a.NumVert*12,res);
  118.   end;
  119.  
  120. for cont:=0 to (NumPoly-1) do
  121.   begin
  122.   a.NumVert:=4;
  123.   a.Blue:=0;
  124.   a.Green:=0;
  125.   a.Red:=50;
  126.   with a.Vert[4] do
  127.     begin
  128.     x:=VLR*Sin((cont+1)*Pi/(NumPoly/2));
  129.     y:=10;
  130.     z:=VLR*Cos((cont+1)*Pi/(NumPoly/2));
  131.     end;
  132.   with a.Vert[3] do
  133.     begin
  134.     x:=VLR*Sin((cont+1)*Pi/(NumPoly/2));
  135.     y:=15;
  136.     z:=VLR*Cos((cont+1)*Pi/(NumPoly/2));
  137.     end;
  138.   with a.Vert[2] do
  139.     begin
  140.     x:=VLR*Sin((cont)*Pi/(NumPoly/2));
  141.     y:=15;
  142.     z:=VLR*Cos((cont)*Pi/(NumPoly/2));
  143.     end;
  144.   with a.Vert[1] do
  145.     begin
  146.     x:=VLR*Sin((cont)*Pi/(NumPoly/2));
  147.     y:=10;
  148.     z:=VLR*Cos((cont)*Pi/(NumPoly/2));
  149.     end;
  150.   blockwrite(f,a,4+a.NumVert*12,res);
  151.   end;
  152.  
  153. for cont:=0 to (NumPoly-1) do
  154.   begin
  155.   a.NumVert:=4;
  156.   a.Blue:=50;
  157.   a.Green:=50;
  158.   a.Red:=50;
  159.   with a.Vert[4] do
  160.     begin
  161.     x:=VLR*Sin((cont+1)*Pi/(NumPoly/2));
  162.     y:=15;
  163.     z:=VLR*Cos((cont+1)*Pi/(NumPoly/2));
  164.     end;
  165.   with a.Vert[3] do
  166.     begin
  167.     x:=LR*Sin((cont+1)*Pi/(NumPoly/2));
  168.     y:=20;
  169.     z:=LR*Cos((cont+1)*Pi/(NumPoly/2));
  170.     end;
  171.   with a.Vert[2] do
  172.     begin
  173.     x:=LR*Sin((cont)*Pi/(NumPoly/2));
  174.     y:=20;
  175.     z:=LR*Cos((cont)*Pi/(NumPoly/2));
  176.     end;
  177.   with a.Vert[1] do
  178.     begin
  179.     x:=VLR*Sin((cont)*Pi/(NumPoly/2));
  180.     y:=15;
  181.     z:=VLR*Cos((cont)*Pi/(NumPoly/2));
  182.     end;
  183.   blockwrite(f,a,4+a.NumVert*12,res);
  184.   end;
  185.  
  186. for cont:=0 to (NumPoly-1) do
  187.   begin
  188.   a.NumVert:=3;
  189.   flag:=not(flag);
  190.   a.Green:=50;
  191.   a.Blue:=0;
  192.   a.Red:=0;
  193.   with a.Vert[3] do
  194.     begin
  195.     x:=LR*Sin((cont+1)*Pi/(NumPoly/2));
  196.     y:=20;
  197.     z:=LR*Cos((cont+1)*Pi/(NumPoly/2));
  198.     end;
  199.   with a.Vert[2] do
  200.     begin
  201.     x:=SR*Sin((cont+0.5)*Pi/(NumPoly/2));
  202.     y:=29;
  203.     z:=SR*Cos((cont+0.5)*Pi/(NumPoly/2));
  204.     end;
  205.   with a.Vert[1] do
  206.     begin
  207.     x:=LR*Sin((cont)*Pi/(NumPoly/2));
  208.     y:=20;
  209.     z:=LR*Cos((cont)*Pi/(NumPoly/2));
  210.     end;
  211.   blockwrite(f,a,4+a.NumVert*12,res);
  212.   end;
  213.  
  214. for cont:=0 to (NumPoly-1) do
  215.   begin
  216.   a.NumVert:=3;
  217.   flag:=not(flag);
  218.   a.Green:=65;
  219.   a.Blue:=0;
  220.   a.Red:=0;
  221.   with a.Vert[3] do
  222.     begin
  223.     x:=SR*Sin((cont+0.5)*Pi/(NumPoly/2));
  224.     y:=29;
  225.     z:=SR*Cos((cont+0.5)*Pi/(NumPoly/2));
  226.     end;
  227.   with a.Vert[2] do
  228.     begin
  229.     x:=SR*Sin((cont-0.5)*Pi/(NumPoly/2));
  230.     y:=29;
  231.     z:=SR*Cos((cont-0.5)*Pi/(NumPoly/2));
  232.     end;
  233.   with a.Vert[1] do
  234.     begin
  235.     x:=LR*Sin((cont)*Pi/(NumPoly/2));
  236.     y:=20;
  237.     z:=LR*Cos((cont)*Pi/(NumPoly/2));
  238.     end;
  239.   blockwrite(f,a,4+a.NumVert*12,res);
  240.   end;
  241.  
  242. for cont:=0 to (NumPoly-1) do
  243.   begin
  244.   a.NumVert:=4;
  245.   a.Blue:=70;
  246.   a.Green:=70;
  247.   a.Red:=70;
  248.   with a.Vert[1] do
  249.     begin
  250.     x:=SR*Sin((cont+1)*Pi/(NumPoly/2));
  251.     y:=-4;
  252.     z:=SR*Cos((cont+1)*Pi/(NumPoly/2));
  253.     end;
  254.   with a.Vert[2] do
  255.     begin
  256.     x:=(SR-5)*Sin((cont+1)*Pi/(NumPoly/2));
  257.     y:=-10;
  258.     z:=(SR-5)*Cos((cont+1)*Pi/(NumPoly/2));
  259.     end;
  260.   with a.Vert[3] do
  261.     begin
  262.     x:=(SR-5)*Sin((cont)*Pi/(NumPoly/2));
  263.     y:=-10;
  264.     z:=(SR-5)*Cos((cont)*Pi/(NumPoly/2));
  265.     end;
  266.   with a.Vert[4] do
  267.     begin
  268.     x:=SR*Sin((cont)*Pi/(NumPoly/2));
  269.     y:=-4;
  270.     z:=SR*Cos((cont)*Pi/(NumPoly/2));
  271.     end;
  272.   blockwrite(f,a,4+a.NumVert*12,res);
  273.   end;
  274.  
  275. for cont:=0 to (NumPoly-1) do
  276.   begin
  277.   a.NumVert:=4;
  278.   a.Blue:=80;
  279.   a.Green:=80;
  280.   a.Red:=80;
  281.   with a.Vert[1] do
  282.     begin
  283.     x:=(SR-5)*Sin((cont+1)*Pi/(NumPoly/2));
  284.     y:=-10;
  285.     z:=(SR-5)*Cos((cont+1)*Pi/(NumPoly/2));
  286.     end;
  287.   with a.Vert[2] do
  288.     begin
  289.     x:=VSR*Sin((cont+1)*Pi/(NumPoly/2));
  290.     y:=-15;
  291.     z:=VSR*Cos((cont+1)*Pi/(NumPoly/2));
  292.     end;
  293.   with a.Vert[3] do
  294.     begin
  295.     x:=VSR*Sin((cont)*Pi/(NumPoly/2));
  296.     y:=-15;
  297.     z:=VSR*Cos((cont)*Pi/(NumPoly/2));
  298.     end;
  299.   with a.Vert[4] do
  300.     begin
  301.     x:=(SR-5)*Sin((cont)*Pi/(NumPoly/2));
  302.     y:=-10;
  303.     z:=(SR-5)*Cos((cont)*Pi/(NumPoly/2));
  304.     end;
  305.   blockwrite(f,a,4+a.NumVert*12,res);
  306.   end;
  307.  
  308. for cont:=0 to (NumPoly-1) do
  309.   begin
  310.   a.NumVert:=3;
  311.   a.Blue:=127;
  312.   a.Green:=127;
  313.   a.Red:=127;
  314.   with a.Vert[1] do
  315.     begin
  316.     x:=HSR*Sin((cont+1)*Pi/(NumPoly/2));
  317.     y:=-17;
  318.     z:=HSR*Cos((cont+1)*Pi/(NumPoly/2));
  319.     end;
  320.   with a.Vert[2] do
  321.     begin
  322.     x:=0;
  323.     y:=-25;
  324.     z:=0;
  325.     end;
  326.   with a.Vert[3] do
  327.     begin
  328.     x:=HSR*Sin((cont)*Pi/(NumPoly/2));
  329.     y:=-17;
  330.     z:=HSR*Cos((cont)*Pi/(NumPoly/2));
  331.     end;
  332.   with a.Vert[4] do
  333.     begin
  334.     x:=SR*Sin((cont)*Pi/(NumPoly/2));
  335.     y:=-10;
  336.     z:=SR*Cos((cont)*Pi/(NumPoly/2));
  337.     end;
  338.   blockwrite(f,a,4+a.NumVert*12,res);
  339.   end;
  340.  
  341. for cont:=0 to (NumPoly-1) do
  342.   begin
  343.   a.NumVert:=4;
  344.   a.Blue:=90;
  345.   a.Green:=90;
  346.   a.Red:=90;
  347.   with a.Vert[1] do
  348.     begin
  349.     x:=VSR*Sin((cont+1)*Pi/(NumPoly/2));
  350.     y:=-15;
  351.     z:=VSR*Cos((cont+1)*Pi/(NumPoly/2));
  352.     end;
  353.   with a.Vert[2] do
  354.     begin
  355.     x:=HSR*Sin((cont+1)*Pi/(NumPoly/2));
  356.     y:=-17;
  357.     z:=HSR*Cos((cont+1)*Pi/(NumPoly/2));
  358.     end;
  359.   with a.Vert[3] do
  360.     begin
  361.     x:=HSR*Sin((cont)*Pi/(NumPoly/2));
  362.     y:=-17;
  363.     z:=HSR*Cos((cont)*Pi/(NumPoly/2));
  364.     end;
  365.   with a.Vert[4] do
  366.     begin
  367.     x:=VSR*Sin((cont)*Pi/(NumPoly/2));
  368.     y:=-15;
  369.     z:=VSR*Cos((cont)*Pi/(NumPoly/2));
  370.     end;
  371.   blockwrite(f,a,4+a.NumVert*12,res);
  372.   end;
  373.  
  374. for cont:=0 to (NumPoly-1) do
  375.   begin
  376.   a.NumVert:=3;
  377.   a.Blue:=2;
  378.   if flag=true
  379.     then begin
  380.          a.Green:=102;
  381.          a.Red:=104;
  382.          end
  383.     else begin
  384.          a.Green:=112;
  385.          a.Red:=114;
  386.          end;
  387.   flag:=not(flag);
  388.   with a.Vert[3] do
  389.     begin
  390.     x:=SR*Sin((cont+0.5)*Pi/(NumPoly/2));
  391.     y:=29;
  392.     z:=SR*Cos((cont+0.5)*Pi/(NumPoly/2));
  393.     end;
  394.   with a.Vert[2] do
  395.     begin
  396.     x:=0;
  397.     y:=32;
  398.     z:=0;
  399.     end;
  400.   with a.Vert[1] do
  401.     begin
  402.