我正在尝试推导一个简单的函数,它分别指定分量c和e在y轴上的大小(分别)。给定一个从左到右过渡的向量,我想计算c的大小(Y的分量)相对于DF和DE之间的增量的大小,以及d的大小相对于CA和AB之间的增量的大小,因此大小是1:1的相关性。我需要它对所有六个转换都是有效的,这样Y轴上的值就可以指示结果的类型。也就是说,e绝对不同于c,e与c成反比。假设矢量穿过Y轴,我需要仍然能够量化c和e的大小,如图1所示。

看起来好像我只需要量化c(使用向量的起点,由此c与a成比例)和e(由start (CA/DF) +Δ计算得出的向量的终点,其中e与d成比例),我不需要指定整个向量(简单的直线)。end是简单的start +delta.我试着用python实现这一点,如下所示(带编号的参数链接到带编号的图(图中省略了4-6个)):
# delta = change from initial value to next value
# 1) start = -9, delta=18
# 2) start=-9, delta=8
# 3) start = 1, delta=8
# 4) start = -1, delta=-8 --ommitted
# 5) start = 9, delta=-8 --ommitted
# 6) start = 9, delta=-18 --ommitted
def calc_comp(start=-9, delta=8): # 2) implementation
c = max((start+delta),0)
e = min((start+delta),0)
return c, e然而,这显然没有考虑到上面显示的所有情况,我不确定如何最好地实现这一点,同时考虑到所有可能的转换(6)关于如何最好地实现这一点的一些建议将是很好的,谢谢。
发布于 2019-09-15 10:07:22
如果我理解您正在尝试做的事情,我认为以下方法应该有效:
def signed_parts(a,b):
#assumes a < b
if b <= 0:
return b-a, 0
elif a >= 0:
return 0, a-b
else:
return -a, -b
def calc_comp(start, delta):
if delta >= 0:
return signed_parts(start,start + delta)
else:
return signed_parts(start + delta, start)https://stackoverflow.com/questions/57940348
复制相似问题