我從0 to 100
一個float
,我想它轉換成一個數-20 to 20
一個例子:平移浮動到負或正
float
是100
然後再翻譯這將是-20
float
是50
然後翻譯它將是0
float
是0
然後翻譯它將是20
這樣做的最好方法是什麼?
我從0 to 100
一個float
,我想它轉換成一個數-20 to 20
一個例子:平移浮動到負或正
float
是100
然後再翻譯這將是-20
float
是50
然後翻譯它將是0
float
是0
然後翻譯它將是20
這樣做的最好方法是什麼?
float procent = (myval - 50)/2.5f;
使用,如果你需要整數(int) floor(procent)
...
如何:(50. - x) * 0.4
((x/2.5)- 20) * -1
這應該這樣做
你需要計算斜率。既然你已經有3分(0,20)(50,0)(100,20),你可以做dx = 40/100 = 2/5(y的變化/ x的變化)和b = -20。然後,你定義一個函數(F(X)= MX + B)F(X)=(2/5)* X - 20,0 < = X < = 100
float translate(float f)
{
return 20.0f - ((20.0f * f)/50.0f);
}
爲什麼這是downvoted? –
不知道。這有點奇怪。 – EricR
你想實現什麼被稱爲「線性插值」,可以在一般的功能就像這樣:
float linear_interpolate(float x, float x0, float x1, float y0, float y1)
{
return y0 + (x - x0)*((y1-y0)/(x1-x0));
}
在你的情況,你會這樣稱呼它(與您的值替換x):
float value = linear_interpolate(x, 0.0f, 100.0f, -20.0f, 20.0f);
如此多的答案,讓我覺得我現在沒有數學:( – Elgoog
這是非常基本的數學;你應該刷新基本代數,如果你想成爲一個高效的開發者 –