MVN line#
import numpy as np
import matplotlib.pylab as plt
from matplotlib.patches import Arc,StepPatch
from ipywidgets import widgets, interact, interactive, fixed, interact_manual
def vervormingV(locationx,locationy,scale,flip=0,rotation=0):
vx = [-0.5,0,0,0.5]
if flip==0:
vy = [0.25,0.25,-0.25,-0.25]
elif flip==1:
vy = [-0.25,-0.25,0.25,0.25]
vxr= np.add(np.multiply(np.cos(rotation/180*np.pi),vx),np.multiply(np.sin(rotation/180*np.pi),vy))
vyr= np.add(np.multiply(np.sin(rotation/180*np.pi),vx),-np.multiply(np.cos(rotation/180*np.pi),vy))
vxscaled = np.add(locationx,np.multiply(scale,vxr))
vyscaled = np.add(locationy,np.multiply(scale,vyr))
plt.plot(vxscaled,vyscaled,color='black',linewidth=1)
plt.axis('equal')
def vervormingN(locationx,locationy,scale,sign=1,rotation=0):
if sign==1:
nx = [-0.5,0,0,0,0.5,0,0]
ny = [0,0,0.5,0,0,0,-0.5]
elif sign==0:
nx = [-0.5,0.5]
ny = [0,0]
nxr= np.add(np.multiply(np.cos(rotation/180*np.pi),nx),np.multiply(np.sin(rotation/180*np.pi),ny))
nyr= np.add(np.multiply(np.sin(rotation/180*np.pi),nx),-np.multiply(np.cos(rotation/180*np.pi),ny))
nxscaled = np.add(locationx,np.multiply(scale,nxr))
nyscaled = np.add(locationy,np.multiply(scale,nyr))
plt.plot(nxscaled,nyscaled,color='black',linewidth=1)
plt.axis('equal')
#vervormingV(1,1,1,flip=0,rotation=45)
#plt.figure()
#vervormingN(1,1,1,sign=0,rotation=45)
5.01a
def func(a,F,MVN):
x=[0,a,a+a,a+a+a/2,a+a+a/2+a/2,a+a+a/2+a/2,a+a]
y=[0,0,0,0,0,a,a]
plt.plot(x,y,color='black',linewidth=2)
Av = F/4
Bv = F*2.5/2
print('Oplegreactie Aᵥ = %.2f kN (\u2193)' % Av)
print('Oplegreactie Bᵥ = %.2f kN (\u2191)' % Bv)
print('Oplegreactie Bₕ = %.0f kN (-)' % 0)
if MVN == 'M-lijn':
M_b = F*a/2
scale = a/M_b/2
M = np.multiply(scale,[0,M_b/2,M_b,0,0,0,0])
My=np.add(y,M)
plt.plot(x,My,color='blue')
plt.annotate('%.0f kNm' % M_b,xy = [x[2],My[2]])
ax = plt.gca()
vervormingsteken = Arc(xy = [3.5*a/2,a/6],width = a/5, height = a/5,angle=180,theta1=180,theta2=360)
ax.add_patch(vervormingsteken)
elif MVN =='V-lijn':
V_AB = -Av
V_BF = F
scale = a/max(V_AB,V_BF)/2
V = [0,V_AB,V_AB,V_BF,V_BF,0,0,0,0]
y=[0,0,0,0,0,0,0,a,a]
Vy = np.add(y,np.multiply(scale,V))
x=[0,0,a+a,a+a,a+a+a/2,a+a+a/2,a+a+a/2+a/2,a+a+a/2+a/2,a+a]
plt.plot(x,Vy,color='blue')
for i in range(1,5):
plt.annotate('%.0f kN' % abs(V[i]),xy = [x[i],Vy[i]])
vervormingV(a,Vy[1]/2,Vy[1]/2,0)
vervormingV(a+a+a/4,Vy[3]/2,Vy[3]/2,1,0)
elif MVN =='N-lijn':
plt.plot(x,y,color='blue')
plt.grid()
plt.axis('equal')
interact(func, a = widgets.IntSlider(min=2, max=10, value=5, step=1, description="a (m)"),
F = widgets.IntSlider(min=10, max=200, value=200, step=1, description="F (kN)"),
MVN = widgets.ToggleButtons(options=['N-lijn', 'V-lijn', 'M-lijn']))
<function __main__.func(a, F, MVN)>
5.02a-d
def func(a,b,c,d,F1,F2,MVN):
x1=[0,0,a,a,a+b,a+b]
y1=[0,0,0,0,0,0]
x2=[a,a,a,a]
y2=[0,0,c,c]
x3=[a,a,a+d,a+d]
y3=[c,c,c,c]
plt.plot(x1,y1,color='black',linewidth=2)
plt.plot(x2,y2,color='black',linewidth=2)
plt.plot(x3,y3,color='black',linewidth=2)
B_v = (F1*(a+d)+F2*c)/(a+b)
A_v = F1-B_v
A_h = F2
if A_v<0:
print('Oplegreactie Aᵥ = %.2f kN (\u2193)' % abs(A_v))
elif A_v==0:
print('Oplegreactie Aᵥ = %.0f kN (-)' % A_v)
else:
print('Oplegreactie Aᵥ = %.2f kN (\u2191)' % A_v)
print('Oplegreactie Aₕ = %.2f kN (\u2190)' % A_h)
print('Oplegreactie Bᵥ = %.2f kN (\u2191)' % B_v)
if MVN == 'M-lijn':
M_E = F1*d
M_C_CE = F1*d+F2*c
M_C_CB = -B_v*b
M_C_AC = -A_v*a
M1 = [0,0,M_C_AC,M_C_CB,0,0]
M2 = [0,-M_C_CE,-M_E,0]
M3 = [0,M_E,0,0]
scale = 0.5*b/max(M1+M3)
My1=np.add(y1,np.multiply(scale,M1))
Mx2=np.add(x2,np.multiply(scale,M2))
My3=np.add(y3,np.multiply(scale,M3))
plt.plot(x1,My1,color='blue')
plt.plot(Mx2,y2,color='blue')
plt.plot(x3,My3,color='blue')
plt.annotate('%.2f kNm' % M_E,xy = [x3[1],My3[1]])
plt.annotate('%.2f kNm' % M_E,xy = [Mx2[2],y2[2]])
plt.annotate('%.2f kNm' % M_C_CE,xy = [Mx2[1],y2[1]])
plt.annotate('%.2f kNm' % M_C_CB,xy = [x1[3],My1[3]])
plt.annotate('%.2f kNm' % abs(M_C_AC),xy = [x1[2],My1[2]])
vervormingstekenAC = Arc(xy = [a*0.8,My1[2]/3],width = My1[2]/2, height = My1[2]/2,theta1=0,theta2=180)
vervormingstekenBC = Arc(xy = [a+0.25*b,My1[3]/3],width = My1[3]/2, height = My1[3]/2,theta1=0,theta2=180)
vervormingstekenCE = Arc(xy = [a+(M2[1]+M2[2])/2*scale/3,c/2],width = (M2[1]+M2[2])/2*scale/2, height = (M2[1]+M2[2])*scale/2/2,theta1=-90,theta2=90)
vervormingstekenED = Arc(xy = [a+0.25*d,c+M3[1]*scale/3],width = M3[1]*scale/2, height = M3[1]*scale/2,theta1=0,theta2=180)
ax = plt.gca()
ax.add_patch(vervormingstekenAC)
ax.add_patch(vervormingstekenBC)
ax.add_patch(vervormingstekenCE)
ax.add_patch(vervormingstekenED)
elif MVN == 'V-lijn':
V_E = F1
V3 = [0,V_E,V_E,0]
V_C_CE = F2
V2 = [0,V_C_CE,V_C_CE,0]
V_C_AC = A_v
V_C_CB = -B_v
V1 = [0,V_C_AC,V_C_AC,V_C_CB,V_C_CB,0]
scale = 0.5*b/max(V1+V3)
Vy1=np.add(y1,np.multiply(scale,V1))
Vx2=np.add(x2,np.multiply(scale,V2))
Vy3=np.add(y3,np.multiply(scale,V3))
plt.plot(x1,Vy1,color='blue')
plt.plot(Vx2,y2,color='blue')
plt.plot(x3,Vy3,color='blue')
plt.annotate('%.2f kN' % V_E,xy = [x3[1],Vy3[1]])
plt.annotate('%.2f kN' % V_E,xy = [x3[2],Vy3[2]])
plt.annotate('%.2f kN' % V_C_CE,xy = [Vx2[1],y2[1]])
plt.annotate('%.2f kN' % V_C_CE,xy = [Vx2[2],y2[2]])
plt.annotate('%.2f kN' % abs(V_C_AC),xy = [x1[1],Vy1[1]])
plt.annotate('%.2f kN' % abs(V_C_AC),xy = [x1[2],Vy1[2]])
plt.annotate('%.2f kN' % abs(V_C_CB),xy = [x1[3],Vy1[3]])
plt.annotate('%.2f kN' % abs(V_C_CB),xy = [x1[4],Vy1[4]])
if V_C_AC>0:
vervormingV(a/2,V1[1]/2*scale,V1[1]/3*scale,flip=1,rotation=0)
else:
vervormingV(a/2,V1[1]/2*scale,V1[1]/3*scale,flip=0,rotation=0)
vervormingV(a+b/2,V1[3]/2*scale,V1[3]/3*scale,flip=0,rotation=0)
vervormingV(a+V2[1]/2*scale,c/2,V2[1]/3*scale,flip=1,rotation=90)
vervormingV(a+d/2,c+V3[1]/2*scale,V3[1]/3*scale,flip=1,rotation=0)
elif MVN == 'N-lijn':
N_E = F2
N_C_CE = F1
N_C_AC = F2
N_C_CB = 0
N3 = [0,N_E,N_E,0]
N2 = [0,N_C_CE,N_C_CE,0]
N1 = [0,N_C_AC,N_C_AC,N_C_CB,N_C_CB,0]
scale = 0.5*b/max(N1+N3)
Ny1=np.add(y1,np.multiply(scale,N1))
Nx2=np.add(x2,np.multiply(scale,N2))
Ny3=np.add(y3,np.multiply(scale,N3))
plt.plot(x1,Ny1,color='blue')
plt.plot(Nx2,y2,color='blue')
plt.plot(x3,Ny3,color='blue')
plt.annotate('%.2f kN' % N_E,xy = [x3[1],Ny3[1]])
plt.annotate('%.2f kN' % N_E,xy = [x3[2],Ny3[2]])
plt.annotate('%.2f kN' % N_C_CE,xy = [Nx2[1],y2[1]])
plt.annotate('%.2f kN' % N_C_CE,xy = [Nx2[2],y2[2]])
plt.annotate('%.2f kN' % N_C_AC,xy = [x1[1],Ny1[1]])
plt.annotate('%.2f kN' % N_C_AC,xy = [x1[2],Ny1[2]])
vervormingN(a/2,N1[1]/2*scale,N1[1]/3*scale,sign=0,rotation=0)
vervormingN(a+N2[1]/2*scale,c/2,N2[1]/3*scale,sign=0,rotation=90)
vervormingN(a+d/2,c+N3[1]/2*scale,N3[1]/3*scale,sign=0,rotation=0)
plt.grid()
plt.axis('equal')
interact(func,
a = widgets.IntSlider(min=1, max=10, value=5, step=1, description="a (m)"),
b = widgets.IntSlider(min=1, max=10, value=5, step=1, description="b (m)"),
c = widgets.IntSlider(min=1, max=10, value=5, step=1, description="c (m)"),
d = widgets.IntSlider(min=1, max=10, value=5, step=1, description="d (m)"),
F1 = widgets.IntSlider(min=0, max=200, value=200, step=1, description="F1 (kN)"),
F2 = widgets.IntSlider(min=0, max=200, value=200, step=1, description="F2 (kN)"),
MVN = widgets.ToggleButtons(options=['N-lijn', 'V-lijn', 'M-lijn']))
<function __main__.func(a, b, c, d, F1, F2, MVN)>
5.3
def func(a,F,MVN):
x1=[0,0,a,a,a,8,8]
y1=[0,0,a*6/8,a*6/8,a*6/8,6,6]
x2=[8,8,8,8]
y2=[3,3,6,6]
plt.plot(x1,y1,color='black',linewidth=2)
plt.plot(x2,y2,color='black',linewidth=2)
B_v = (F*4*a-F*1*a*3/4)/8
A_v = F*4-B_v
A_h = F
print('Oplegreactie Aᵥ = %.2f kN (\u2191)' % A_v)
print('Oplegreactie Aₕ = %.2f kN (\u2192)' % A_h)
print('Oplegreactie Bᵥ = %.2f kN (\u2191)' % B_v)
plt.grid()
plt.axis('equal')
rotation=np.arctan(3/4)/np.pi*180
if MVN == 'M-lijn':
M_F = -B_v*(8-a)
M1 = [0,0,M_F,M_F,M_F,0,0]
M2 = [0,0,0,0]
scale = 0.5*8/M_F
Mxr= np.add(x1,np.multiply(np.sin(rotation/180*np.pi),np.multiply(scale,M1)))
Myr= np.add(y1,-np.multiply(np.cos(rotation/180*np.pi),np.multiply(scale,M1)))
Mx2 = np.add(M2,x2)
My2 = y2
plt.plot(Mxr,Myr,color='blue')
plt.plot(Mx2,My2,color='blue')
plt.annotate('%.2f kNm' % abs(M_F),xy = [Mxr[3],Myr[3]])
ax = plt.gca()
Vervx = max(min(6,a),2) + np.sin(rotation/180*np.pi)*M_F*scale/2
Vervy = max(min(4.5,a*6/8),1.5) - np.cos(rotation/180*np.pi)*M_F*scale/3
vervormingsteken = Arc(xy = [Vervx,Vervy],width = M_F*scale/3, height = M_F*scale/3,angle=rotation,theta1=180,theta2=360)
ax.add_patch(vervormingsteken)
elif MVN == 'N-lijn':
N_SC = B_v*3/5
N_AC = -A_v*3/5-A_h*4/5
N1 = [0,N_AC,N_AC,0,N_SC,N_SC,0]
N2 = [0,B_v,B_v,0]
scale = 0.5*8/max(abs(N_SC),abs(N_AC))
Nxr = np.add(x1,np.multiply(np.sin(rotation/180*np.pi),np.multiply(scale,N1)))
Nyr = np.add(y1,-np.multiply(np.cos(rotation/180*np.pi),np.multiply(scale,N1)))
Nx2 = np.add(np.multiply(scale,N2),x2)
Ny2 = y2
plt.plot(Nxr,Nyr,color='blue')
plt.plot(Nx2,Ny2,color='blue')
plt.annotate('%.2f kN' % abs(N_AC),xy = [Nxr[1],Nyr[1]])
plt.annotate('%.2f kN' % abs(N_AC),xy = [Nxr[2],Nyr[2]])
plt.annotate('%.2f kN' % N_SC,xy = [Nxr[4],Nyr[4]])
plt.annotate('%.2f kN' % N_SC,xy = [Nxr[5],Nyr[5]])
plt.annotate('%.2f kN' % abs(B_v),xy = [Nx2[1],Ny2[1]])
plt.annotate('%.2f kN' % abs(B_v),xy = [Nx2[2],Ny2[2]])
vervormingN(np.mean(Nxr[0:4]),np.mean(Nyr[0:4]),N1[1]/3*scale,sign=0,rotation=rotation)
vervormingN(np.mean(Nxr[3:7]),np.mean(Nyr[3:7]),N1[4]/3*scale,sign=1,rotation=rotation)
vervormingN(8+B_v*scale/2,4.5,B_v/3*scale,sign=0,rotation=0)
elif MVN == 'V-lijn':
V_SC = B_v*4/5
V_AC = -A_v*4/5+A_h*3/5
V1 = [0,V_AC,V_AC,0,V_SC,V_SC,0]
V2 = [0,0,0,0]
scale = 0.5*8/max(abs(V_SC),abs(V_AC))
Vxr = np.add(x1,np.multiply(np.sin(rotation/180*np.pi),np.multiply(scale,V1)))
Vyr = np.add(y1,-np.multiply(np.cos(rotation/180*np.pi),np.multiply(scale,V1)))
Vx2 = np.add(np.multiply(scale,V2),x2)
Vy2 = y2
plt.plot(Vxr,Vyr,color='blue')
plt.plot(Vx2,Vy2,color='blue')
plt.annotate('%.2f kN' % abs(V_AC),xy = [Vxr[1],Vyr[1]])
plt.annotate('%.2f kN' % abs(V_AC),xy = [Vxr[2],Vyr[2]])
plt.annotate('%.2f kN' % V_SC,xy = [Vxr[4],Vyr[4]])
plt.annotate('%.2f kN' % V_SC,xy = [Vxr[5],Vyr[5]])
vervormingV(np.mean(Vxr[0:4]),np.mean(Vyr[0:4]),V1[1]/3*scale,flip=1,rotation=rotation)
vervormingV(np.mean(Vxr[3:7]),np.mean(Vyr[3:7]),V1[4]/3*scale,flip=0,rotation=rotation)
interact(func,
a = widgets.FloatSlider(min=.1, max=7.9, value=4, step=0.1, description="a (m)",readout_format='.1f'),
F = widgets.IntSlider(min=0, max=200, value=200, step=1, description="F (kN)"),
MVN = widgets.ToggleButtons(options=['N-lijn', 'V-lijn', 'M-lijn']))
<function __main__.func(a, F, MVN)>
def func(a,q1,q2,MVN):
x1=np.linspace(0,2*a,201)
print(x1)
interact(func,
a = widgets.FloatSlider(min=.1, max=7.9, value=4, step=0.1, description="a (m)",readout_format='.1f'),
q1 = widgets.IntSlider(min=0, max=200, value=200, step=1, description="q1 (kN/m)"),
q2 = widgets.IntSlider(min=0, max=200, value=200, step=1, description="q2 (kN/m)"),
MVN = widgets.ToggleButtons(options=['N-lijn', 'V-lijn', 'M-lijn']))
<function __main__.func(a, q1, q2, MVN)>