我一直在努力计算加速器。我花了一整天时间进行搜索,试用和试用错误,但一切都是徒劳的。我在舞台(AS3)上有一条水平线,比方说宽度为200。该行的中心点是60(如果它是100,我肯定会通过计算百分比来完成它)。现在我需要知道给定百分比的宽度。例如,总宽度为60%或从哪里开始30%(或任何其他百分比)?
我所知道的是总宽度和中心点(百分比或宽度)。
我们将非常感谢您的帮助。如果有任何公式,请给我详细信息,不要只提及a / b / c,因为我从未成为物理学的学生:(
编辑:
我没有10个声誉,因此我无法在此直接发布图片。请单击以下链接查看图像。
链接:http://oi62.tinypic.com/11sk183.jpg
example http://oi62.tinypic.com/11sk183.jpg
编辑:
这就是我想要的:我想从任何一点(A / B / C / D)到其相对点(A-> B / A-> D ......)行驶n%(链接) ) http://i59.tinypic.com/2wp2lbl.jpg
答案 0 :(得分: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。
为了获得y = 0.3 = 30%的x的反方向,需要求解二次方程y = x *(1 + a *(1-x))或a * x ^ 2-(1 +α)* 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))
只要在[0,1]中没有x的极点,就可以保证单调性没有问题,保证为> 0。