home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / sibdemo3.zip / SAMPLES.DAT / SAMPLES / GEOM3D / TEST.PAS < prev    next >
Pascal/Delphi Source File  |  1997-03-17  |  4KB  |  139 lines

  1. PROGRAM Test;
  2.  
  3. {Blake: This is an example program that demonstrates the use of operator overloading.
  4.         I'd like to extent it a bit, but I need the exact mathematical words
  5.         in english for some things. For instance I don't know if "Amount" is the
  6.         right word for the amount of a vector... Same for Perpendicular and
  7.         Direction and Square and Len and... I hope you know what I mean. Also
  8.         I need the english words for polar-coordinates and "kartesische" (sorry,
  9.         no english word) coordinates}
  10.  
  11. USES Crt,Vector;
  12.  
  13. PROCEDURE Test2DVectors;
  14. VAR a,b,a0:TVector;
  15.     dist,r,fi:Extended;
  16. BEGIN
  17.      Writeln('2D vectors test.');
  18.      Writeln('----------------');
  19.  
  20.      a.Create2D(2,-3);
  21.      b.Create2D(-1,1);
  22.  
  23.      Writeln('a= ',a.tostr);
  24.      Writeln('-a= ',(-a).tostr);
  25.      Writeln('b= ',b.tostr);
  26.      Writeln('a+b= ',(a+b).tostr);
  27.      Writeln('a-b= ',(a-b).tostr);
  28.      Writeln('a*b= ',tostr(a*b:0:6));
  29.      Writeln('|a|= ',tostr(a.Amount:0:6));
  30.      Writeln('|a x b|= ',(a#b).Amount:0:6);
  31.      Writeln('3*a= ',(Extended(3.0)*a).tostr);
  32.      Writeln('a*3= ',(a*Extended(3.0)).tostr);
  33.      a0:=a;
  34.      a0.Normalize;
  35.      Writeln('a0= ',a0.tostr);
  36. END;
  37.  
  38. PROCEDURE Test3DVectors;
  39. VAR a,b,a0:TVector;
  40.     dist,r,fi:Extended;
  41. BEGIN
  42.      Writeln('3D vectors test.');
  43.      Writeln('----------------');
  44.  
  45.      a.Create(2,-3,2);
  46.      b.Create(-1,1,1);
  47.  
  48.      Writeln('a= ',a.tostr);
  49.      Writeln('-a= ',(-a).tostr);
  50.      Writeln('b= ',b.tostr);
  51.      Writeln('a+b= ',(a+b).tostr);
  52.      Writeln('a-b= ',(a-b).tostr);
  53.      Writeln('a*b= ',tostr(a*b:0:6));
  54.      Writeln('|a|= ',tostr(a.Amount:0:6));
  55.      Writeln('a x b= ',(a#b).tostr);
  56.      Writeln('3*a= ',(Extended(3.0)*a).tostr);
  57.      Writeln('a*3= ',(a*Extended(3.0)).tostr);
  58.      a0:=a;
  59.      a0.Normalize;
  60.      Writeln('a0= ',a0.tostr);
  61. END;
  62.  
  63. PROCEDURE Test2DLines;
  64. VAR A,B,C,D:TPoint;
  65.     g,h,AC,AD:TLine;
  66. BEGIN
  67.      Writeln('2D Lines test.');
  68.      Writeln('--------------');
  69.  
  70.      A.Create2D(3,2);
  71.      B.Create2D(-1,0);
  72.      C.Create2D(0,4);
  73.      D.Create2D(-2,1);
  74.  
  75.      g.Create(A,B);
  76.      h.Create(C,D);
  77.  
  78.      Writeln('A= ',A.tostr);
  79.      Writeln('B= ',B.tostr);
  80.      Writeln('C= ',C.tostr);
  81.      Writeln('D= ',D.tostr);
  82.      Writeln('g (AB)= ',g.tostr);
  83.      Writeln('h (CD)= ',h.tostr);
  84.      Writeln('Calculating intersection point of g and h...');
  85.      Writeln('g#h= S ',(g#h).tostr);
  86.      Writeln('Calculating intersection point of AC and AD...');
  87.      AC.Create(A,C);
  88.      AD.Create(A,D);
  89.      Writeln('AC # AC = S ',(AC#AD).tostr);
  90. END;
  91.  
  92. PROCEDURE Test3DPlanes;
  93. VAR A,B,C,P,Q,R,X,Y:TPoint;
  94.     g:TLine;
  95.     e,f:TPlain;
  96. BEGIN
  97.      Writeln('3D planes test.');
  98.      Writeln('--------------');
  99.  
  100.      A.Create(1,0,0);
  101.      B.Create(0,1,0);
  102.      C.Create(0,0,1);
  103.      P:=B;
  104.      Q:=C;
  105.      R.Create(0,0,10);
  106.      X.Create(0,0,0);
  107.      Y.Create(1,1,1);
  108.  
  109.      g.Create(X,Y);
  110.      e.CreateFrom3Points(A,B,C);
  111.      f.CreateFrom3Points(P,Q,R);
  112.  
  113.      Writeln('e= ',e.tostr);
  114.      Writeln('f= ',f.tostr);
  115.      Writeln('g= ',g.tostr);
  116.      Writeln('e#f= ',(e#f).tostr);
  117.      Writeln('e#g= ',(e#g).tostr);
  118. END;
  119.  
  120. BEGIN
  121.      Test2DVectors;
  122.      Writeln;
  123.      Writeln('Press any key...');
  124.      readKey;
  125.      Writeln;
  126.      Test3DVectors;
  127.      Writeln;
  128.      Writeln('Press any key...');
  129.      readkey;
  130.      Writeln;
  131.      Test2DLines;
  132.      Writeln;
  133.      Writeln('Press any key...');
  134.      readkey;
  135.      Writeln;
  136.      Test3DPlanes;
  137. END.
  138.  
  139.