home *** CD-ROM | disk | FTP | other *** search
/ Chip 1999 November / Chip_1999-11_cd.bin / ctenari / Plavja / Exe / kuzelosecky.dk < prev    next >
Text File  |  1999-09-02  |  2KB  |  95 lines

  1. // knihovna: KUZELOSECKY.DK
  2. // autor: Petr Plavjanφk
  3. // obsah: funkce pro prßci s ku₧eloseΦkami
  4.  
  5. // Rytzova konstrukce elipsy zadanΘ sdru₧en²mi pr∙m∞ry
  6. // MN a KL v rovin∞ (Pi nebo Ny)
  7. rytz (Ro, M, N, K, L) {
  8.   MN = usecka(M, N);
  9.   KL = usecka(K, L);
  10.   S = p(MN,KL);
  11.   k = kolmice(Ro, MN, S);
  12.   M2 = bod(k, S, v(M,S)):1;
  13.   d = primka(M2, L);
  14.   o = (M2+L)/2;
  15.   kr = kruz(Ro, o, v(o,S));
  16.   R = p(kr, d);
  17.   osa = primka(S,R);
  18.   A = bod(osa:0, S, v(R:1, L)):0;
  19.   B = bod(osa:1, S, v(R:1, M2)):0;
  20.   kdyz(v(A,S) >= v(B,S)) e = elipsa(A, B, S);
  21.   jinak e = elipsa(B, A, S);
  22.   vrat e;
  23. }
  24.  
  25. // konstrukce elipsy hlavnφmi vrcholy a jednφm bodem
  26. // v rovin∞ ro (Pi nebo Ny)
  27. prouzkova_konst_elipsy (ro, A, B, M) {
  28.   S = (A+B)/2;
  29.   h = primka(A,B);
  30.   v = kolmice(Pi, h, S);
  31.   a = v(A,S);
  32.   k = kruz(ro, M, a); 
  33.   R = p(k, v);
  34.   MR = poloprimka(M, R);
  35.   X = p(MR, h);
  36.   b = v(X, M);
  37.   C = bod(v, S, b):0;
  38.   vrat elipsa(A, C, S);
  39. }
  40.  
  41. //platφ i pro hyperbolu
  42. tecna_elipsy_z_bodu(e, M) {
  43.   S = e."S";
  44.   F = e."F";
  45.   G = e."G";
  46.   a = e."a";
  47.  
  48.   g1 = kruz(e."ro", F, 2*a);
  49.   k = kruz(e."ro", M, v(M,G));
  50.   P = p(k, g1);  
  51.   Q = (P+G)/2;
  52.   
  53.   vrat primka(M, Q);
  54. }
  55.  
  56. //platφ i pro hyperbolu
  57. tecna_elipsy_smerem(e, s) {
  58.   S = e."S";
  59.   F = e."F";
  60.   G = e."G";
  61.   a = e."a";
  62.   
  63.   vr = kruz(e."ro", S, a);
  64.   k = kolmice(e."ro", s, m(G,F));  
  65.   P = p(vr, k);
  66.   t = rovnobezka(s, P);
  67.   
  68.   // odstran∞nφ duplicitnφch teΦen
  69.   kdyz (t:0 == t:1) vrat m(t:0, t:2);
  70.   jinak vrat m(t:0, t:1); 
  71. }
  72.  
  73. tecna_paraboly_z_bodu (p, M) {
  74.   o = p."o";
  75.   F = p."F";
  76.   d = p."d";
  77.   
  78.   k = kruz(p."ro", M, v(M, F));
  79.   Q = p(k, d);
  80.   
  81.   q = rovnobezka(o, Q);
  82.   T = p(p, q);
  83.   
  84.   vrat primka(M, T);
  85. }
  86.  
  87. tecna_paraboly_smerem (p, s) {
  88.   k = kolmice(s, F);
  89.   Q = p(k, d);
  90.   q = rovnobezka(o, Q);
  91.   T = p(p, q);
  92.  
  93.   vrat rovnobezka(s, T);
  94. }
  95.