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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
|
.PS
# Geometry.m4
# Some constructions from https://tex.stackexchange.com/
gen_init
maxpswid = 9
Scaled: [
Fig1: [
# FourbarSVG.m4
# https://tex.stackexchange.com/questions/563831/how-to-draw-four-bar-linkage-with-center-of-mass
ls = 1/25.4 # local scale
a = 18*ls
b = 73*ls
c = 47*ls
d = 72*ls
A0: Here
B0: A0+(d,0)
circlerad = 1*ls
define(`pivot',`[
C: circle
line down_ 4*ls from C+(2*ls,0)
arc from last line.start to C+(-2*ls,0) with .c at C
line down_ 4*ls
B: line thick 1.6 right 7*ls with .c at (C,Here)
thinlines_
sep = 0.9*ls
nhash = B.len/sep
for i=0 to nhash do { line down sep left sep from B.end-(i/nhash*B.len,0) }
thicklines_
]')
pivot with .C at A0; "$A_0$" at A0-(5,0)*ls
circle dashed rad a at A0
pivot with .C at B0; "$B_0$" at B0-(5,0)*ls
"$d = A_0B_0$" at 0.5<A0,B0>
B1: Cintersect(A0,a+b,B0,c)
B2: Cintersect(A0,b-a,B0,c)
arc dashed from B1 to B2 with .c at B0
A0B1: line thick 1.6 from A0 to B1 chop 2*ls chop 0
line thick 1.6 from B0 to B1 chop 2*ls chop 0 "c" ljust
circle fill_(1) at B1; "$B_1$" wid 3*ls at B1+(5,0)*ls
A1: circle fill_(1) at LCintersect(A0B1,A0,a,R)
"$A_1$" at A1+(5,0)*ls
A2: b/(b-a) between B2 and A0; "$a$" at 0.4<A2,A0> above rjust
"$b$" at 0.4<A1,B1> above rjust
A2B2: line thick 1.6 from A2 to B2
line thick 1.6 from B0 to B2 chop 2*ls chop 0
circle fill_(1) at B2; "$B_2$" at B2+(5,0)*ls
circle fill_(1) at A2; "$A_2$" at A2+(5,0)*ls
thinlines_
line from B0+(3*ls,0) right 4*ls
ArcAngle(Here,B0,B1,5*ls) ->; "$\psi_0$" at last arc.ne above ljust
ArcAngle(B1,B0,B2,8*ls) ->; "$\psi$" at last arc.n+(-3*ls,0) above
ArcAngle(A1,A0,B2,b*0.45) ->; "$\theta$" at last arc.start+(0,4*ls)
line from A0+(3*ls,0) right 8*ls
ArcAngle(Here,A0,B1,9*ls) ->; "$\theta_0$" \
at last arc.start+(2,2)*ls
]
Fig2: [
# FourbarSVG.m4
# https://tex.stackexchange.com/questions/609452/help-drawing-a-more-sophisticated-right-triangle-with-tikz-or-something-else
textkht = 12/72
unit = 0.6
C: Here; { "$C$" at C rjust below }
B: C+(4*unit,0); { "$B$" at B ljust below }
A: C+(0,3*unit); { "$A$" at A rjust above }
H: PerpTo(C,A,B); { "$H$" at H ljust above }
line from C to H then to B then to C shaded rgbstring(0.5,0.8,0.9)
line from C to H then to A then to C shaded rgbstring(0.8,0.9,0.7)
ArcAngle(C,A,B,unit*0.4)
ArcAngle(C,A,B,unit*0.5)
ArcAngle(A,B,C,unit*0.5,,"$\theta$" rjust)
ArcAngle(B,C,H,unit*0.5); {"$\theta$" at C+(unit*0.3,unit*0.17) }
ArcAngle(B,C,A,unit*0.6)
RightAngle(B,C,A,unit*0.17)
RightAngle(C,H,A,unit*0.17)
] with .nw at Fig1.sw+(0.2,0)
Fig3: [ ls = 3/4 # local scale
# https://tex.stackexchange.com/questions/593272/drawing-complex-geometry
P: dot(at Here); "$P$" at P.s below
N: dot(at P+(3.5*ls,1.5*ls)); "$N$" at N.se ljust below
O: dot(at (N,P)); "$O$" at O.s below
R: dot(at 1/3 between O and P);"$R$" at R.s below
M: dot(at (R,N)); "$M$" at M.se ljust below
Q: dot(at (M.x,M.y+distance(M,N)/distance(N,O)*distance(P,O)));"$Q$" at Q.e ljust
line from P to Q then to N then to O
B: line to P chop -0.3
line from M to N
Pu: line from R to Q chop 0 chop -0.3
H: line from P to N chop 0 chop -0.3
X: dot(at Intersect_(Pu,H)); "$X$" at X.se ljust below
thinlines_
RightAngle(Q,M,N)
RightAngle(Q,N,H.end)
RightAngle(N,O,B.start)
ArcAngle(N,P,Q,0.4); "$\beta$" at last arc.ne above ljust
ArcAngle(O,P,N,0.5); "$\alpha$" at last arc.start+(5bp__,8bp__)
ArcAngle(R,Q,N,0.5); "$\alpha$" at last arc.start+(8bp__,-5bp__)
] with .sw at Fig2.e+(-0.2,-0.7)
ifelse(1,1,`
Fig4: [ ls = 2/3 # local scale
A: Here; "$A$" at A above
B: A+(-1*ls,-3.5*ls); "$B$" at B below rjust
C: B+(4.6*ls,0); "$C$" at C below ljust
AB: line from A to B
BC: line from B to C
CA: line from C to A
perpto(A,BC,L); "$L$" at L below
AL: line from A to L; RightAngle(A,L,C)
angleLAC = atan2(C.x-L.x,A.y-L.y)
S: move from A to (sin(angleLAC/2),-cos(angleLAC/2))
AW: line from A to Intersect_(S,BC)
W: Here; "$W$" at W below rjust
perpto(C,AB,N); "$N$" at N above rjust
CN: line from C to N; RightAngle(C,N,B)
perpto(B,CA,M); "$M$" at M above
CM: line from B to M; RightAngle(B,M,C)
H: Intersect_(CN,AL); "$H$" at H +(4bp__,10bp__)
thinlines_
Equidist3(B,L,N,CC1,c1rad); C1: circle rad c1rad at CC1
Equidist3(B,W,N,CC2,c2rad); C2: circle rad c2rad at CC2
Equidist3(B,C,N,CC3,c3rad); C3: circle rad c3rad at CC3
Equidist3(W,C,M,CC4,c4rad); C4: circle rad c4rad at CC4
thicklines_
Z: LCintersect(AW,CC2,C2.rad); "$Z$" at Z+(-5bp__,-5bp__)
HZ: move from H to Z
Y: LCintersect(HZ,CC4,C4.rad,R); "$Y$" at Y above
X: LCintersect(HZ,CC2,C2.rad); "$X$" at X above rjust
Loopover_(`P',`dot(at P)',X,Y,Z)
line dashed from X to Y chop -linewid/2
RightAngle(A,Z,Y)
] with .sw at (Fig3.e,Fig2.s)
')
] scaled 0.8
.PE
|