我有两个区域,都在bounds.size中给出。现在,z轴对我来说无关紧要,因为我在2D工作。我想添加这些向量,所以我有一个向量,代表连接区域。简单地添加这些向量是正常的方法不起作用。区域最终看起来的方式并不重要,重要的是大小相同,两个区域相结合。
编辑:我有两个polygoncolliders的bounds.size,我想得到一个代表两个polygoncolliders组合的bounds.size的值
区域1和区域2合并
答案 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 = 50
和second_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_area
和Y = 1
(反之亦然)的情况下制作一个向量,而不必计算平方根。
请注意,你已经过度设计了它。对象的区域是一维的值(数字);然而,你用一个二维值(数字对)表示它来表示它们 既然你不关心特定的X / Y值,只关心它们的产品是什么,我建议你尽可能避免使用矢量,这样就不会让它变得不必要地复杂化。