как нарисовать треугольную сетку длины n в математике

Мне интересно, может ли кто-нибудь помочь нарисовать треугольную сетку (равностороннюю) с длиной ребра n в математике. Спасибо.


person Qiang Li    schedule 24.01.2011    source источник


Ответы (3)


Простая сетка:

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}]  

Треугольная сетка

Изменить

Думаю, более понятная версия:

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}]
person Dr. belisarius    schedule 25.01.2011
comment
большое спасибо. Это намного проще. Но заметили ли вы, что визуально эта сетка не такая равносторонняя, как нарисовал Ярослав. Знаете почему и как это исправить? - person Qiang Li; 25.01.2011
comment
@Qiang просто удалите AspectRatio-›1 (так как это просто проблема с отображением). я обновил свой ответ - person Dr. belisarius; 25.01.2011
comment
отличный! ваш такой простой и поэтому выбран в качестве ответа на мой вопрос! Благодарность! - person Qiang Li; 25.01.2011

Что-то вроде этого?


(источник: yaroslavvb .com)

Это код, который я использовал. Возможно, это слишком сложно для конкретной задачи, описанной выше, это часть кода, который мне пришлось визуализировать целочисленными решетками, такими как 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 содержит все 3 кортежа целых чисел, которые в сумме дают n. Эти целые числа лежат в двумерном подпространстве R^3.
  2. A - это линейное преобразование для поворота этих трех кортежей в плоскость xy.
  3. Триангуляция Делоне находит все треугольники, соединяющие близлежащие точки.
person Yaroslav Bulatov    schedule 25.01.2011
comment
выглядит отлично. Не могли бы вы немного объяснить идею? - person Qiang Li; 25.01.2011

Вот вариант метода Велизария.

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

Graphics[ Line @ Join[p, Riffle @@@ Partition[p, 2, 1]] ]
person Mr.Wizard    schedule 16.02.2011
comment
@belisarius, кстати, вы предпочитаете форму двойной таблицы для ясности? - person Mr.Wizard; 16.02.2011
comment
Начинать свое сообщение с @user полезно только в том случае, если пользователь участвовал в ветке комментариев для ответа или если он написал ответ, который вы комментируете. Если он этого не сделал, он не получит оповещение о вашем сообщении и, вероятно, вообще не прочитает его. Я попал сюда, просто просматривая прошлые ответы. Отвечая на ваш вопрос, иногда, когда это подходит мне, я решил написать код так, как я думаю, будет легче понять для OP (оригинальный постер), что не всегда так, как я' д напишу для себя. Вероятно, наиболее заметным исключением является попытка решить проблемы с производительностью. - person Dr. belisarius; 16.02.2011
comment
Более того, если вы прочитаете последний комментарий Цяна в моем ответе, вы увидите, что во многих случаях простота является реальной ценностью для ОП. Если я напишу вопрос, я буду больше ценить простой и понятный ответ, чем тот, который займет у меня несколько часов, чтобы понять ... если я что-то не исследую, и ответ дает мне пищу для размышлений. - person Dr. belisarius; 16.02.2011
comment
Постараюсь последовать вашему совету. - person Mr.Wizard; 16.02.2011