import matplotlib.pyplot as plt
import numpy as np
def draw_fbd():
fig, ax = plt.subplots(figsize=(6, 4))
ax.set_xlim(-2, 14)
ax.set_ylim(-5, 5)
# Draw the pipe (horizontal line)
pipe_x = [0, 12]
pipe_y = [0, 0]
ax.plot(pipe_x, pipe_y, 'k-', linewidth=4, label="Pipe")
# Fixed support at the wall (left side)
ax.add_patch(plt.Rectangle((-1.5, -1), 1.5, 2, color='gray', alpha=0.6, label="Fixed Support"))
# Force P downward at the end
ax.arrow(12, 0, 0, -2, head_width=0.5, head_length=0.5, fc='r', ec='r', label="Force P (40 lb)")
ax.text(12.2, -2, "$P=40$ lb", fontsize=10, color='r')
# Bending moment (curved arrow at fixed end)
ax.annotate('', xy=(0, 2), xytext=(0, 1), arrowprops=dict(arrowstyle='->', color='b', lw=2))
ax.text(-0.5, 2, "$M=480$ lb-in", fontsize=10, color='b')
# Torsional moment (curved arrow around pipe axis)
ax.annotate('', xy=(1, 0.5), xytext=(0.5, 1), arrowprops=dict(arrowstyle='->', color='purple', lw=2))
ax.text(1, 1, "$T=360$ lb-in", fontsize=10, color='purple')
# Labels
ax.text(6, 0.5, "Pipe Wrench Handle", fontsize=10, color='black')
ax.text(-1.8, 0, "Fixed Support", fontsize=10, color='black')
# Hide axes
ax.set_xticks([])
ax.set_yticks([])
ax.spines['top'].set_visible(False)
ax.spines['right'].set_visible(False)
ax.spines['left'].set_visible(False)
ax.spines['bottom'].set_visible(False)
plt.legend()
plt.title("Free-Body Diagram of Pipe Wrench")
plt.show()
draw_fbd()
aW1wb3J0IG1hdHBsb3RsaWIucHlwbG90IGFzIHBsdAppbXBvcnQgbnVtcHkgYXMgbnAKCmRlZiBkcmF3X2ZiZCgpOgogICAgZmlnLCBheCA9IHBsdC5zdWJwbG90cyhmaWdzaXplPSg2LCA0KSkKICAgIGF4LnNldF94bGltKC0yLCAxNCkKICAgIGF4LnNldF95bGltKC01LCA1KQogICAgCiAgICAjIERyYXcgdGhlIHBpcGUgKGhvcml6b250YWwgbGluZSkKICAgIHBpcGVfeCA9IFswLCAxMl0KICAgIHBpcGVfeSA9IFswLCAwXQogICAgYXgucGxvdChwaXBlX3gsIHBpcGVfeSwgJ2stJywgbGluZXdpZHRoPTQsIGxhYmVsPSJQaXBlIikKICAgIAogICAgIyBGaXhlZCBzdXBwb3J0IGF0IHRoZSB3YWxsIChsZWZ0IHNpZGUpCiAgICBheC5hZGRfcGF0Y2gocGx0LlJlY3RhbmdsZSgoLTEuNSwgLTEpLCAxLjUsIDIsIGNvbG9yPSdncmF5JywgYWxwaGE9MC42LCBsYWJlbD0iRml4ZWQgU3VwcG9ydCIpKQogICAgCiAgICAjIEZvcmNlIFAgZG93bndhcmQgYXQgdGhlIGVuZAogICAgYXguYXJyb3coMTIsIDAsIDAsIC0yLCBoZWFkX3dpZHRoPTAuNSwgaGVhZF9sZW5ndGg9MC41LCBmYz0ncicsIGVjPSdyJywgbGFiZWw9IkZvcmNlIFAgKDQwIGxiKSIpCiAgICBheC50ZXh0KDEyLjIsIC0yLCAiJFA9NDAkIGxiIiwgZm9udHNpemU9MTAsIGNvbG9yPSdyJykKICAgIAogICAgIyBCZW5kaW5nIG1vbWVudCAoY3VydmVkIGFycm93IGF0IGZpeGVkIGVuZCkKICAgIGF4LmFubm90YXRlKCcnLCB4eT0oMCwgMiksIHh5dGV4dD0oMCwgMSksIGFycm93cHJvcHM9ZGljdChhcnJvd3N0eWxlPSctPicsIGNvbG9yPSdiJywgbHc9MikpCiAgICBheC50ZXh0KC0wLjUsIDIsICIkTT00ODAkIGxiLWluIiwgZm9udHNpemU9MTAsIGNvbG9yPSdiJykKICAgIAogICAgIyBUb3JzaW9uYWwgbW9tZW50IChjdXJ2ZWQgYXJyb3cgYXJvdW5kIHBpcGUgYXhpcykKICAgIGF4LmFubm90YXRlKCcnLCB4eT0oMSwgMC41KSwgeHl0ZXh0PSgwLjUsIDEpLCBhcnJvd3Byb3BzPWRpY3QoYXJyb3dzdHlsZT0nLT4nLCBjb2xvcj0ncHVycGxlJywgbHc9MikpCiAgICBheC50ZXh0KDEsIDEsICIkVD0zNjAkIGxiLWluIiwgZm9udHNpemU9MTAsIGNvbG9yPSdwdXJwbGUnKQogICAgCiAgICAjIExhYmVscwogICAgYXgudGV4dCg2LCAwLjUsICJQaXBlIFdyZW5jaCBIYW5kbGUiLCBmb250c2l6ZT0xMCwgY29sb3I9J2JsYWNrJykKICAgIGF4LnRleHQoLTEuOCwgMCwgIkZpeGVkIFN1cHBvcnQiLCBmb250c2l6ZT0xMCwgY29sb3I9J2JsYWNrJykKICAgIAogICAgIyBIaWRlIGF4ZXMKICAgIGF4LnNldF94dGlja3MoW10pCiAgICBheC5zZXRfeXRpY2tzKFtdKQogICAgYXguc3BpbmVzWyd0b3AnXS5zZXRfdmlzaWJsZShGYWxzZSkKICAgIGF4LnNwaW5lc1sncmlnaHQnXS5zZXRfdmlzaWJsZShGYWxzZSkKICAgIGF4LnNwaW5lc1snbGVmdCddLnNldF92aXNpYmxlKEZhbHNlKQogICAgYXguc3BpbmVzWydib3R0b20nXS5zZXRfdmlzaWJsZShGYWxzZSkKICAgIAogICAgcGx0LmxlZ2VuZCgpCiAgICBwbHQudGl0bGUoIkZyZWUtQm9keSBEaWFncmFtIG9mIFBpcGUgV3JlbmNoIikKICAgIHBsdC5zaG93KCkKCmRyYXdfZmJkKCkKCg==
import matplotlib.pyplot as plt
import numpy as np
def draw_fbd():
fig, ax = plt.subplots(figsize=(6, 4))
ax.set_xlim(-2, 14)
ax.set_ylim(-5, 5)
# Draw the pipe (horizontal line)
pipe_x = [0, 12]
pipe_y = [0, 0]
ax.plot(pipe_x, pipe_y, 'k-', linewidth=4, label="Pipe")
# Fixed support at the wall (left side)
ax.add_patch(plt.Rectangle((-1.5, -1), 1.5, 2, color='gray', alpha=0.6, label="Fixed Support"))
# Force P downward at the end
ax.arrow(12, 0, 0, -2, head_width=0.5, head_length=0.5, fc='r', ec='r', label="Force P (40 lb)")
ax.text(12.2, -2, "$P=40$ lb", fontsize=10, color='r')
# Bending moment (curved arrow at fixed end)
ax.annotate('', xy=(0, 2), xytext=(0, 1), arrowprops=dict(arrowstyle='->', color='b', lw=2))
ax.text(-0.5, 2, "$M=480$ lb-in", fontsize=10, color='b')
# Torsional moment (curved arrow around pipe axis)
ax.annotate('', xy=(1, 0.5), xytext=(0.5, 1), arrowprops=dict(arrowstyle='->', color='purple', lw=2))
ax.text(1, 1, "$T=360$ lb-in", fontsize=10, color='purple')
# Labels
ax.text(6, 0.5, "Pipe Wrench Handle", fontsize=10, color='black')
ax.text(-1.8, 0, "Fixed Support", fontsize=10, color='black')
# Hide axes
ax.set_xticks([])
ax.set_yticks([])
ax.spines['top'].set_visible(False)
ax.spines['right'].set_visible(False)
ax.spines['left'].set_visible(False)
ax.spines['bottom'].set_visible(False)
plt.legend()
plt.title("Free-Body Diagram of Pipe Wrench")
plt.show()
draw_fbd()