开启左侧

MTR实体在坐标过大时产生剧烈抖动和扭曲

[复制链接]
-DKZ4- 作者认证 2022-12-19 12:43:09
本帖最后由 -DKZ4- 于 2022-12-19 12:46 编辑 9 O, {2 ?6 N. l( h: P2 i
' S" @: x. a& R
这个bug类似于旧版本边境之地的方块抖动,具体表现在:
! [' q8 ~% `( A- C& c  I2 `
' s3 J9 K1 i) k% p0 e7 f当坐标大于100000格时,MTR列车、轨道会在移动视角时产生轻微抖动。
" x# k! {% V' m) X. r) j当坐标更大时,轨道甚至会出现扭曲的情况。
( w6 w4 E" ?5 J作为对照,原版的生物不会受到任何影响。
6 C( p% ^3 R) ^; Z版本1.18.2 Fabric,在服务器和单人存档均测试过,都会有bug% l' m" `0 ]+ T6 U! S

% _4 V0 W' U& [8 H9 }1 P
1 z8 h/ M% w  P

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
回复

使用道具 举报

XHG78999 作者认证 2022-12-19 12:54:33
肯定是溢出了,估计是算曲线算出上限了1 G: b# Q/ _  v. u( f4 o& j9 J
建议边算边取模(下意识
S1017上海南站幺幺道出发机调车进路好了准许发车转场 区间两k加五百限速六洞 司机明白
回复

使用道具 举报

Zbx1425 作者认证 2022-12-19 12:58:08
MTR 内部大部分计算现使用 32 位浮点数,所以会有精度误差。
  z' f( P' V1 S' }. q+ x7 \7 b换成 64 位浮点数能让这些现象出现的位置更远些,但这就要进行很多的改动。考虑到不常有人有需求建造如此大规模的系统,或许不太值得做。

评分

参与人数 1 +1 收起 理由
MSnj_studioX + 1 有人做大规模,飞机出了必然有.

查看全部评分

回复

使用道具 举报

Zbx1425 作者认证 2022-12-19 13:01:53
XHG78999 发表于 2022-12-19 12:54; P! O5 @+ i# f0 _# l: i7 X
肯定是溢出了,估计是算曲线算出上限了5 g& q  u# G: m  Q* i1 S$ i
建议边算边取模(下意识

0 f, y( T! K$ Q( T这个不是溢出,是浮点数有效数字有限使得它不能准确表示大数字。1 ?# _/ M5 m4 d  v# K* Y0 ]7 _
举例来说,如在十进制中,只能使用四位有效数字的情况下,可以正常表示 1.4 和 1.5;但 1234.4 和 1234.5 就无法区分,只能退而求其次都成为 1234。
, J* B7 \$ I2 R( {# A! s这就使计算出的结果与应有的精确值产生误差,让它偏离位置。7 E! w8 x4 h, d6 N( N" L" {
回复

使用道具 举报

大宝剑呀 2022-12-19 13:34:34
竟然还有这种bug
*ููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููู็็็็็็็็็็็็新喷射字符                                  *←已绝版的喷射字符
欢迎使用大宝剑的实用工具模组     B站:大宝剑呀404
回复

使用道具 举报

HXD3 作者认证 2022-12-19 13:40:00
本帖最后由 mtrrtrain 于 2022-12-19 13:59 编辑 6 f$ s; J& t) Z* W; I
Zbx1425 发表于 2022-12-19 12:58
  ?/ b' r' O  x( k# i5 Z1 N! a3 xMTR 内部大部分计算现使用 32 位浮点数,所以会有精度误差。1 x$ D3 d2 S& o# S, g5 X
换成 64 位浮点数能让这些现象出现的位置更远 ...
) s, r* f% I' O% g+ f% r3 h
既然MTR换成64位浮点数这个bug就会得到修复,
- J7 |* o/ a/ B0 Q2 t* h0 W! H3 ^minecraft老版本的边境之地bug之所以被修复是不是因为把32位浮点数,换成了64位的?
2 \2 _" p: a# B, q& {$ x8 V
hokoubengclaft
回复

使用道具 举报

XHG78999 作者认证 2022-12-19 14:30:33
Zbx1425 发表于 2022-12-19 13:01
, X5 \! }) p# E8 Q) n( u" n% P5 n这个不是溢出,是浮点数有效数字有限使得它不能准确表示大数字。
) H2 S& W$ I% |4 |+ f举例来说,如在十进制中,只能使用四位有 ...

9 S5 d- Y  {& q(为什么我回忆的概念都是小数精度损失是溢出的一种呢: Y: `- W3 C6 C) q& k2 F8 I
可否像Farlands一样直接热替换呢
S1017上海南站幺幺道出发机调车进路好了准许发车转场 区间两k加五百限速六洞 司机明白
回复

使用道具 举报

XHG78999 作者认证 2022-12-19 14:31:26
mtrrtrain 发表于 2022-12-19 13:40. B* M  O% u' v1 K2 t7 }, E' F) h
既然MTR换成64位浮点数这个bug就会得到修复,
5 m5 O2 X7 X2 Qminecraft老版本的边境之地bug之所以被修复是不是因为把32位 ...
' v$ u8 v( Q/ M6 O- H# m
正确
% V1 @  D* X! U但是如果你用热替换把64位强制改成BigInteger然后突破边墙就可以复现边境之地
S1017上海南站幺幺道出发机调车进路好了准许发车转场 区间两k加五百限速六洞 司机明白
回复

使用道具 举报

yuxihe 2022-12-19 15:15:02
1919(警撅+ f; m. _$ x5 k3 N
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表