三角剖分:select 三角形角的权重,以便它们在跨越边界时保持不变

Triangulation: select weights for triangle corners so that they remain constant when crossing a boundary

我有一组可以理解为扬声器位置的点。我想编写一个算法,在给定二维 space 中的虚拟位置的情况下始终选择三个扬声器,并为它们分配振幅,以便当虚拟位置与扬声器位置重合时,只有该扬声器的振幅 > 0 ,否则围绕该点的树扬声器具有重量平衡的振幅。这三个说话人是使用 Delaunay 三角剖分选择的。

现在,当我留在一个三角形内时一切正常,但是当我越过边界到达下一个三角形时,定义边界的两个扬声器突然改变了它们的振幅。我首先尝试将点投影到三角形的高度:

这里虚点是洋红色圆圈,喇叭是黑色小方块,振幅用蓝色圆圈表示。当洋红色圆圈稍微移动到下一个三角形时,振幅(蓝色圆圈)改变大小:

对中值投影进行同样的尝试并没有帮助。一个三角形:

移动到下一个三角形(振幅再次跳跃):

幅度总是基于投影到离开角的对角线上的点的相对位置。

有什么办法解决这个问题吗?我想我需要确保在边界处,扬声器的重量必须仅取决于形成边界的两个扬声器。也许再加上一个巧妙的乘法?

实际上,我的第一个高度预测方法是正确。我在调整振幅时遇到了一个错误:

另一种但稍微复杂一些的变体是从每个角通过虚拟点画一条线,并计算与对面交点的相对位置:

动画: