how to scale the shape which defined by parametric function
1 回表示 (過去 30 日間)
古いコメントを表示
%miniProject
%define a love
t = linspace(0, 2*pi, 1000); %parameter t from 0 to 2pi
x = 16 * sin(t).^3; %parameter function for love (searching from google)
y = 13 * cos(t) - 5 * cos(2*t) - 2 * cos(3*t) - cos(4*t);
figure
plot(x, y, 'r', 'LineWidth', 2);
axis equal;
axis([-200 200 -200 200]);
grid on;
pause(0.1)
% 调用 translateShape 函数进行平移
translatedLove = translateShape(x,y,5);
hold on;
plot(translatedLove, 'b', 'LineWidth', 2);
legend('originalshape', 'translatedLove');
hold off;
function translatedShape = translateShape(x, y, scale)
% t: parameter
% x, y: coordinates of the original shape
% scale: scaling factor
translatedShape = [x * scale, y * scale]
end
0 件のコメント
採用された回答
Sonesson
2023 年 12 月 31 日
Hello Jlayun,
The main issue you have here is that you are putting the x and y row vectors into the same row (making the vector 1x2000), and then plotting that row.
Replace the comma with a semicolon in the translateShape() function:
function translatedShape = translateShape(x, y, scale)
% t: parameter
% x, y: coordinates of the original shape
% scale: scaling factor
translatedShape = [x * scale; y * scale];
end
This will make the vector 2x1000 instead. Then update the plot to reflect this change:
plot(translatedLove(1,:),translatedLove(2,:), 'b', 'LineWidth', 2);
その他の回答 (0 件)
参考
カテゴリ
Help Center および File Exchange で Line Plots についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!