
how to scale the shape which defined by parametric function
    6 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 Language Fundamentals 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!
