3D
Polygon - draw planes with Matlab
In this
example we’re going to explain how to draw a 3D polygon using Matlab.
More
specifically, we are going to draw several flat surfaces (planes) to
build or
model a box.
Our
main built-in function in this case is the function “fill3”, which is
intended
to color 3D flat planes.
The
sentence fill3(x, y, z, c) would fill the 3D polygon defined by vectors
x, y
and z with the color specified by c.
The
vertices of the polygon are specified by coordinates of components of
x, y and
z, and the polygon is closed by connecting the last vertex to the first
one.
Let’s
say that we want to draw this arbitrary rectangular box

The
coordinates of the eight vertices are as follows:
P1(0,
0, 0)
P2(2,
0, 0)
P3(2,
4, 0)
P4(0,
4, 0)
P5(0,
0, 3)
P6(2,
0, 3)
P7(2,
4, 3)
P8(0,
4, 3)
We
could draw our first flat surface by filling the area defined by the
first four
points, like this:
p1
= [0
0 0];
p2 = [2
0 0];
p3 = [2
4 0];
p4 = [0
4 0];
x =
[p1(1) p2(1) p3(1) p4(1)];
y =
[p1(2) p2(2) p3(2) p4(2)];
z =
[p1(3) p2(3) p3(3) p4(3)];
fill3(x,
y, z, 1);
xlabel('x');
ylabel('y'); zlabel('z');
The code produces this
figure:

We can
expand our axes, add a grid and hold the image in order to add more
planes...
axis([-1
3 -1 5 -1 4])
grid
hold on
produces...

We can draw a second
surface or plane defined by the last
four vertices:
p5 = [0
0 3];
p6 = [2
0 3];
p7 = [2
4 3];
p8 = [0
4 3];
x =
[p5(1) p6(1) p7(1) p8(1)];
y =
[p5(2) p6(2) p7(2) p8(2)];
z =
[p5(3) p6(3) p7(3) p8(3)];
fill3(x,
y, z, 2);
And the result now is:

We can add more surfaces
by connecting the appropriate
vertices, in the correct order. If we continue our code above with
x = [p2(1) p6(1) p7(1) p3(1)];
y = [p2(2) p6(2) p7(2) p3(2)];
z = [p2(3) p6(3) p7(3) p3(3)];
fill3(x, y, z, 3);
x = [p2(1) p6(1) p5(1) p1(1)];
y = [p2(2) p6(2) p5(2) p1(2)];
z = [p2(3) p6(3) p5(3) p1(3)];
fill3(x, y, z, 4);
The resulting 3D-image is
the following figure:

We can produce or generate different views of the same
3D-image, of course:
view(120, 50)
Naturally, we can have a custom-made function to draw
rectangles. For example, save something like this:
function
poly_rectangle(p1, p2, p3, p4)
%
The points must be in the correct sequence.
%
The coordinates must consider x, y and z-axes.
x =
[p1(1) p2(1) p3(1) p4(1)];
y =
[p1(2) p2(2) p3(2) p4(2)];
z =
[p1(3) p2(3) p3(3) p4(3)];
fill3(x,
y, z, rand(size(p1)));
hold on
We can call that function
from any other script or from the
command window.
Let’s try it:
poly_rectangle(p3, p4, p8,
p7)
poly_rectangle(p1,
p4, p8, p5)
view(-155,
43)
What did you get?
From '3D
Polygon' to Matlab home
From
'3D Polygon' to 3D figures


|