Мне интересно, может ли кто-нибудь помочь нарисовать треугольную сетку (равностороннюю) с длиной ребра n в математике. Спасибо.
как нарисовать треугольную сетку длины n в математике
Ответы (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
большое спасибо. Это намного проще. Но заметили ли вы, что визуально эта сетка не такая равносторонняя, как нарисовал Ярослав. Знаете почему и как это исправить?
- person Qiang Li; 25.01.2011
@Qiang просто удалите AspectRatio-›1 (так как это просто проблема с отображением). я обновил свой ответ
- person Dr. belisarius; 25.01.2011
отличный! ваш такой простой и поэтому выбран в качестве ответа на мой вопрос! Благодарность!
- 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]]]}]
Что это делает
- types содержит все 3 кортежа целых чисел, которые в сумме дают n. Эти целые числа лежат в двумерном подпространстве R^3.
- A - это линейное преобразование для поворота этих трех кортежей в плоскость xy.
- Триангуляция Делоне находит все треугольники, соединяющие близлежащие точки.
person
Yaroslav Bulatov
schedule
25.01.2011
выглядит отлично. Не могли бы вы немного объяснить идею?
- 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
@belisarius, кстати, вы предпочитаете форму двойной таблицы для ясности?
- person Mr.Wizard; 16.02.2011
Начинать свое сообщение с @user полезно только в том случае, если пользователь участвовал в ветке комментариев для ответа или если он написал ответ, который вы комментируете. Если он этого не сделал, он не получит оповещение о вашем сообщении и, вероятно, вообще не прочитает его. Я попал сюда, просто просматривая прошлые ответы. Отвечая на ваш вопрос, иногда, когда это подходит мне, я решил написать код так, как я думаю, будет легче понять для OP (оригинальный постер), что не всегда так, как я' д напишу для себя. Вероятно, наиболее заметным исключением является попытка решить проблемы с производительностью.
- person Dr. belisarius; 16.02.2011
Более того, если вы прочитаете последний комментарий Цяна в моем ответе, вы увидите, что во многих случаях простота является реальной ценностью для ОП. Если я напишу вопрос, я буду больше ценить простой и понятный ответ, чем тот, который займет у меня несколько часов, чтобы понять ... если я что-то не исследую, и ответ дает мне пищу для размышлений.
- person Dr. belisarius; 16.02.2011
Постараюсь последовать вашему совету.
- person Mr.Wizard; 16.02.2011