how to scale the shape which defined by parametric function

1 Ansicht (letzte 30 Tage)
JIayun
JIayun am 31 Dez. 2023
Kommentiert: JIayun am 31 Dez. 2023
%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

Akzeptierte Antwort

Sonesson
Sonesson am 31 Dez. 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);

Weitere Antworten (0)

Kategorien

Mehr zu Line Plots finden Sie in Help Center und File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by