Используйте многогранник в качестве графического примитива, размещая его в точке и масштабируя - PullRequest
7 голосов
/ 05 декабря 2011

Могу ли я задать простой вопрос для новичка, на который я не могу найти легкий для понимания ответ ни в одном из моих текстов (которые, по общему признанию, довольно старые, в некоторых случаях предшествующие версии 6)? Как вы используете многогранники, как если бы они были графическими примитивами, такими как Sphere и Cuboid? Т.е. центрируется в точке и масштабируется. Вот глупые примеры, чтобы проиллюстрировать это:

(* spheres along a path *)
data = Table[{Cos[t], Sin[t], Sin[t] Cos[2 t]}, {t, 0, 2 Pi, Pi/24}];
Graphics3D[Sphere[#, 0.3] & /@ data]

loop of spheres

(* cubes along a path *)
Graphics3D[Cuboid[#, # + 0.1] & /@ data]

loop of cubes

Итак, как разместить икосаэдры в определенных точках и масштабе, написав что-то вроде

Graphics3D[icosahedron[#, 0.1] & /@ data]

Редактировать: Я думаю, что моя проблема в том, как заставить GraphicsComplex и Graphics3D работать вместе. Например, где у меня сейчас есть:

shapes[ct_, siz_] := {Sphere[ct - .2, siz ], Sphere[ct - 0.1, siz]};
Graphics3D[{{shapes[#, size] & /@ data}}]

Я бы хотел заменить это Sphere[] на icosahedron[]. В настоящее время пытаюсь заставить работать решение Хайке ...

Редактировать 2: Хорошо работает, спасибо, Хайке. Не уверен, что я получу его 3D-печать, хотя - выглядит немного неудобно носить ...

the platonic bracelet

1 Ответ

13 голосов
/ 05 декабря 2011

Вы можете сделать что-то вроде этого:

icosahedron = PolyhedronData["Icosahedron"][[1]];
Graphics3D[Translate[Scale[icosahedron, .1], #] & /@ data]

icosahedra

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...