# Funciones de dibujo del circulo de Mohr. Hay que cargar antes with(plots) y with(plottools). print("Funciones de Circulo de Mohr:"); print("dado centro y radio: cmohr0(sigma0,radio)"); print("dada matriz de tensiones: cmohr1(sigma)"); print("punto de plano que forma beta con x: pcmohr(sigma,beta)"); # dibuja el circulo de Mohr conocido el centro (sigma0) y el radio (radio) cmohr0 := proc(sigma0,radio) local mohr,p0: mohr := circle([sigma0,0],radio,color=red,thickness=2): p0 := disk([sigma0,0],radio/20,color=black): display(mohr,p0,scaling=constrained); end proc: # Dibuja el circulo de mohr en funcion de la matriz de tensiones en cartesianas (sigma) cmohr1 := proc(sigma) local sigma0,radio,x1,x2,p0,px1,px2,mohr: sigma0 := 1/2 * (sigma[1,1] + sigma[2,2]); radio := sqrt((1/2*(sigma[1,1]-sigma[2,2]))**2+sigma[1,2]**2); x1 := [sigma[1,1],-sigma[1,2]]: x2 := [sigma[2,2],sigma[1,2]]: p0 := disk([sigma0,0],radio/40): px1 := disk(x1,radio/20,color=green): px2 := disk(x2,radio/20,color=blue): mohr := circle([sigma0,0],radio,color=red,thickness=2): display([mohr,p0,px1,px2,line(x1,x2,color=blue)],scaling=constrained); end proc: # funcion para obtener un punto en el circulo de mohr correspondiente a la tension en un plano dado, en funcion de la matriz de tensiones (sigma) y del angulo (beta) con el plano x pcmohr := proc(sigma,beta) local sigma0,radio,alpha,px,p,angulo: sigma0 := 1/2 * (sigma[1,1] + sigma[2,2]); radio := sqrt((1/2*(sigma[1,1]-sigma[2,2]))**2+sigma[1,2]**2); alpha := arctan(-sigma[1,2], sigma[1,1]-sigma0); px := [sigma0 + radio*cos(alpha+2*beta),radio*sin(alpha+2*beta)]: p := disk(px,radio/20,color=brown); angulo := arc([sigma0,0], radio/3, alpha..alpha+2*beta): display(p,line([sigma0,0],px,color=brown),angulo,scaling=constrained); end proc: