1
任何人都可以向我解釋爲什麼speed
計算關閉?
這是一個浮點計算。我在日誌中顯示(下面)涉及的所有因素。
根據我的手計算器:Android漂浮點乘法因子0.004739
長度:SQRT(3.497924^2 +(-1.134711)^ 2)= 3.67736881
速度:1.05 * 3.67736881 = 3.86123725
這是關通過一個因子4.739 10^-3從印刷結果3.879624
的代碼:
float factor = yTouch(paddle, ballBounds);
float speed = SPEED_TRANSFER[level] * PointF.length(mSpeed.x, mSpeed.y);
double alpha = Math.PI/2;
double beta = Math.atan2(mSpeed.y, mSpeed.x);
double tau = -(2*alpha+beta);
Log.v("debug", String.format("speed(%f) mSpeed(%f,%f) transfer(%2.2f)
length(%f) Original tau(%3.2f)", speed, mSpeed.x, mSpeed.y,
SPEED_TRANSFER[level], PointF.length(mSpeed.x, mSpeed.y), tau/Math.PI));
日誌:
03-24 10:48:53.421: V/debug(3236): speed(3.879624) mSpeed(3.497924,-1.134711) transfer(1.05) length(3.677369) Original tau(-0.90)
編輯
這個我試過,直接乘法是正確的。
Log.v("debug", "Direct multiplication:" + (1.05f * 3.677369f));
03-24 11:49:08.687: V/debug(7644): Direct multiplication:3.8612373
你確定你的代碼中的SPEED_TRANSFER [level] = 1.05和PointF.length(mSpeed.x,mSpeed.y)= 3.67736881的值嗎?你有沒有嘗試記錄它? – 2013-03-24 09:45:18
@NAYOSO在日誌打印中,向右滾動 – ilomambo 2013-03-24 09:47:12
這是多線程的嗎? 'mSpeed'在計算'speed'和你的Log線之間改變?另外,如果你將'factor'和'speed'聲明爲'double',它有什麼區別嗎? – mtrw 2013-03-24 09:48:39