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
|