我有两个盒子,两者的大小和形状完全相同。方框A的原点位于形状的正中心,而方框B的原点位于形状内的任意位置。我们还有每个框的最小和最大点(相对于原点),以便我们能够确定原点在框内的位置。目标是使用方框A的原点位置来偏移方框B的原点位置,以便两个方框的所有面对齐。
我确定这是一个简单的数学问题,但我无法弄明白如何使用方框B的最小和最大点来抵消方框B的原点,以便方框对齐。
boxA = BoxShape()
boxA.min = [-5, -7, -3]
boxA.max = [ 5, 7, 3]
boxA.origin = [10, 78, 43]
boxB = BoxShape()
boxB.min = [-4, -4, -4]
boxB.max = [ 6, 10, 2]
boxB.origin = boxA.origin + some_offset
答案 0 :(得分:0)
function get_offset(min, max, half)
min = math.abs(min)
max = math.abs(max)
half = math.abs(half)
if max > half then
return half - max
else
return min - half
end
end
function process(entity)
min = entity.scale * entity.min
max = entity.scale * entity.max
size = entity.shape:getSize()
position = entity.rigidBody:getPosition()
x = get_offset(min.x, max.x, size.x / 2)
y = get_offset(min.y, max.y, size.y / 2)
z = get_offset(min.z, max.z, size.z / 2)
entity.position.x = position.x + x
entity.position.y = position.y + y
entity.position.z = position.z + z
end