2016-11-18 107 views
0

我有一组可以理解为扬声器位置的点。我想写一个算法,它在二维空间中给定一个虚拟位置时总是选择三个扬声器,并为它们分配振幅,以便当虚拟位置与扬声器位置重合时,只有该扬声器的振幅> 0,否则围绕该点的树型扬声器具有重量平衡的振幅。三个扬声器使用Delaunay三角测量进行选择。三角剖分:选择三角形弯角的重量,使其在穿越边界时保持不变

现在,当我停留在一个三角形内时,这一切都可以正常工作,但当我跨越边界到下一个三角形时,定义边界的两个扬声器会突然改变其幅度。我想这首先由点投射到三角形的高度:

enter image description here

这里的虚拟点为品红色圆圈,扬声器是黑色小方块,并且幅度由蓝色圆圈显现。当红色圆圈稍微移动到下一个三角形,振幅(蓝色圆圈)改变大小:

enter image description here

尝试用相同的位数投影于事无补。一个三角形:

enter image description here

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

enter image description here

幅度总是基于投射到对角线叶点的相对位置一个角落。

任何想法如何解决这个问题?我想我需要确保在边界处,扬声器的重量只能依赖于形成边界的两个扬声器。也许有一个更聪明的乘法?

回答

0

其实,我的第一种方法是用海拔高度预测值为,正确的是。我在幅度的定标有一个bug:

enter image description here enter image description here

一种替代,但稍微复杂的变体,是通过虚拟点来绘制从每个角一个线,并计算到的相对位置交叉口相对侧:

enter image description here enter image description here

动画:

enter image description here