Excavadora 2D. Simulación

Simulación realista de una excavadora con tres cilindros hidráulicos
Podemos variar las longitudes de los émbolos, activar la animación y mostrar el rastro de la pluma.

La construcción ha sido realizada por Rafael Losada y José Antonio Mora

NO

NO

SI

SI

Animación

Longitud de 
los cilindros

Limpiar rastros

NO

NO

SI

SI

Deja rastro

a = 0.759 (slider from 0.06 to 1, step 0.001)
b = 0.857 (slider from 0 to 1.03, step 0.001)
c = 0.673 (slider from 0.33 to 0.8, step 0.001)
r = 1 (slider from -5 to 3, step 0.1)
A = (-0.5, -0.4999999999999989)
c01 = Circle(A, (1.97 * r))
P01 = Point(c01)
s01 = Segment(A, P01)
c02 = Circle(P01, (1.69 * r))
c03 = Circle(P01, (r * (1.69 + a)))
P02 = Intersect(c01, c03, 1)
s02 = Segment(P02, P01)
P03 = Intersect(c02, s02, 1)
P04 = Rotate(P02, 45°, A)
s03 = Segment(A, P04)
c04 = Circle(A, (r * 0.81))
P05 = Intersect(c04, s03, 1)
s04 = Segment(P03, P01)
s = Ray(A, P02)
r01 = Line(P05, s)
c06 = Circle(A, (8 * r))
P06 = Intersect(c06, s, 1)
r02 = OrthogonalLine(P06, s)
P07 = Intersect(r02, r01)
s05 = Segment(P05, P07)
s06 = Segment(P06, P07)
c07 = Circle(P05, (3.77 * r))
P08 = Intersect(c07, s05, 1)
c08 = Circle(P05, (7.1 * r))
P09 = Intersect(c08, s05, 1)
c09 = Circle(P09, (0.75 * r))
c10 = Circle(P08, (2.85 * r))
c11 = Circle(P08, (r * (2.85 + b)))
P10 = Intersect(c09, c11, 2)
s07 = Segment(P09, P10)
s08 = Segment(P08, P10)
P11 = Intersect(c10, s08, 1)
s09 = Segment(P08, P11)
r03 = Line(P07, s07)
c12 = Circle(P07, (3.19 * r))
P12 = Intersect(c12, r03, 1)
c13 = Circle(P07, (1.32 * r))
P13 = Intersect(c13, s05, 1)
s10 = Segment(P07, P12)
r05 = Line(P12, s05)
r04 = Line(P13, s10)
P14 = Intersect(r04, r05)
P15 = Midpoint(P14, P12)
P16 = Midpoint(P07, P12)
c14 = Circle(P12, (0.57 * r))
c15 = Circle(P16, (1.27 * r))
c16 = Circle(P16, (r * (1.27 + c)))
P17 = Intersect(c14, c16, 2)
s11 = Segment(P17, P16)
P18 = Intersect(c15, s11, 1)
s12 = Segment(P12, P17)
c17 = Circle(P12, P15)
P19 = Intersect(c17, r03, 1)
P20 = (12.86, -3.98)
P21 = (13.700000000000001, -4.86)
P22 = (14.24, -4.9)
P23 = (14.76, -3.92)
P24 = (14.42, -3.36)
P25 = (13.24, -3.44)
P26 = (12.8, -4.86)
P27 = (13.46, -3.3200000000000003)
P28 = (14.120000000000001, -3.48)
P29 = (12.700000000000001, -4.24)
P30 = (14.42, -4.54)
P31 = (14.02, -4.88)
P32 = (11.26, -4.66)
P33 = (13.9, -4.48)
α = Angle(P17, P12, P18)
β: 108.62° - α
u01 = Vector(P30, P28)
u02 = Vector(P28, P27)
u03 = Vector(P27, P29)
u04 = Vector(P29, P32)
u05 = Vector(P26, P31)
u06 = Vector(P32, P26)
u07 = Vector(P31, P30)
u08 = Vector(P33, P31)
P34 = Translate(P19, u08)
P35 = Rotate(P34, β, P19)
P36 = Translate(P35, u07)
P37 = Translate(P36, u01)
P38 = Translate(P37, u02)
P39 = Translate(P38, u03)
P40 = Translate(P39, u04)
P41 = Translate(P40, u06)
P42 = Rotate(P36, β, P19)
P43 = Rotate(P37, β, P19)
P44 = Rotate(P38, β, P19)
P45 = Rotate(P39, β, P19)
P46 = Rotate(P40, β, P19)
P47 = Rotate(P41, β, P19)
c18 = Circle(P16, (1.6 * r))
P48 = Intersect(c18, s11)
P49 = (-2.8000000000000003, -3.18)
s13 = Segment(P16, P48)
r06 = Line(P49, xAxis)
P50 = Point(r06)
r07 = OrthogonalLine(P50, r06)
P51 = Point(r07)
r08 = OrthogonalLine(P51, r07)
P52 = Point(r08)
P53 = Point(r06)
r09 = Line(P52, P53)
P54 = Point(r09)
P55 = (0.42, -4)
r10 = OrthogonalLine(P55, r06)
P56 = Point(r10)
r11 = OrthogonalLine(P56, r10)
r12 = OrthogonalLine(P49, r11)
P57 = Intersect(r11, r12)
P58 = Point(r10)
r13 = OrthogonalLine(P58, r10)
P59 = Intersect(r12, r13)
P60 = Point(r11)
r14 = OrthogonalLine(P60, r13)
P62 = Intersect(r13, r14)
P63 = (-2.1, -1.92)
r15 = OrthogonalLine(P63, r14)
P64 = Point(r15)
r16 = Line(P64, r09)
P65 = Point(r16)
r17 = Line(P65, r06)
P66 = Point(r17)
P67 = (-0.62, -1.86)
u09 = Vector(P67, P52)
P68 = Translate(A, u09)
u10 = Vector(P52, P51)
u11 = Vector(P51, P50)
u12 = Vector(P50, P49)
P69 = Translate(P68, u10)
P70 = Translate(P69, u11)
P71 = Translate(P70, u12)
u13 = Vector(P52, P54)
u14 = Vector(P54, P55)
u15 = Vector(P55, P56)
P72 = Translate(P68, u13)
P73 = Translate(P72, u14)
P74 = Translate(P73, u15)
u16 = Vector(P56, P57)
u17 = Vector(P57, P59)
u18 = Vector(P59, P62)
u19 = Vector(P62, P60)
P75 = Translate(P74, u16)
P76 = Translate(P75, u17)
P77 = Translate(P76, u18)
P78 = Translate(P77, u19)
u20 = Vector(P52, P64)
P79 = Translate(P68, u20)
u21 = Vector(P64, P63)
u22 = Vector(P63, P66)
u23 = Vector(P66, P65)
P80 = Translate(P79, u21)
P81 = Translate(P80, u22)
P82 = Translate(P81, u23)
s14 = Segment(P79, P80)
a1 = Semicircle(P78, P77)
a2 = Semicircle(P76, P75)
p1, p1s1, p1s2, p1s3, p1s4, p1s5, p1s6, p1s7, p1s8 = Polygon(P70, P69, P68, P72, P73, P74, P75, P71)
p2, p2s1, p2s2, p2s3, p2s4 = Polygon(P80, P81, P82, P79)
P83 = Midpoint(P75, P76)
P84 = Midpoint(P78, P77)
k1 = CircleSector(P83, P75, P76)
k2 = CircleSector(P84, P77, P78)
p3, p3s1, p3s2, p3s3, p3s4 = Polygon(P75, P78, P77, P76)
p4, p4s1, p4s2, p4s3, p4s4 = Polygon(P05, A, P06, P07)
p5, p5s1, p5s2, p5s3, p5s4 = Polygon(P13, P07, P12, P15)
p6, p6s1, p6s2, p6s3, p6s4, p6s5, p6s6, p6s7 = Polygon(P44, P43, P42, P35, P47, P46, P45)
v = 0 (slider from 0 to 1, step 1)
nada = 4.15 (slider from -5 to 5, step 0.05)
texto3: "Cilindro 1: " + a + ""
texto4: "Cilindro 2: " + b + ""
texto5: "Cilindro 3: " + c + ""
d = 0 (slider from -5 to 5, step 0.05)
PP: P46