How to have a plot3 vector and sphere on same figure?
14 ビュー (過去 30 日間)
古いコメントを表示
Hello all, I'm currently trying to write a program where I'm drawing a line within a sphere, and it changes size based on the dataset. The line will always start at the origin, but I want the line to dynamically change based on the endpoint given, which will be given by a dataset. The problem I'm running into is that I can't get this line to be on the same figure as the sphere, even with hold on. when it did work previously, it just traced a path and left it there, which obscured the motion of the vector throughout the space. I've posted the code below, and any help would be appreciated.
figure(1) %creating animation window
sphere % creating sphere for visualization
alpha('clear') % making sphere clear for visualization
hold on; % make it so that all animations are drawn on same figure
for k=1:1200 %looping through data set
v = z(k); % z coordinate
vec1 = [0,0,0];
vec2 = [0,0,v];
vec = [vec2;vec1];
figure(1);
h = plot3(vec(:,1),vec(:,2),vec(:,3), 'LineWidth', 2, 'Color', 'r');%updating the line animation data set
clf(h, 'reset');
refreshdata;
drawnow;
end
0 件のコメント
採用された回答
Ryan Takatsuka
2018 年 7 月 24 日
Try something like this:
figure(1) %creating animation window
sphere % creating sphere for visualization
alpha('clear') % making sphere clear for visualization
hold on; % make it so that all animations are drawn on same figure
t = linspace(0,1,1200);
z = cos(4*pi*t);
for k=1:1200 %looping through data set
% Get each of the plotted components
children = get(gca, 'children');
% If there is only one, this is the first iteration, so do nothing. Otherwise, remove the line
if length(children)>1
delete(children(1));
end
v = z(k); % z coordinate
vec1 = [0,0,0];
vec2 = [0,0,v];
vec = [vec2;vec1];
figure(1);
h = plot3(vec(:,1),vec(:,2),vec(:,3), 'LineWidth', 2, 'Color', 'r');%updating the line animation data set
% This needs to be here
pause(.001)
end
2 件のコメント
Ryan Takatsuka
2018 年 7 月 25 日
Oh I just randomly set that function to describe the z variable because you didn't include values for z in your initial code posted here.
その他の回答 (1 件)
Maxwell DeVoe
2018 年 7 月 25 日
2 件のコメント
Ryan Takatsuka
2018 年 7 月 25 日
No, but it should work with any vector of z values (You might have to change the indexing of the for-loop to loop over z depending on the length of the vector).
参考
カテゴリ
Help Center および File Exchange で Animation についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!