【发布时间】:2020-02-28 12:43:06
【问题描述】:
我在 ACS3 中进行了弹丸运动模拟,其中一个功能涉及创建一个多维数组,该数组在给定输入角度和速度的情况下绘制时间与球的高度。
当我跟踪这些值时,'t' 变量应该有 0.1 的增量,但是,在某些情况下,它给了我近似值(例如,它给了我 0.7999999 而不是 0.8...)。此外,数组的值是'undefined'。
我不知道还有什么可以尝试的,因为如果循环中的变量是 t = t + 0.1;,那么它不应该显示任何近似值。
我还尝试添加 velocity*Math.sin(angle/(180/Math.PI)) 而不是 vy(y 速度分量)。
shoot.addEventListener(MouseEvent.CLICK, Calculate);
function Calculate(event:MouseEvent):void{
var t = 0;
var position:Array = new Array();
var vy = velocity*Math.sin(angle/(180/Math.PI));
var Time = int(((2*vy)/9.81)*100)/100
time_txt.text = Time;
while (t <= Time){
position[t]= (vy*t)-4.905*(t*t);
t = t + 0.1;
trace(t);
trace(position[t]);
}
}
我希望控制台打印正确的时间间隔 (0.1,0.2,0.3...) 以及计算出的位置值,而不是“未定义”(基于 SUVAT 方程)。所以预期的结果应该是这样的:
0.1
(在时间 0.1 计算的位置)
0.2
(在时间 0.2 计算的位置)
0.3
(在时间 0.3 计算的位置)
...并继续,直到变量“t”大于计算“时间”。
相反,我得到:
0.1
未定义
0.2
未定义
0.30000000000000004 // 底线是......这是怎么回事?
undefined // 还是这个?
0.4
未定义
0.5
未定义
0.6
未定义
0.7
未定义
0.7999999999999999
未定义
0.8999999999999999
未定义
等等……
【问题讨论】:
-
你从不定义 角度 所以结果也是未定义的。
标签: arrays loops actionscript-3 actionscript undefined