2025/9/2大约 5 分钟
2025/8/3大约 8 分钟
如何快速判断任意线段与任意AABB是否相交?首先想到的方法是借助射线与AABB求交的算法,获得射线进入和离开的时机,在射线与AABB相交的前提下保证进入时机在线段终点之前。
下面是搜集到的三种算法即实现,并且通过添加轴的的维度完全可以应用于三维情况。
零、 数据结构
import random
import time
import numpy as np
import matplotlib.pyplot as plt
class Vec2D:
def __init__(self, x, y):
self.v = np.array([x, y])
def __sub__(self, other):
return Vec2D(self.v[0] - other.v[0], self.v[1] - other.v[1])
def __getitem__(self, index):
return self.v[index]
def __mul__(self, scalar):
return Vec2D(self.v[0] * scalar, self.v[1] * scalar)
def __add__(self, other):
return Vec2D(self.v[0] + other.v[0], self.v[1] + other.v[1])
def ToString(self):
return f'({self.v[0]},{self.v[1]})'
class Rect:
def __init__(self, min_x, min_y, max_x, max_y):
self.min = Vec2D(min_x, min_y)
self.max = Vec2D(max_x, max_y)
def ToString(self):
return f'{{ {self.min.ToString()},{self.max.ToString()} }}'
2025/3/25大约 7 分钟
2024/9/8小于 1 分钟
2024/9/8小于 1 分钟
