matlab 移动绘制好的三维图形形成连个相同图形

2025-02-24 14:28:26
推荐回答(2个)
回答1:

clc;clear all; close all;const=0;

p1 = [0, -1.2, -0.3];

p2 = [0, 0.7, 1.0];

vec = 2*(p2 - p1);
pos=[zeros(1,3);vec/4];

for step = 1 : 2
hold on
x = -5 : 0.05 : 5;

y = -5 : 0.05 : 5;

z = -5 : 0.05 : 5;

[x, y, z] = meshgrid(x, y, z);

f=((x-pos(step,1)).^2 + (9/4)*(y-pos(step,2)).^2 + (z-pos(step,3)).^2 - 1).^3 - (x-pos(step,1)).^2.*(z-pos(step,2)).^3 - (9/80)*(y-pos(step,2)).^2.*(z-pos(step,3)).^3 - const;

p(step)=patch(isosurface(x,y,z,f,0));

set(p(step), 'FaceColor', 'red', 'EdgeColor', 'none');

daspect([1 1 1])

view(3)

camlight;

lighting phong

axis equal;box on;

xlabel('x'); ylabel('y'); zlabel('z');hold on;

axis off;

set(gcf, 'color','b', 'units', 'normalized', 'position', [0.1 0.1 0.35 0.3])
end

h = quiver3(p1(1), p1(2), p1(3), vec(1), vec(2), vec(3), 0.6, 'r-', 'filled');

set(h, 'LineWidth', 3);

xd = get(h, 'XData');

yd = get(h, 'YData');

zd = get(h, 'ZData');

vec = vec/norm(vec);

set(h, 'XData', xd-vec(1)*3, 'YData', yd-vec(2)*3, 'ZData', zd-vec(3)*3);

ve{1} = get(p(1), 'vertices');
ve{2} = get(p(2), 'vertices');
text(p1(1), p1(2), p1(3)-1, 'My heart for you', 'FontSize', 20, 'Color', 'r');

for i = 1 : 122

set(h, 'XData', xd+vec(1)*(i-300)*0.01, 'YData', yd+vec(2)*(i-300)*0.01, 'ZData', zd+vec(3)*(i-300)*0.01);

if rem(i, 3) == 1

set(p(1), 'vertices', ve{1}*1.1);
set(p(2), 'vertices', ve{2}*1.1);

title('Love To You!', 'FontSize', 15, 'Color', 'm')

else
set(p(1), 'vertices', ve{1});
set(p(2), 'vertices', ve{2});

title(' Love To You!', 'FontSize', 15, 'Color', 'b')

end

pause(0.01);

end

for i = 240 : 300

set(h, 'XData', xd+vec(1)*(i-300)*0.01, 'YData', yd+vec(2)*(i-300)*0.01, 'ZData', zd+vec(3)*(i-300)*0.01);

if rem(i, 3) == 1

set(p(1), 'vertices', ve{1}*1.1);
set(p(2), 'vertices', ve{2}*1.1);

title('Love To You!', 'FontSize', 15, 'Color', 'm')

else
set(p(1), 'vertices', ve{1});
set(p(2), 'vertices', ve{2});
title('Love To You!', 'FontSize', 15, 'Color', 'b')

end

pause(0.01);

end

title('Love To You!', 'FontSize', 15, 'Color', 'm')

箭的效果可以自己调整下,这个创意送给女朋友不错,大赞!!

回答2:

学什么不好非学电脑,这么麻烦。