Unity / C#添加两个向量表示的区域

时间:2017-12-06 14:11:43

标签: c# unity3d vectorization add area

我有两个区域,都在bounds.size中给出。现在,z轴对我来说无关紧要,因为我在2D工作。我想添加这些向量,所以我有一个向量,代表连接区域。简单地添加这些向量是正常的方法不起作用。区域最终看起来的方式并不重要,重要的是大小相同,两个区域相结合。

编辑:我有两个polygoncolliders的bounds.size,我想得到一个代表两个polygoncolliders组合的bounds.size的值

enter image description here

区域1和区域2合并

1 个答案:

答案 0 :(得分:2)

  

该区域最终看起来的方式并不重要,其重要性在于两个区域的组合大小相同。

由于有其他无限的可能性,我将把自己限制在x = y的结果中,原因很简单,你不会得到像(0.5,80000)这样的愚蠢向量,而是更平衡(200,200)

当你以代数方式看待它时,这并不是那么难:

float result_area = first_area + second_area;

计算面积很简单:

float area = myVector.X * myVector.Y;

因此,渲染区域的总和也很容易:

float result_area = myFirstVector.X * myFirstVector.Y + mySecondVector.X * mySecondVector.Y;

为了举例,让我们说first_area = 50second_area = 350,从而产生result_area = 400;

由于我们仅限于x = y的结果,因此结果是该区域的平方根

float theSquareRoot = Math.Sqrt(result_area);
myResultVector.X = theSquareRoot;
myResultVector.Y = theSquareRoot;

正如我所说,还有许多其他可能的结果向量。对于其他情况,您要么必须定义给定的比率(例如,1 : 4的比率会为您提供相同示例的(10,40)),但计算有点难以提及你还是不关心确切的形状。

你也可以在X = result_areaY = 1(反之亦然)的情况下制作一个向量,而不必计算平方根。

请注意,你已经过度设计了它。对象的区域是一维的值(数字);然而,你用一个二维值(数字对)表示它来表示它们 既然你不关心特定的X / Y值,只关心它们的产品是什么,我建议你尽可能避免使用矢量,这样就不会让它变得不必要地复杂化。