home *** CD-ROM | disk | FTP | other *** search
/ Chip 1999 November / Chip_1999-11_cd.bin / ctenari / Plavja / Exe / Priklady / Axonometrie_Rez_hranolu.dg < prev    next >
Text File  |  1999-09-02  |  3KB  |  129 lines

  1. #vloz "kuzelosecky.dk"
  2. #vloz "axonometrie.dk"
  3.  
  4. afinita1 (oaf, L, L0, E0) {
  5.   a1 = primka(L0, E0);
  6.   X = p(oaf, a1);
  7.   a2 = primka(L, X);
  8.   E = bod(a2, X, v(L, X));
  9.   kdyz(E:1 == L) vrat E:0; jinak vrat E:1;
  10. }
  11.  
  12. afinita2 (osa, F, RF, E, bok) {
  13.   FE = primka(F, E);
  14.   X = p(FE, osa);
  15.   XRF = primka(X, RF);
  16.   RE = p(XRF, primka(bok));
  17.   vrat RE;
  18. }
  19.  
  20. hlavni () {  
  21.   zobrazeni("papir");
  22.   papir(29.7, 21, 1, 1); //A4
  23.   okraj(0.75,0.75,0.75,0.75,0.25,1,0);
  24.   posunutipss(0,3);  
  25.   nadpis("", "", datum(), "PETR PLAVJAN═K", 
  26.   "╪EZ HRANOLU");
  27.   
  28.   // p°eddefinovanΘ styly
  29.   normal = styl();  
  30.  
  31.   sklopeny = styl();
  32.   videt(sklopeny, vse, 2, ?, ?, 1, 2);
  33.   barva(sklopeny, "seda");
  34.  
  35.   silny = styl();
  36.   videt(silny, vse, 2, 0, 3, 2, 0);
  37.  
  38.   schovany = styl();
  39.   videt(schovany, vse, 2, -1, 2, 1, 3);
  40.   
  41.   nevidet = styl();
  42.   videt(nevidet, vse, 0);
  43.   
  44.   // nastavenφ axonometrie:  
  45.   axonometrie(9, 10, 11, AO, z_x, z_y, z_z, osa_x, osa_y, osa_z, sosa_x, sosa_y, sosa_z, sSxz, sSyz);
  46.   
  47.   //vlastnφ postup:
  48.     
  49.   // vßlec
  50.   // podstava
  51.   r = 5; // polom∞r
  52.   v = 12;
  53.   O = abod(6, 6, 0);  // st°ed
  54.   A = O - bod(r,0) ;  
  55.   D = O + bod(r,0) ;  
  56.   k = kruz(Pi, O:1, r);
  57.   styl(k, sklopeny);
  58.   
  59.   l = rovnobezka(osa_x, D:0);
  60.   l = rovnobezka(osa_y, A:0);
  61.   L = p(l:0, l:1);
  62.   oaf = primka(A:1, D:1); // osa afinity
  63.   
  64.   L0 = p(k, rovnobezka(osa_z, L)):1;
  65.   
  66.   A0 = A:1;
  67.   B0 = p(k, kruz(Pi, A0, r)):0;
  68.   C0 = p(k, kruz(Pi, B0, r)):0;
  69.   D0 = D:1;
  70.   E0 = p(k, kruz(Pi, D0, r)):1;
  71.   F0 = p(k, kruz(Pi, E0, r)):1;
  72.   n0 = nuhelnik(A0, B0, C0, D0, E0, F0);
  73.   styl(n0, sklopeny);
  74.   
  75.   E = afinita1(oaf, L, L0, E0);
  76.   F = afinita1(oaf, L, L0, F0);
  77.   C = soumo(E, oaf);  
  78.   B = soumo(F, oaf);  
  79.   n = nuhelnik(A:1, B, C, D:1, E, F);
  80.   styl(n, silny);
  81.   styl(n:(0..2), schovany);
  82.   
  83.   ZZ = abod(0,0,v);
  84.   Z = bod(0,ZZ."y",0):0;
  85.   n2 = n + Z;
  86.   bok = usecka(A:1, (n2:0)."A");
  87.   bok = usecka(B, (n2:1)."A");
  88.   bok = usecka(C, (n2:2)."A");
  89.   bok = usecka(D:1, (n2:3)."A");
  90.   bok = usecka(E, (n2:4)."A");
  91.   bok = usecka(F, (n2:5)."A");
  92.   
  93.   styl(bok, silny);
  94.   styl(bok:[1,2], schovany);
  95.   styl(n2, silny);
  96.   
  97.   ro = arovina(15,20,15); 
  98.   
  99.   // prunik roviny F-C-F2 s ro
  100.   FC = primka(F, C);
  101.   N = p(FC, osa_x);
  102.   NA = p(rovnobezka(osa_z, N), ro:1);
  103.   P = p(FC, ro:0);
  104.   s = primka(NA, P);
  105.   RF = p(s, primka(bok:5));
  106.   RC = p(s, primka(bok:2));
  107.   
  108.   RE = afinita2(ro:0, F, RF, E, bok:4);   
  109.   RD = afinita2(ro:0, F, RF, D:0, bok:3);   
  110.   RB = afinita2(ro:0, D:0, RD, B:0, bok:1);   
  111.   RA = afinita2(ro:0, F, RF, A:0, bok:0);   
  112.     
  113.   rez = nuhelnik(RA, RB, RC, RD, RE, RF);   
  114.   styl(rez:[0..2], schovany);  
  115. //  styl(rez:[3..5], silny);  
  116.  
  117.   styl(rez:4, schovany);  
  118.   rozdel(rez:3, 1, 1,3, 2,0, RD, p(rez:3, n:3)); 
  119.   rozdel(rez:5, 1, 1,3, 2,0, p(rez:5, n:5), RA);
  120.   rez = usecka(p(rez:3, n:3), p(rez:5, n:5));
  121.   styl(rez:6, schovany);
  122.   
  123.   vypln = vypln(_O, 1, RGB(200,200,200), 0, rez); 
  124.   vypln = vypln(bod(-4.17, 1.53, 0), 1, RGB(225,225,225), 0, 
  125.     [rez:5, n:5, bok:0]); 
  126.   vypln = vypln(bod(4.54, 1.24, 0), 1, RGB(175,175,175), 0, 
  127.     [rez:3, n:3, bok:3]); 
  128. }
  129.