|
@@ -1,98 +1,98 @@
|
|
|
-!!omap
|
|
|
|
|
-- name: unknown
|
|
|
|
|
-- parts:
|
|
|
|
|
- - name: head
|
|
|
|
|
- shapes:
|
|
|
|
|
- libraries: ['from math import tan, radians, sin, cos', from pysketcher import
|
|
|
|
|
- *]
|
|
|
|
|
- - name: constants
|
|
|
|
|
- shapes:
|
|
|
|
|
- fontsize: 18 # size of the characters
|
|
|
|
|
- g: 9.81 # constant gravity
|
|
|
|
|
- theta: 30.0 # inclined plane angle
|
|
|
|
|
- L: 10.0 # sketch sizing parameter
|
|
|
|
|
- a: 1.0 #
|
|
|
|
|
- xmin: 0.0 # sketech min Abscissa
|
|
|
|
|
- ymin: -3.0 # sketech min Ordinate
|
|
|
|
|
- rl: 2.0 # rectangle width
|
|
|
|
|
- rL: 1.0 # rectangle length
|
|
|
|
|
- - name: frame
|
|
|
|
|
- shapes:
|
|
|
|
|
- setframe: # sketch setup
|
|
|
|
|
- action: drawing_tool.set_coordinate_system(xmin=xmin-L/5, xmax=xmin+1.5*L,ymin=ymin,
|
|
|
|
|
- ymax=ymin+1.5*L,instruction_file='tmp_mpl_friction.py')
|
|
|
|
|
- setblackline: # default frame values and actions
|
|
|
|
|
- action: drawing_tool.set_linecolor('black')
|
|
|
|
|
- B: point(a+L,0) # wall right end
|
|
|
|
|
- A: point(a,tan(radians(theta))*L) # wall left end
|
|
|
|
|
- normal_vec: point(sin(radians(theta)),cos(radians(theta))) # Vector normal to wall
|
|
|
|
|
- tangent_vec: point(cos(radians(theta)),-sin(radians(theta))) # Vector tangent to wall
|
|
|
|
|
- help_line: Line(A,B) # wall line
|
|
|
|
|
- x: a + 3*L/10. # contact point Abscissa
|
|
|
|
|
- y: help_line(x=x) # contact point Ordinate
|
|
|
|
|
- contact: point(x, y) # contact point: middle of the rectangle bottom edge
|
|
|
|
|
- c: contact + rL/2*normal_vec
|
|
|
|
|
- - name: body
|
|
|
|
|
- shapes:
|
|
|
|
|
- rectangle:
|
|
|
|
|
- formula: Rectangle(contact, rl, rL)
|
|
|
|
|
- style:
|
|
|
|
|
- linecolor: blue
|
|
|
|
|
- filled_curves:
|
|
|
|
|
- color: blue
|
|
|
|
|
- transform: ['rotate(-theta, contact)', translate(-rl/2*tangent_vec)]
|
|
|
|
|
- N:
|
|
|
|
|
- formula: Force(contact - rl*normal_vec, contact, r'$N$', text_pos='start')
|
|
|
|
|
- style:
|
|
|
|
|
- linecolor: black
|
|
|
|
|
- wheel:
|
|
|
|
|
- formula: "Composition({'outer': rectangle})"
|
|
|
|
|
- style:
|
|
|
|
|
- shadow: 1
|
|
|
|
|
- mc:
|
|
|
|
|
- formula: Text(r'$c$', c)
|
|
|
|
|
- body:
|
|
|
|
|
- formula: "Composition({'wheel': wheel, 'N': N, 'mc': mc})"
|
|
|
|
|
- style:
|
|
|
|
|
- linecolor: black
|
|
|
|
|
- - name: plan
|
|
|
|
|
- shapes:
|
|
|
|
|
- mB:
|
|
|
|
|
- formula: Text(r'$B$',B)
|
|
|
|
|
- mA:
|
|
|
|
|
- formula: Text(r'$A$', A)
|
|
|
|
|
- wall:
|
|
|
|
|
- formula: Wall(x=[A[0], B[0]], y=[A[1], B[1]], thickness=-0.25,transparent=False)
|
|
|
|
|
- style:
|
|
|
|
|
- linecolor: black
|
|
|
|
|
- x_const:
|
|
|
|
|
- formula: Line(contact, contact + point(0,4))
|
|
|
|
|
- style:
|
|
|
|
|
- linestyle: dotted
|
|
|
|
|
- transform: rotate(-theta, contact)
|
|
|
|
|
- x_axis:
|
|
|
|
|
- formula: Axis(start=contact+ 2*rl*normal_vec, length=2*rl,label='$x$', rotation_angle=-theta)
|
|
|
|
|
- plan:
|
|
|
|
|
- formula: "Composition({'body': body, 'inclined wall': wall, 'x start': x_const,\
|
|
|
|
|
- \ 'x axis': x_axis, 'mA': mA, 'mB': mB})"
|
|
|
|
|
- - name: friction
|
|
|
|
|
- shapes:
|
|
|
|
|
- mg:
|
|
|
|
|
- formula: Gravity(c, rl, text='$Mg$')
|
|
|
|
|
- style:
|
|
|
|
|
- linecolor: black
|
|
|
|
|
- angle:
|
|
|
|
|
- formula: Arc_wText(r'$<bslash>theta$', center=B, radius=3, start_angle=180-theta,
|
|
|
|
|
- arc_angle=theta, fontsize=fontsize)
|
|
|
|
|
- style:
|
|
|
|
|
- linecolor: black
|
|
|
|
|
- linewidth: 1
|
|
|
|
|
- ground:
|
|
|
|
|
- formula: Line((B[0]-L/10., 0), (B[0]-L/2.,0))
|
|
|
|
|
- stlye:
|
|
|
|
|
- linecolor: black
|
|
|
|
|
- linestyle: dashed
|
|
|
|
|
- linewidth: 1
|
|
|
|
|
- friction:
|
|
|
|
|
- formula: "Composition({'plan': plan, 'ground': ground, 'mg': mg, 'angle':\
|
|
|
|
|
- \ angle})"
|
|
|
|
|
|
|
+!!omap
|
|
|
|
|
+- name: unknown
|
|
|
|
|
+- parts:
|
|
|
|
|
+ - name: head
|
|
|
|
|
+ shapes:
|
|
|
|
|
+ libraries: ['from math import tan, radians, sin, cos', from pysketcher import
|
|
|
|
|
+ *]
|
|
|
|
|
+ - name: constants
|
|
|
|
|
+ shapes:
|
|
|
|
|
+ fontsize: 18 # size of the characters
|
|
|
|
|
+ g: 9.81 # constant gravity
|
|
|
|
|
+ theta: 30.0 # inclined plane angle
|
|
|
|
|
+ L: 10.0 # sketch sizing parameter
|
|
|
|
|
+ a: 1.0 #
|
|
|
|
|
+ xmin: 0.0 # sketech min Abscissa
|
|
|
|
|
+ ymin: -3.0 # sketech min Ordinate
|
|
|
|
|
+ rl: 2.0 # rectangle width
|
|
|
|
|
+ rL: 1.0 # rectangle length
|
|
|
|
|
+ - name: frame
|
|
|
|
|
+ shapes:
|
|
|
|
|
+ setframe: # sketch setup
|
|
|
|
|
+ action: drawing_tool.set_coordinate_system(xmin=xmin-L/5, xmax=xmin+1.5*L,ymin=ymin,
|
|
|
|
|
+ ymax=ymin+1.5*L,instruction_file='tmp_mpl_friction.py')
|
|
|
|
|
+ setblackline: # default frame values and actions
|
|
|
|
|
+ action: drawing_tool.set_linecolor('black')
|
|
|
|
|
+ B: point(a+L,0) # wall right end
|
|
|
|
|
+ A: point(a,tan(radians(theta))*L) # wall left end
|
|
|
|
|
+ normal_vec: point(sin(radians(theta)),cos(radians(theta))) # Vector normal to wall
|
|
|
|
|
+ tangent_vec: point(cos(radians(theta)),-sin(radians(theta))) # Vector tangent to wall
|
|
|
|
|
+ help_line: Line(A,B) # wall line
|
|
|
|
|
+ x: a + 3*L/10. # contact point Abscissa
|
|
|
|
|
+ y: help_line(x=x) # contact point Ordinate
|
|
|
|
|
+ contact: point(x, y) # contact point: middle of the rectangle bottom edge
|
|
|
|
|
+ c: contact + rL/2*normal_vec
|
|
|
|
|
+ - name: body
|
|
|
|
|
+ shapes:
|
|
|
|
|
+ rectangle:
|
|
|
|
|
+ formula: Rectangle(contact, rl, rL)
|
|
|
|
|
+ style:
|
|
|
|
|
+ linecolor: blue
|
|
|
|
|
+ filled_curves:
|
|
|
|
|
+ color: blue
|
|
|
|
|
+ transform: ['rotate(-theta, contact)', translate(-rl/2*tangent_vec)]
|
|
|
|
|
+ N:
|
|
|
|
|
+ formula: Force(contact - rl*normal_vec, contact, r'$N$', text_pos='start')
|
|
|
|
|
+ style:
|
|
|
|
|
+ linecolor: black
|
|
|
|
|
+ wheel:
|
|
|
|
|
+ formula: "Composition({'outer': rectangle})"
|
|
|
|
|
+ style:
|
|
|
|
|
+ shadow: 1
|
|
|
|
|
+ mc:
|
|
|
|
|
+ formula: Text(r'$c$', c)
|
|
|
|
|
+ body:
|
|
|
|
|
+ formula: "Composition({'wheel': wheel, 'N': N, 'mc': mc})"
|
|
|
|
|
+ style:
|
|
|
|
|
+ linecolor: black
|
|
|
|
|
+ - name: plan
|
|
|
|
|
+ shapes:
|
|
|
|
|
+ mB:
|
|
|
|
|
+ formula: Text(r'$B$',B)
|
|
|
|
|
+ mA:
|
|
|
|
|
+ formula: Text(r'$A$', A)
|
|
|
|
|
+ wall:
|
|
|
|
|
+ formula: Wall(x=[A[0], B[0]], y=[A[1], B[1]], thickness=-0.25,transparent=False)
|
|
|
|
|
+ style:
|
|
|
|
|
+ linecolor: black
|
|
|
|
|
+ x_const:
|
|
|
|
|
+ formula: Line(contact, contact + point(0,4))
|
|
|
|
|
+ style:
|
|
|
|
|
+ linestyle: dotted
|
|
|
|
|
+ transform: rotate(-theta, contact)
|
|
|
|
|
+ x_axis:
|
|
|
|
|
+ formula: Axis(start=contact+ 2*rl*normal_vec, length=2*rl,label='$x$', rotation_angle=-theta)
|
|
|
|
|
+ plan:
|
|
|
|
|
+ formula: "Composition({'body': body, 'inclined wall': wall, 'x start': x_const,\
|
|
|
|
|
+ \ 'x axis': x_axis, 'mA': mA, 'mB': mB})"
|
|
|
|
|
+ - name: friction
|
|
|
|
|
+ shapes:
|
|
|
|
|
+ mg:
|
|
|
|
|
+ formula: Gravity(c, rl, text='$Mg$')
|
|
|
|
|
+ style:
|
|
|
|
|
+ linecolor: black
|
|
|
|
|
+ angle:
|
|
|
|
|
+ formula: Arc_wText(r'$<bslash>theta$', center=B, radius=3, start_angle=180-theta,
|
|
|
|
|
+ arc_angle=theta, fontsize=fontsize)
|
|
|
|
|
+ style:
|
|
|
|
|
+ linecolor: black
|
|
|
|
|
+ linewidth: 1
|
|
|
|
|
+ ground:
|
|
|
|
|
+ formula: Line((B[0]-L/10., 0), (B[0]-L/2.,0))
|
|
|
|
|
+ stlye:
|
|
|
|
|
+ linecolor: black
|
|
|
|
|
+ linestyle: dashed
|
|
|
|
|
+ linewidth: 1
|
|
|
|
|
+ friction:
|
|
|
|
|
+ formula: "Composition({'plan': plan, 'ground': ground, 'mg': mg, 'angle':\
|
|
|
|
|
+ \ angle})"
|