开启左侧

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

[复制链接]
-DKZ4- 作者认证 2022-12-19 12:43:09
本帖最后由 -DKZ4- 于 2022-12-19 12:46 编辑 ' X7 D6 ]0 c8 b. `, _, M( n

/ U3 W+ K) X+ k# o这个bug类似于旧版本边境之地的方块抖动,具体表现在:8 v% x9 m. K0 n8 z) p" J

& t* V6 K$ x- L当坐标大于100000格时,MTR列车、轨道会在移动视角时产生轻微抖动。
+ m6 j& ~# L( Z, E2 M, E当坐标更大时,轨道甚至会出现扭曲的情况。' S- x8 v7 B- J
作为对照,原版的生物不会受到任何影响。
# I4 t* n! d# \' ~3 v) p. i, s3 b4 J版本1.18.2 Fabric,在服务器和单人存档均测试过,都会有bug
& L# D- _9 g6 t/ H& S. ?$ ^. F3 z/ S! L3 J0 o) B( U$ C; r

0 T7 U6 E) t' ]7 s3 K( F0 d4 y

本帖子中包含更多资源

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

×
回复

使用道具 举报

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

使用道具 举报

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

评分

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

查看全部评分

回复

使用道具 举报

Zbx1425 作者认证 2022-12-19 13:01:53
XHG78999 发表于 2022-12-19 12:54- P6 r5 J- Q$ T$ I5 A2 p
肯定是溢出了,估计是算曲线算出上限了
6 p7 J* N! r8 P建议边算边取模(下意识

& Y. ]1 m# f% \) |5 m这个不是溢出,是浮点数有效数字有限使得它不能准确表示大数字。2 E; Q& C# Q- L( i$ n1 ^9 s
举例来说,如在十进制中,只能使用四位有效数字的情况下,可以正常表示 1.4 和 1.5;但 1234.4 和 1234.5 就无法区分,只能退而求其次都成为 1234。
  B- n) M' [6 f7 s这就使计算出的结果与应有的精确值产生误差,让它偏离位置。% @9 X% t! Y8 e! I
回复

使用道具 举报

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

使用道具 举报

HXD3 作者认证 2022-12-19 13:40:00
本帖最后由 mtrrtrain 于 2022-12-19 13:59 编辑 " p; n, W' \( ~
Zbx1425 发表于 2022-12-19 12:585 R; I- k. d  A; C8 r7 w2 z
MTR 内部大部分计算现使用 32 位浮点数,所以会有精度误差。! G2 ~9 W; T6 k7 L$ v# d
换成 64 位浮点数能让这些现象出现的位置更远 ...

# p) y  [/ t1 s4 F) e# [& n* U/ b$ F既然MTR换成64位浮点数这个bug就会得到修复,! _: |7 d% R7 p# g
minecraft老版本的边境之地bug之所以被修复是不是因为把32位浮点数,换成了64位的?* B+ n( A+ q* h& v9 C+ [$ J
hokoubengclaft
回复

使用道具 举报

XHG78999 作者认证 2022-12-19 14:30:33
Zbx1425 发表于 2022-12-19 13:01( v$ R) G& ]0 ]. A# Z! R3 q
这个不是溢出,是浮点数有效数字有限使得它不能准确表示大数字。
: S* m; Z- R# E举例来说,如在十进制中,只能使用四位有 ...
) V" P/ s, K+ d* d6 h$ l
(为什么我回忆的概念都是小数精度损失是溢出的一种呢
- X8 [! D% v# z* R* F" c* g可否像Farlands一样直接热替换呢
S1017上海南站幺幺道出发机调车进路好了准许发车转场 区间两k加五百限速六洞 司机明白
回复

使用道具 举报

XHG78999 作者认证 2022-12-19 14:31:26
mtrrtrain 发表于 2022-12-19 13:40
# ^' ]" }9 a2 x7 I3 w. c) ~既然MTR换成64位浮点数这个bug就会得到修复,
- {; E; J2 c% t1 F" x8 Ominecraft老版本的边境之地bug之所以被修复是不是因为把32位 ...
( Y( x! ?8 O5 x3 S* e& F
正确
6 {& S+ `5 m: @& m  \但是如果你用热替换把64位强制改成BigInteger然后突破边墙就可以复现边境之地
S1017上海南站幺幺道出发机调车进路好了准许发车转场 区间两k加五百限速六洞 司机明白
回复

使用道具 举报

yuxihe 2022-12-19 15:15:02
1919(警撅
8 v8 A/ d" D9 E
回复

使用道具 举报

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

本版积分规则

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