1

我一直在努力计算加速器。我花了一整天的时间在搜索、试验和错误中,但都是徒劳的。我在舞台 (AS3) 上有一条水平线,比如说 200 宽。那条线的中心点在 60 上(如果是 100,我肯定会通过计算百分比来完成)。现在我需要知道给定百分比的宽度。例如,60% 的总宽度或 30%(或任何其他百分比)从哪里开始?

我所知道的是总宽度和中心点(百分比或宽度)。

您的帮助将不胜感激。如果有任何公式,请给我详细信息,不要只提 a/b/c,因为我从来没有学过物理:(

编辑:

我没有10个声望,所以我不能直接在这里发布图片。请点击以下链接查看图片。

链接: http: //oi62.tinypic.com/11sk183.jpg

例子

编辑:

这正是我想要的:我想从任何点 (A/B/C/D) 到其相对点 (A->B/A->D ...) (Link) http:// i59.tinypic.com/2wp2lbl.jpg

4

1 回答 1

0

如果我理解正确,你想要一个非线性比例,所以线上的像素 1 为 0%,线上的像素 100 为 60%,像素 200 为 100%?

如果 x=pixelpos/200 是线上的相对位置,线性比例 y=x*100% 的一个简单变化是 y=(x+a*x*(1-x))*100%。

对于 x=0.5,该值是 y=0.5+a*0.25,因此要达到 0.6=60%,需要 a=0.4。

要获得相反方向的 x y=0.3=30%,需要求解二次方程 y=x*(1+a*(1-x)) 或 a*x^2-(1+a) *x+y=0。使用通解公式,这给出

x = (1+a)/(2*a)-sqrt((1+a)^2-4*a*y)/(2*a)
  = (2*y) / ( (1+a) + sqrt((1+a)^2-4*a*y) )
  = (2*y) / ( (1+a) + sqrt((1-a)^2+4*a*(1-y)) )

并且 a=0.4 和 y=0.3

x = 0.6/( 1.4 + sqrt(1.98-0.48) )
approx 0.6/2.6=3/13=231/1001 approx 0.23

对应于像素 46。

适用于介于 -1 和 1 之间的值,因为对于其他值,x=0 或 x=1 处的斜率将不是正数。


另一个简单的公式使用双曲线而不是抛物线,

y=a*x/(1+(a-1)*x)

通过反转

y+(a-1)*x*y = a*x  <=>  y = (a-(a-1)*y)*x
x = (y/a)/(1+(1/a-1)*y)

a = (y*(1-x))/(x*(1-y))

这里只要 x 在 [0,1] 中没有极点,单调性就没有问题,这保证了 a>0。

于 2014-03-17T13:59:13.333 回答