如何在mathematica中绘制长度为n的三角形网格

时间:2011-01-24 22:24:53

标签: wolfram-mathematica

我想知道是否有人可以帮助在mathematica中绘制边长n的三角形网格(等边)。感谢。

3 个答案:

答案 0 :(得分:4)

这样的东西?

http://yaroslavvb.com/upload/save/triangular-grid.png

这是我使用的代码。也许对于上面的特定任务来说太复杂了,它是代码的一部分我必须可视化整数格,如this

A = Sqrt[2/3] {Cos[#], Sin[#], Sqrt[1/2]} & /@ 
    Table[Pi/2 + 2 Pi/3 + 2 k Pi/3, {k, 0, 2}] // Transpose;
p2r[{x_, y_, z_}] := Most[A.{x, y, z}];
n = 10;
types = 1/n Permutations /@ IntegerPartitions[n, {3}, Range[1, n]] // 
   Flatten[#, 1] &;
points = p2r /@ types;
Needs["ComputationalGeometry`"]
Graphics[{EdgeForm[Black], FaceForm[Transparent], 
  GraphicsComplex[points, 
   Polygon /@ DelaunayTriangulation[points // N][[All, 2]]]}]

这是做什么

  1. types包含加起来为n的所有3个整数元组。那些整数位于R ^ 3
  2. 的二维子空间
  3. A是将这些3元组旋转到x-y平面的线性变换
  4. Delauney三角剖分找到连接附近点的所有三角形

答案 1 :(得分:4)

简单网格:

p = Table[ Table[

    Polygon[{j - 1/2 i, i Sqrt[3]/2} + # & /@ {{0, 0}, {1/2,Sqrt[3]/2}, {1, 0}}],

    {j, i, 9}], {i, 0, 9}];

Graphics[{EdgeForm[Black], FaceForm[White], p}]  

Triangular Grid

修改

一个更清晰的版本,我想:

s3 = Sqrt[3];
templateTriangleVertex = {{0, 0}, {1, s3}, {2, 0}};

p = Table[Table[

    Polygon[{2 j - i, s3 i } + # & /@ templateTriangleVertex],

    {j, i, 9}], {i, 0, 9}];

Graphics[{EdgeForm[Black], FaceForm[White], p}]

答案 2 :(得分:1)

以下是belisarius方法的变体。

p = Table[{2 j - i, Sqrt[3] i}, {i, 0, 9}, {j, i, 9}]

Graphics[ Line @ Join[p, Riffle @@@ Partition[p, 2, 1]] ]