1 | if get('geometry2, 'version)=false then load(geometry2);
|
---|
2 | /* Points: A,B,C, X,Y,Z.
|
---|
3 | Cosines and sines of angles at A B and C are:
|
---|
4 | COSA, COSB, COSC, SINA, SINB, SINC
|
---|
5 | CXBC, CYAC, CYCA, CZAB, CZBA, CZBA.
|
---|
6 | Lengths:
|
---|
7 | XB, XC, YA, YC, ZA, ZB
|
---|
8 | AB, AC, BC,
|
---|
9 | XY, XZ, YZ
|
---|
10 | X,Y,Z are characterized by the conditions
|
---|
11 | that
|
---|
12 | angle XBC is 1/3 of ABC
|
---|
13 | angle XCB is 1/3 of ACB
|
---|
14 | angle YAC is 1/3 of BAC
|
---|
15 | angle YCA is 1/3 of BCA
|
---|
16 | angle ZAB is 1/3 of CAB
|
---|
17 | angle ZBA is 1/3 of CBA
|
---|
18 | Conclusion is that XYZ form an equilateral triangle
|
---|
19 | XY=XZ=YZ
|
---|
20 | */
|
---|
21 |
|
---|
22 | A:[0,0]; B:[1,0]; C:[u1,u2];
|
---|
23 | X:[x1,x2]; Y:[x3,x4]; Z:[x5,x6];
|
---|
24 |
|
---|
25 | vars:append(listofvars([X,Y,Z]),[XB,XC,YA,YC,ZA,ZB],
|
---|
26 | [AB,AC,BC], [XY,XZ,YZ],
|
---|
27 | [COSA, COSB, COSC, SINA, SINB, SINC],
|
---|
28 | [CXBC, CXCB, CYAC, CYCA, CZAB, CZBA],
|
---|
29 | [SXBC, SXCB, SYAC, SYCA, SZAB, SZBA],
|
---|
30 | [V]);
|
---|
31 |
|
---|
32 | params:listofvars([A,B,C]);
|
---|
33 | cover:[[],[u2]];
|
---|
34 |
|
---|
35 |
|
---|
36 | eqns:[
|
---|
37 | /* Angles: cosine law */
|
---|
38 | XB^2+BC^2-2*XB*BC*CXBC-XC^2,
|
---|
39 | XC^2+BC^2-2*XC*BC*CXCB-XB^2,
|
---|
40 | YA^2+AC^2-2*YA*AC*CYAC-YC^2,
|
---|
41 | YC^2+AC^2-2*YC*AC*CYCA-YA^2,
|
---|
42 | ZA^2+AB^2-2*ZA*AB*CZAB-ZB^2,
|
---|
43 | ZB^2+AB^2-2*ZB*AB*CZBA-ZA^2,
|
---|
44 | CXBC^2+SXBC^2-1,
|
---|
45 | CXCB^2+SXCB^2-1,
|
---|
46 | CYAC^2+SYAC^2-1,
|
---|
47 | CZAB^2+SZAB^2-1,
|
---|
48 | CZBA^2+SZBA^2-1,
|
---|
49 | /* Main angles: cosine law */
|
---|
50 | AB^2+AC^2-2*AB*AC*COSA-BC^2,
|
---|
51 | AB^2+BC^2-2*AB*BC*COSB-AC^2,
|
---|
52 | AC^2+BC^2-2*AC*BC*COSC-AB^2,
|
---|
53 | SINA^2+COSA^2-1,
|
---|
54 | SINB^2+COSB^2-1,
|
---|
55 | SINC^2+COSC^2-1,
|
---|
56 | /* Distances of X,Y,Z from vertices */
|
---|
57 | distance(X,B,XB),
|
---|
58 | distance(X,C,XC),
|
---|
59 | distance(Y,A,YA),
|
---|
60 | distance(Y,C,YC),
|
---|
61 | distance(Z,A,ZA),
|
---|
62 | distance(Z,B,ZB),
|
---|
63 | /* Lengths of sides of main triangle */
|
---|
64 | distance(A,B,AB),
|
---|
65 | distance(A,C,AC),
|
---|
66 | distance(B,C,BC),
|
---|
67 | /* Lengths of the trisector triangle */
|
---|
68 | distance(X,Y,XY),
|
---|
69 | distance(X,Z,XZ),
|
---|
70 | distance(Y,Z,YZ),
|
---|
71 | /* Trisector relations */
|
---|
72 | 4*CXBC^3-3*CXBC-COSB,
|
---|
73 | 4*CXCB^3-3*CXCB-COSC,
|
---|
74 | 4*CYAC^3-3*CYAC-COSA,
|
---|
75 | 4*CYCA^3-3*CYCA-COSC,
|
---|
76 | 4*CZAB^3-3*CZAB-COSA,
|
---|
77 | 4*CZBA^3-3*CZBA-COSB,
|
---|
78 | /* sine rules */
|
---|
79 | 4*CXBC^2*SXBC-3*SXBC-SINB,
|
---|
80 | 4*CXCB^2*SXCB-3*SXCB-SINC,
|
---|
81 | 4*CYAC^2*SXCB-3*SYAC-SINA,
|
---|
82 | 4*CYCA^2*SYCA-3*SYCA-SINC,
|
---|
83 | 4*CZAB^2*SZAB-3*SZAB-SINA,
|
---|
84 | 4*CZBA^2*SZBA-3*SZBA-SINB,
|
---|
85 | /* Conclusion: XY=XZ */
|
---|
86 | 1-v*(XY-XZ)
|
---|
87 | ];
|
---|
88 |
|
---|
89 | eqns:expand(eqns);
|
---|
90 | cover:expand(cover);
|
---|
91 | stringout("trisector.out",eqns,vars,params,cover);
|
---|