开启左侧

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

[复制链接]
-DKZ4- 作者认证 2022-12-19 12:43:09
本帖最后由 -DKZ4- 于 2022-12-19 12:46 编辑 4 K" h! q6 Z, ^9 P: G+ y2 t9 k  D

* `5 l8 e+ f+ S! S这个bug类似于旧版本边境之地的方块抖动,具体表现在:- Z5 p$ T2 j1 q) `+ V
4 w0 s, k- E( J
当坐标大于100000格时,MTR列车、轨道会在移动视角时产生轻微抖动。
4 p% n( B7 ], h: \( s当坐标更大时,轨道甚至会出现扭曲的情况。
" ]; D7 k( j. r* H作为对照,原版的生物不会受到任何影响。
0 Z" b, o, F0 |. G版本1.18.2 Fabric,在服务器和单人存档均测试过,都会有bug& b; X6 X' z! x- p$ q# m0 u+ g* u

* E, C0 c- G! V* m2 h4 A9 g0 D, u6 O

本帖子中包含更多资源

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

×
回复

使用道具 举报

XHG78999 作者认证 2022-12-19 12:54:33
肯定是溢出了,估计是算曲线算出上限了  O  w; {! E, P
建议边算边取模(下意识
S1017上海南站幺幺道出发机调车进路好了准许发车转场 区间两k加五百限速六洞 司机明白
回复

使用道具 举报

Zbx1425 作者认证 2022-12-19 12:58:08
MTR 内部大部分计算现使用 32 位浮点数,所以会有精度误差。
# b( `9 T9 B- k) P4 C! {* w换成 64 位浮点数能让这些现象出现的位置更远些,但这就要进行很多的改动。考虑到不常有人有需求建造如此大规模的系统,或许不太值得做。

评分

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

查看全部评分

回复

使用道具 举报

Zbx1425 作者认证 2022-12-19 13:01:53
XHG78999 发表于 2022-12-19 12:54& g* z$ h  W5 f- w( W9 F/ B8 S
肯定是溢出了,估计是算曲线算出上限了
. _' x! D" ?' J7 d4 M) s- ^& z建议边算边取模(下意识
  w$ c5 `& j, w* {( p, L* T& }
这个不是溢出,是浮点数有效数字有限使得它不能准确表示大数字。& _, O6 ?8 I: {$ o2 T0 ^6 I2 k
举例来说,如在十进制中,只能使用四位有效数字的情况下,可以正常表示 1.4 和 1.5;但 1234.4 和 1234.5 就无法区分,只能退而求其次都成为 1234。! J$ M( e, }- ]# ?3 r! |
这就使计算出的结果与应有的精确值产生误差,让它偏离位置。2 f0 @: a) [; J; U6 @
回复

使用道具 举报

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

使用道具 举报

HXD3 作者认证 2022-12-19 13:40:00
本帖最后由 mtrrtrain 于 2022-12-19 13:59 编辑 5 c' L3 f6 ]; ^2 n$ A1 a5 x
Zbx1425 发表于 2022-12-19 12:58
. s/ T6 v1 E: ]/ ]9 Z' h* AMTR 内部大部分计算现使用 32 位浮点数,所以会有精度误差。
% R2 I) X& u+ X+ }/ [3 Y换成 64 位浮点数能让这些现象出现的位置更远 ...

+ O3 I/ B! {! ~既然MTR换成64位浮点数这个bug就会得到修复,2 z: X; i7 M# y* t  f
minecraft老版本的边境之地bug之所以被修复是不是因为把32位浮点数,换成了64位的?- F" B7 T& Y: A0 c% f4 J
hokoubengclaft
回复

使用道具 举报

XHG78999 作者认证 2022-12-19 14:30:33
Zbx1425 发表于 2022-12-19 13:01; [+ ?+ U/ S; \+ ~1 |
这个不是溢出,是浮点数有效数字有限使得它不能准确表示大数字。/ R: g+ z/ \& Z. w
举例来说,如在十进制中,只能使用四位有 ...

; x- W0 f$ Z! {# _7 c& ^( N1 a(为什么我回忆的概念都是小数精度损失是溢出的一种呢# ^$ S2 S1 y) ^) R* O
可否像Farlands一样直接热替换呢
S1017上海南站幺幺道出发机调车进路好了准许发车转场 区间两k加五百限速六洞 司机明白
回复

使用道具 举报

XHG78999 作者认证 2022-12-19 14:31:26
mtrrtrain 发表于 2022-12-19 13:403 r% z5 O1 ]! j6 J/ R
既然MTR换成64位浮点数这个bug就会得到修复,
7 A' d  g9 n) v5 Q' iminecraft老版本的边境之地bug之所以被修复是不是因为把32位 ...
; C- L2 B& Q0 E# X" l
正确, \# u# F! c$ g: j, O+ a+ }( A
但是如果你用热替换把64位强制改成BigInteger然后突破边墙就可以复现边境之地
S1017上海南站幺幺道出发机调车进路好了准许发车转场 区间两k加五百限速六洞 司机明白
回复

使用道具 举报

yuxihe 2022-12-19 15:15:02
1919(警撅5 V* H: Z3 a. X
回复

使用道具 举报

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

本版积分规则

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