早期手機不支援浮點,無法用 sin/cos 分解速度。採用「先放大後縮小」定點數策略:
V0 分解:Vx = V0*cos、Vy = V0*sin(均為放大值)。x = Vx*t/100000、y = (Vy*t - 5*t²)/100000。主迴圈極快(毫秒級),需緩衝時間增長:
while (true) {
thisThread.sleep(10);
if (bFire) {
tTemp++;
if (tTemp > 10) { t += 1; tTemp = 0; }
}
}
tTemp 閾值控制時間流逝速度。時間再放大 20000 倍,公式調整為:
x = Vx * t / 100000;
y = (Vy * t - 5 * t * t * 20000) / 100000;
加入初始位置常量(螢幕底部):
y = (100000*(getHeight()-20) - (Vy*t - 5*t*t*20000)) / 100000;
圖1:Nokia 7650 模擬器運行效果