summaryrefslogtreecommitdiff
path: root/graphics/epix/samples/pascal.xp
blob: 7c597077a0b04a1967b3bfcf376fecc0ffd798a9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
/* -*-ePiX-*- */
#include "epix.h"
using namespace ePiX;

int main() 
{
  picture(P(-2,-2),P(2,2), "3 x 3in");

  begin();
  set_crop();

  P V(2,-0.25),   W(3,1);
  P P1(-1.5,-1),  P2(P1 + V),       P3(P1 + 1.5*V);    // points
  P Q1(-1,1),     Q2(Q1 + 0.5*W),   Q3(Q1 + W);

  Segment L12(P1, Q2),   L13(P1, Q3);
  Segment L21(P2, Q1),   L23(P2, Q3);
  Segment L31(P3, Q1),   L32(P3, Q2);

  // points of intersection
  P R1(L12*L21), R2(L13*L31), R3(L32*L23);

  dot(P1, P(0,-2), "$P_1$", b);
  dot(P2, P(0,-2), "$P_2$", b);
  dot(P3, P(0,-2), "$P_3$", b);

  dot(Q1, P(0,2), "$Q_1$", t);
  dot(Q2, P(0,2), "$Q_2$", t);
  dot(Q3, P(0,2), "$Q_3$", t);

  red();
  L12.draw();
  L21.draw();
  L13.draw();

  L31.draw();
  L32.draw();
  L23.draw();

  green();
  Line(P1,P3);
  Line(Q1,Q3);

  blue();
  dot(R1, P(4,2), "$p_1$", r);
  dot(R2, P(4,2), "$p_2$", r);
  dot(R3, P(4,2), "$p_3$", r);

  dashed();
  Line(R1,R3);

  end();
}