4Dベクトルをbounded longに変換する方法を理解しようとしています。しかし、ベクトルとそれに伴う結果には一定の制限があります。ベクタ自体は4つの整数で構成されています。最初の整数は、Javaの機能内のものであれば何でもかまいません(Integer.MIN_VALUEからInteger.MAX_VALUEまで)。 2番目と4番目の整数は常に-2999984〜2999984(両端を含む)です。最後に、3番目の値は常に0から255の間です(ここでもまた両端を含む)。だから、それは以下のフォーマットに準拠します。4D VectorをLongに変換する
([Integer min - Integer max], [-2999984 - 2999984], [0 - 255], [-2999984 - 2999984])
ベクトルが長い間-824629322721380016と824629339968358064.
に変換する必要があることを私は1対1のマッチングになり何も機能はおそらく存在しないことを承知していますしかし、私は可能な限り衝突を起こさない関数を見つけようとしています。
あなたが疑問に思っている場合、ベクトルとlongの境界は恣意的ではありません。私がMinecraftの投稿にタグを付けると、なぜその理由が説明されるべきですか。私はある次元の特定のblockposと別の次元のblockposを一致させようとしています。 4Dベクトルは[dimension id、x pos、y pos、z pos]であり、結果のlongはBlockPosの直列化形式(BlockPos#fromLong)です。あなたはthisフォーラムの投稿が私の質問を引き起こしたのを見ることができます。私はここで質問しています。なぜなら、私のクエストオンは必然的にMC特有であり、それは主に数学的でコードベースであるからです。
この関数は簡単に元に戻す必要がありますか?それとも片方向にすることができますか? –
いいえ、この機能は元に戻す必要はありません。上記の制限でベクトルがlongに変換されるのと同じくらいです。 – TheMasterGabriel