[英]Python | The Plot I expected don't show up
The image I thought was this one.我想的图像是这个。
But.. I only get this empty one every time I try.但是..我每次尝试都只得到这个空的。
I don't know why the line is missing.. and what I am missing..我不知道为什么这条线不见了..以及我缺少什么..
import math
from matplotlib import pyplot as plt
import numpy as np
dx=42; dy=-17; ab=10.5; bc=42; cd=24; be=65; ef=5;
ml = np.arange(0, 2*math.pi, math.pi/180)
for theta in ml:
alpha = -90*math.pi/180
P=2*cd*(dx-ab+math.cos(theta))
Q=2*cd*(dy-ab+math.sin(theta))
R=(dx**2)+(dy**2)+(ab**2)+(cd**2)-(bc**2)-(2*ab+(math.cos(theta))+dy+(math.sin(theta)))
math_cos_phi=((-P*R)-(Q*math.sqrt((P**2)+(Q**2)-(R**2))))/((P**2)+(Q**2));
math_sin_phi=((-Q*R)+(P*math.sqrt((P**2)+(Q**2)-(R**2))))/((P**2)+(Q**2));
a = math_cos_phi; b = math_sin_phi
phi=math.atan2(a,b);
math.cos_psi=((dx+cd+(math_cos_phi))-(ab+math.cos(theta)))/bc;
math.sin_psi=((dy+cd+(math_sin_phi))-(ab+math.sin(theta)))/bc;
c = math.cos_psi; d = math.sin_psi;
psi=math.atan2(c,d);
Fx=ab*math.cos(theta)+be*math.cos(psi)+ef*math.cos(psi+alpha);
Fy=ab*math.sin(theta)+be*math.sin(psi)+ef*math.sin(psi+alpha);
plt.plot(Fx,Fy, c = 'g', linewidth=2);
plt.show()
Data=[theta*180/math.pi,Fx,Fy];
Did you mean this?你是这个意思吗? (you have your plot inside the loop for each point. You need to move it to outside of the loop and accumulate all the Fx's and Fy's ): (您在每个点的循环内都有 plot。您需要将其移到循环外并累积所有 Fx 和 Fy ):
import math
from matplotlib import pyplot as plt
import numpy as np
dx=42; dy=-17; ab=10.5; bc=42; cd=24; be=65; ef=5;
ml = np.arange(0, 2*math.pi, math.pi/180)
Fx, Fy = [], []
for theta in ml:
alpha = -90*math.pi/180
P=2*cd*(dx-ab+math.cos(theta))
Q=2*cd*(dy-ab+math.sin(theta))
R=(dx**2)+(dy**2)+(ab**2)+(cd**2)-(bc**2)-(2*ab+(math.cos(theta))+dy+(math.sin(theta)))
math_cos_phi=((-P*R)-(Q*math.sqrt((P**2)+(Q**2)-(R**2))))/((P**2)+(Q**2));
math_sin_phi=((-Q*R)+(P*math.sqrt((P**2)+(Q**2)-(R**2))))/((P**2)+(Q**2));
a = math_cos_phi; b = math_sin_phi
phi=math.atan2(a,b);
math.cos_psi=((dx+cd+(math_cos_phi))-(ab+math.cos(theta)))/bc;
math.sin_psi=((dy+cd+(math_sin_phi))-(ab+math.sin(theta)))/bc;
c = math.cos_psi; d = math.sin_psi;
psi=math.atan2(c,d);
Fx.append(ab*math.cos(theta)+be*math.cos(psi)+ef*math.cos(psi+alpha))
Fy.append(ab*math.sin(theta)+be*math.sin(psi)+ef*math.sin(psi+alpha))
plt.plot(Fx,Fy, c = 'g', linewidth=2);
plt.show()
Data=[theta*180/math.pi,Fx,Fy];
output: output:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.