Я хочу нарисовать тетраэдр в MATLAB. Как я могу это сделать?
Рисование тетраэдра в MATLAB R2011a
comment
Вы хотя бы знаете координаты его вершин?
- person mathematician1975   schedule 06.07.2012
comment
Я погуглил и нашел на mathworks.com, что в MATLAB R2012a существует метод для этого. но в MATLAB R2011a такого метода нет.
- person user559096   schedule 06.07.2012
comment
вы можете это сделать - вам просто нужно немного поработать. У вас есть координаты вершин?
- person mathematician1975   schedule 06.07.2012
comment
да с такими координатами как мне его нарисовать?
- person user559096   schedule 06.07.2012
comment
@ user559096 попробуйте мой ответ и посмотрите, работает ли он
- person mathematician1975   schedule 06.07.2012
comment
@user559096 user559096 У вас сработало???
- person mathematician1975   schedule 09.07.2012
Ответы (2)
Попробуй это
X = [x1 x2 x3 x4]';
Y = [y1 y2 y3 y4]';
Z = [z1 z2 z3 z4]';
T = [1 2 3; 1 2 4; 2 3 4; 1 3 4];
trimesh(T,X,Y,Z);
и посмотрите, работает ли он. Значения x1 y1 и z1 являются соответствующими координатами x y x вершины 1 (аналогично для других вершин). У меня сейчас нет доступа к MATLAB, поэтому я изменил это из своего кода генератора восьмиугольника. Возможно, вам придется поиграть с порядком вершин, чтобы заставить его работать, но этот подход позволит вам построить свой тетраэдр.
Редактировать: другой вариант — trisurf
вместо trimesh
, чтобы получить поверхность, а не каркас.
person
mathematician1975
schedule
06.07.2012
% Draws tetrahedron inscribed in sphere of radius 1
function draw_regular_tetrahedron(T)
T = 1/hypot(1, sqrt(2)/2)*T; % scale to fit in unit sphere
z = 1/sqrt(2);
S.Vertices = (T*[1,0,-z;-1,0,-z;0,1,z;0,-1,z]')';
S.Faces = [1,3,4;2,3,4;1,2,3;1,2,4];
S.FaceVertexCData = [ 1 ];
S.FaceColor = 'flat';
S.EdgeColor = 'green';
p = patch(S);
alpha(p, 0.5);
end
>> ps_5_2.draw_regular_tetrahedron(eye(3))
>> ps_5_2.draw_regular_tetrahedron(eye(3)*5)
person
Yola
schedule
25.06.2017