def get_xy(alpha, beta, structure_settings):
r = structure_settings.r # short arm length (attached to the rotative axis)
a = structure_settings.a # long arm length
s = structure_settings.s # pen distance
xa = structure_settings.xa #left short arm x
xb = structure_settings.xb #right short arm x
# d is the first short arm extremity
xd = xa - r * math.sin(alpha)
yd = r * math.cos(alpha)
# e is the first short arm extremity
xe = xb - r * math.sin(beta)
ye = r * math.cos(beta)
de = compute_distance(xd, yd, xe, ye)
#theta is the angle formed by de and the left long arm
cos_theta = de/float(2 * a)
cos_theta = min(cos_theta, 1.0)
cos_theta = max(cos_theta, -1.0)
theta = math.acos(cos_theta)
#gamma is the angle formed by an horizontal axis and de
tan_gamma = (ye-yd)/float(xe-xd)
gamma = math.atan(tan_gamma)
#lambda is the angle formed by an horizontal axis and the left long arm
lam = theta + gamma
xt = xd + a * math.cos(lam) - s * math.sin(lam)
yt = yd + a * math.sin(lam) + s * math.cos(lam)
return xt, yt
评论列表
文章目录