2つの端点start = (x, y, z, ...), end = (x, y, z, ...)
によって与えられた線がn次元キューブまたは矩形と交差するかどうかを調べようとしています。これは反対の端点bottom_most = (x, y, z, ...), top_most= (x, y, z, ...)
として保存しています。Lineがn次元キューブを認識するか確認する
solutions in 3Dが見つかりましたが、n個のディメンションで一般化されているものは見つかりませんでした。
dimensions = 3
def check_intersects(start, end, cube):
num_intersections = 0
for dim in range(dimensions):
if cube[dim] <= start[dim] <= cube[self.dimensions + dim] or start[dim] <= cube[dim] <= end[dim]:
num_intersections += 1
if num_intersections >= dimensions:
return True
return False
start, end = (0, 0, 0), (30, 30, 30)
cube = (10, 10, 10, 20, 20, 20)
print(check_intersects(start, end, cube))
start, end = (0, 0, 0), (0, 10, 20)
print(check_intersects(start, end, cube))
が、これはラインが特定の角度から来るいくつかのケースで打破するために表示されます。
私の現在のソリューションです。
私のためにこれを行うには、より良いソリューションやライブラリがありますか?
私の問題は、線の方向に由来しているようです。行の中には、右から左、上から下に向かって「後ろ向きに」移動できるものがあるため、軸比較の一部が機能しません。 – Teknophilia
開始と終了の対応する最小値/最大値を使用してこれを解決しました。 – Teknophilia