問題タブ [z-order-curve]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
z-order-curve - 範囲外の制限がある Z-Index
2 つの座標 x、y から平面上の点の Z-Index (Morton) を計算する必要があります。
従来、これはビット インターリーブによって解決されていました。
ただし、境界があり、ポイントの z-index がアクティブな領域の内側にある場合にのみモートン カウントを増やし、外側にある場合はカウントをスキップするようにします。
明確にするために、4x4 正方形の一般的な z オーダーは次のとおりです。
ただし、3x3 のアクティブ エリアがある場合、次のようにインデックスを計算する必要があります。
00-11 のクワッドがいっぱいであることがわかるように、02-13 は、20-31 と 22-33 の場合と同じように、アクティブ エリアの外にある 2 つのポイントのカウントをスキップしています。
重要: 反復せずにこれを行いたいです。
この問題の既知の解決策はありますか?
c++ - モートンコードの計算
私はインターリーブしようとしています(モートンコードを計算するため)2つの符号付きの長い数字 x
とy
(32ビット)を値で
ケース 1 :
結果は次のようになります:
ケース 2:
バイナリ表現は、
インターリーブの場合、次のコードを使用して、 の31 番目のx
ビットと の 31番目のビットをインターリーブできる 32 ビット表現のみを検討しています。y
上記のコードは、x
正とy
負がある場合に正常に動作しますが、ケース 2 が失敗している場合、助けてください。何が問題なのですか? 負の数は 64 ビットを使用しますが、正の数は 32 ビットを使用します。間違っている場合は修正してください。