how to scale the shape which defined by parametric function
3 views (last 30 days)
Show older comments
%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 Comments
Accepted Answer
Sonesson
on 31 Dec 2023
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);
More Answers (0)
See Also
Categories
Find more on Line Plots in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!