How to draw a square with specific plot points

I'm trying to create two squares, one larger one, and the other within it.
I attempted to create one using matrices. I create one with x = [0 0 1 1] and y = [0 1 1 0]
I wanted a line to connect each one of the points, to thus create a line. However, when I did that, I only received three lines connect between the dots for some reason. The bottom points (0,0) and (1,0) for some reason were not connected. I then attempted to make a second square, and the same thing happened, with the two lower points in regards to their Y points did not connect. I tried using the rectangle function as well, but can't get a square within a square to appear. Any help would be great. Thanks

 채택된 답변

Image Analyst
Image Analyst 2013년 10월 8일
편집: Image Analyst 2024년 7월 29일
You need 5 points - the last one is to "close off" the square, otherwise it won't be closed because you didn't draw the line back to the starting point. So, try this
% Draw first, outer rectangle.
x1=0;
x2=1;
y1=0;
y2=1;
x = [x1, x2, x2, x1, x1];
y = [y1, y1, y2, y2, y1];
plot(x, y, 'b-', 'LineWidth', 3);
hold on;
% Draw the second, inner rectangle.
x1=0.25;
x2=.75;
y1=0.25;
y2=.75;
x = [x1, x2, x2, x1, x1];
y = [y1, y1, y2, y2, y1];
plot(x, y, 'r-', 'LineWidth', 3);
% Define the plot region outer limits of the axes.
xlim([-0.5, 1.5]);
ylim([-0.5, 1.5]);
grid on;
axis equal % Make sure the aspect ratio is correct so that they look like squares.

댓글 수: 2

Paul
Paul 2013년 10월 8일
perfect!
If you ever had to create two similar objects like this (for example two squares), would you recommend going about it another way? I tried with the rectangle function as well, it seemed potentially more convenient.
Once again, thanks for the response.
I think the way I did it is easier to understand than rectangle. In my mind I just visualize starting at the upper left corner and marching around the square in a clockwise fashion. First I do the x's then I do the y's. And so it's really quick for me to construct the 5 element x and y matrices.

댓글을 달려면 로그인하십시오.

추가 답변 (4개)

Camilo Malagon Nieto
Camilo Malagon Nieto 2019년 5월 8일

1 개 추천

Worth to say that there is a function now to make a rectangle and smooth the corners.
Cheers,
Steven Lord
Steven Lord 2024년 7월 29일
Depending on what you want to do with those shapes, creating a polyshape array may be useful.
x = [0 0 1 1];
y = [0 1 1 0];
P1 = polyshape(x, y);
plot(P1)
axis square
P2 = translate(scale(P1, 0.5), [0.25 0.25]);
figure
plot([P1, P2])
axis square
NAGENDRA KUMAR
NAGENDRA KUMAR 2017년 9월 12일
이동: Image Analyst 2024년 7월 29일
Please write this code
x = [0 0 1 1 0];
y = [0 1 1 0 0];
plot(x,y,'r', 'LineWidth',3)
Pranav
Pranav 2024년 7월 29일

0 개 추천

The IMAGE ANALYST did a great job at answering this question.

댓글 수: 2

Thanks! 🙂
Pranav
Pranav 2024년 7월 29일
Anytime, Keep up the great work!!!

댓글을 달려면 로그인하십시오.

카테고리

태그

질문:

2013년 10월 8일

댓글:

2024년 7월 29일

Community Treasure Hunt

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

Start Hunting!

Translated by