开启左侧

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

[复制链接]
-DKZ4- 作者认证 2022-12-19 12:43:09
本帖最后由 -DKZ4- 于 2022-12-19 12:46 编辑
9 o/ K5 ]1 W( Y* Z. X7 d& ^
* e3 w5 @7 H3 m这个bug类似于旧版本边境之地的方块抖动,具体表现在:
+ f! [* ?' i4 {9 O2 M( h5 ^( c# \1 V# V" T0 t6 D) m
当坐标大于100000格时,MTR列车、轨道会在移动视角时产生轻微抖动。0 i( q' S; Z! a* g. x2 i3 v
当坐标更大时,轨道甚至会出现扭曲的情况。
3 R/ q( |) I% r6 h7 z  x4 D& K作为对照,原版的生物不会受到任何影响。
' U7 C7 d$ R5 _8 M8 `! \5 E1 A版本1.18.2 Fabric,在服务器和单人存档均测试过,都会有bug$ F- i/ X& m& o) x. M" b

7 V  i# s: @* {. c2 J* W
+ n) r$ M& M& X9 @/ D1 i  G/ n

本帖子中包含更多资源

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

×
回复

使用道具 举报

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

使用道具 举报

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

评分

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

查看全部评分

回复

使用道具 举报

Zbx1425 作者认证 2022-12-19 13:01:53
XHG78999 发表于 2022-12-19 12:54# A3 ]' y# T- N; }0 R! M4 c4 {
肯定是溢出了,估计是算曲线算出上限了
- \6 D8 Y/ p' W: M建议边算边取模(下意识

; W! M  w8 ]1 v- ?" U! u9 A这个不是溢出,是浮点数有效数字有限使得它不能准确表示大数字。7 W' m+ q* h& [: d8 J6 U% U2 a
举例来说,如在十进制中,只能使用四位有效数字的情况下,可以正常表示 1.4 和 1.5;但 1234.4 和 1234.5 就无法区分,只能退而求其次都成为 1234。: J% @0 k; ~9 l/ @  x0 e
这就使计算出的结果与应有的精确值产生误差,让它偏离位置。1 c( h9 ~& n( C9 x! C
回复

使用道具 举报

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

使用道具 举报

HXD3 作者认证 2022-12-19 13:40:00
本帖最后由 mtrrtrain 于 2022-12-19 13:59 编辑
. Q3 h1 d  e" E* n, L$ N
Zbx1425 发表于 2022-12-19 12:58
6 P; P3 t2 S% Q& U$ D* a5 rMTR 内部大部分计算现使用 32 位浮点数,所以会有精度误差。
6 u, \  ~- T/ H$ U5 o1 ~换成 64 位浮点数能让这些现象出现的位置更远 ...

3 C0 t. |( \, V  P既然MTR换成64位浮点数这个bug就会得到修复,: z' R2 P8 y/ R4 t$ [
minecraft老版本的边境之地bug之所以被修复是不是因为把32位浮点数,换成了64位的?3 S) O' I# U. L# H
hokoubengclaft
回复

使用道具 举报

XHG78999 作者认证 2022-12-19 14:30:33
Zbx1425 发表于 2022-12-19 13:017 ~" c( s/ [1 P& x8 B0 k7 Z
这个不是溢出,是浮点数有效数字有限使得它不能准确表示大数字。3 T$ }8 |) Q7 x9 w
举例来说,如在十进制中,只能使用四位有 ...

# d5 H2 j* L2 r$ j(为什么我回忆的概念都是小数精度损失是溢出的一种呢
" `9 z( ~" [- D" m可否像Farlands一样直接热替换呢
S1017上海南站幺幺道出发机调车进路好了准许发车转场 区间两k加五百限速六洞 司机明白
回复

使用道具 举报

XHG78999 作者认证 2022-12-19 14:31:26
mtrrtrain 发表于 2022-12-19 13:40: z; T/ e, n9 P* ~$ m8 D/ q
既然MTR换成64位浮点数这个bug就会得到修复,
/ X$ K2 C8 L/ f; K6 `) ?minecraft老版本的边境之地bug之所以被修复是不是因为把32位 ...

: |7 A& ^* t% Z. |/ A2 o: `正确
3 p+ g+ S8 @9 i& {但是如果你用热替换把64位强制改成BigInteger然后突破边墙就可以复现边境之地
S1017上海南站幺幺道出发机调车进路好了准许发车转场 区间两k加五百限速六洞 司机明白
回复

使用道具 举报

yuxihe 2022-12-19 15:15:02
1919(警撅, A& e9 z% `9 n  V2 H
回复

使用道具 举报

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

本版积分规则

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