猫史档案馆


【岛三实验】关于"实体速度常数"的测量及实验代码附赠

用户:云游de鸽者云游de鸽者查看:9 回复:13 评论:9 创建时间:2023-01-10T12:16:02


------前方高能,没有唠嗑部分,全部都是知识输出------

测试代码如下:

console.clear();
const spaceShip = world.createEntity({
        mesh:'mesh/模型.vb',
        position:new Box3Vector3(喵,2,喵),
        meshScale:new Box3Vector3(1/16, 1/16, 1/16),
        collides:true,
        fixed:true,
        gravity:false,
    });
    spaceShip.velocity.x = 1;
var posX2 = 0;//存储上一个位置
world.onPlayerJoin(({entity})=>{//此处可改,只是写代码时随手乱写一下罢了
    var time = 喵;//输出间隔时间(可改,单位ms)
    if(entity.player.name == '云游de鸽者'){//此处可改
        entity.player.canFly = true;
        entity.player.flySpeed = 100;//这两行是个人的设定,方便实验罢了,可删
        setInterval(() => {
            console.log(spaceShip.position.x - posX2);//控制台输出位移变化量
            posX2 = spaceShip.position.x;//更新上一个位置
        }, time);//setInterval是每个time时间执行{}里的内容
    }
});

(某些地方不小心按tab了,凑合一下吧)

当entity.velocity.x = 1,time = 1000时,输出结果是15或16

它对应的“物理意义”是:entity.velocity.x = 1的人话是"x轴速度每秒15或16格方块"

这个速度我们暂且称为"时间1000ms时的实体速度常数",记为V'

(很显然,velocity是2的时候,时间1000ms时的实体速度常数时2V')

我很疑惑为什么这个数字不是恒定的

于是缩小了变量time,发现无论time取何值,控制台的输出都会随着时间增加有所变化

说明V'值不稳定,大致是特性所致(就是说,设计该语句的时候实质上应是position在高速循环下的变化,像微积分思想或者说微元法一样无限趋近于匀速运动的效果)

在缩小time的过程中我有了一个新发现:

当time = 喵时,控制台输出的数字恒为1的次数最多

而在time进一步缩小时,控制台输出的数字逐渐变为0和1交错(原因应该是向上文提到的,设计该语句的时候实质上应是position在高速循环下的变化,像微积分思想或者说微元法一样无限趋近于匀速运动的效果)

又由于速度接近于恒定,时间和路程成比例

1s和喵ms时间之比:1000/喵 = 15.625

所以这两段时间下的路程之比:s1:s2也应该等于15.625

由于time = 喵时位移变化量恒为1

所以time = 1000时位移变化量应为15.625

也就是V' = 15.625

在各种特性、算法、网络等等因素的影响下,位移变化量的输出与实际效果略有差别,所以才会输出15或16

在将time调回1000后,我连续输出了若干组数据,将每组数据的平均数再取平均数,

我发现,随着组数的增加、每组含有的数据数的增加,得到的数字逐渐趋近于15.625

这也更加印证了V'=15.625的结论

例如其中两组实验数据:

(实验员:鸽者)

15组数据,10个16,5个15,V' ≈ 15.667

(实验员:学员一号)

100组数据,63个16,37个15,V' = 15.63(接近于15.625)

我们将数据恒定在100组,重复试验3次后所有数据完全不变,更加证实了上述结论(由于只有100组实验,数据还欠精确,欢迎诸位做更大数据的实验,在评论区反馈实验结果哦~)

 

故最终的结论:

实体速度平均常数为15.625格每秒

(前提:速度为1)

 

这个测量不是没有意义的,对于一些需要精确数据的地图来说,这个数据还是很重要的

(如有不足之处,欢迎诸位批评指正!有疑问也可在评论区提出)


回复

上一页1 页 / 共 1下一页
屑student屑student

咕个沙发

点赞0


评论


ZNS_哪吒ZNS_哪吒

板凳)

点赞0


评论


屑student屑student

其实100组出过62个16,38个15

点赞0


评论


云游de鸽者云游de鸽者

抱歉,不严谨了,所有数据都没有写单位,真是个低级错误(悲)还请诸位多多包涵

点赞0


评论


_HHHHHHHHHH__HHHHHHHHHH_

前排emotion_doge

点赞0


评论


FML饭米粒FML饭米粒

在后面添加一个自动取平均值并输出

然后你就可以挂机n秒之后看到数值趋向于15.625emotion_doge(当然切换窗口以后可能会有影响

点赞0


评论


SCS_user_LoeheodVOQSCS_user_LoeheodVOQ

看不懂,我的理解是velocity是加速度

点赞0


评论


迷失冷光迷失冷光

不用这么麻烦,velocity.mag()为1的话直接理解成每tick一格,一帧是64ms,一秒的移动量就是velocity.mag()*(1000/64)

点赞1


评论


SCS_user_LoeheodVOQSCS_user_LoeheodVOQ

前面实验了一下,发现速度阻尼对velocity影响巨大,阻尼为0时,velocity几乎不会降低

点赞0


评论


yee剑走天下yee剑走天下

不明觉厉

点赞0


评论


SCS_user_LoeheodVOQSCS_user_LoeheodVOQ

velocity最大128()

点赞0


评论


GZ006GZ006

收藏?)

点赞0


评论


小树同学小树同学

收藏一下

点赞0


评论