计算三角形晶体

时间:2013-01-11 17:13:45

标签: java math geometry

规则三角形2D晶体可以被认为是由微观规则三角形单元堆叠而成,如下所示:

enter image description here

在Java中计算这种4x4晶体的三角形总数的正确方法是什么?

var a; (even) 
var b; (odd)

3 个答案:

答案 0 :(得分:3)

这是一种系统地找到问题解决方案的方法:

您可以获得晶体两侧的三角形数量,例如n。现在,让晶体放在一边,就像你向我们展示的图像一样,并在每行三角形上附加一个数字,第一行的数字为1,依此类推。

现在查看行2,例如。它有2个向上指向的三角形和一个向下指向的三角形。

你能概括一下吗?行n中有多少个向上指向的三角形?有多少向下的指针?

如果你有这个问题的答案,你可以在代码中对各行的数字求和 - 或者为总和得出一个很好的封闭公式。


好的 - 我无法抗拒。下面的图片给出了一个很好的思考问题的方法,它实际上解决了这个问题。你看着它,并意识到你的问题实际上减少到计算正方形(这当然很容易)。它在精神上与@femtoRgon建议的解决方案类似,但您甚至不需要考虑区域!

enter image description here

答案 1 :(得分:2)

对于小三角形,只有它的n + 2((n-1)+(n-2)+ ... + 1),你可以通过观察面向一条路并面向相反方向的三角形图案得到它。

以另一种方式看待它,你可以看到它的count(n)=(2n-1)+ count(n-1),n> 1,count(n)1,n = 1,因为每个大三角形只是增加另一层三角形沿着一侧交错。

如果你需要1x1x1三角形和2x2x2三角形直到nxnxn三角形,那么它就更复杂但非常简单。

答案 2 :(得分:2)

我相信在X×X三角形中所表示的三角形数量的正确计算是:

X*X

我的推理:这样的三角形是相应X乘X平方的面积的1/2,每个单位三角形是单位平方面积的1/2。我们可以使用S = X*X确定较大正方形中的单位正方形的数量(S表示正方形的面积),因此我们可以计算数字f三角形:T = S/2 = (X*X)/2(T表示三角形的面积) ),因为我们的单位三角形中有两个面积与1个单位正方形相同,所以面积的两倍是三角形的数量,或num_triangles = (X*X)/2 * 2 = X*X