source: CGBLisp/examples/trisector.macsyma@ 1

Last change on this file since 1 was 1, checked in by Marek Rychlik, 15 years ago

First import of a version circa 1997.

File size: 2.1 KB
Line 
1if get('geometry2, 'version)=false then load(geometry2);
2/* Points: A,B,C, X,Y,Z.
3Cosines and sines of angles at A B and C are:
4COSA, COSB, COSC, SINA, SINB, SINC
5CXBC, CYAC, CYCA, CZAB, CZBA, CZBA.
6Lengths:
7 XB, XC, YA, YC, ZA, ZB
8 AB, AC, BC,
9 XY, XZ, YZ
10X,Y,Z are characterized by the conditions
11that
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
18Conclusion is that XYZ form an equilateral triangle
19 XY=XZ=YZ
20*/
21
22A:[0,0]; B:[1,0]; C:[u1,u2];
23X:[x1,x2]; Y:[x3,x4]; Z:[x5,x6];
24
25vars: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
32params:listofvars([A,B,C]);
33cover:[[],[u2]];
34
35
36eqns:[
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
89eqns:expand(eqns);
90cover:expand(cover);
91stringout("trisector.out",eqns,vars,params,cover);
Note: See TracBrowser for help on using the repository browser.