Está en la página 1de 6

Patch (X, Y, C)

Traza una o más regiones poligonales rellenas utilizando los elementos de X e Y como coordenadas
para cada vértice. patch conecta los vértices en el orden en que los especifica. Para crear un
polígono, especifique X e Y como vectores. Para crear múltiples polígonos, especifique X e Y como
matrices donde cada columna corresponde a un polígono. C determina los colores del polígono.
https://la.mathworks.com/help/matlab/ref/patch.html?s_tid=srchtitle -0

Ejercicio
Crear un solo polígono especificando las coordenadas (x, y) de cada vértice. Luego, agregue dos
polígonos más a la figura.

Crea un cuadrado rojo con vértices en (0,0), (1,0), (1,1) y (0,1). Especifique x como las
coordenadas x de los vértices e y como las coordenadas y. el parche conecta automáticamente la
última coordenada (x, y) con la primera coordenada (x, y)

x = [0 1 1 0];
y = [0 0 1 1];
patch(x,y,'red')
v = [0 0; 1 0; 1 1; 0 1];
f = [1 2 3 4];
patch('Faces',f,'Vertices',v,'Face
Color','red'

x2 = [2 5; 2 5; 8 8];
y2 = [4 0; 8 2; 4 0];
patch(x2,y2,'green')

v2 = [2 4; 2 8; 8 4; 5 0; 5 2; 8 0];
f2 = [1 2 3;
4 5 6];
patch('Faces',f2,'Vertices',v2,'FaceColor','green')

v = [2 0; 3 0; 3 1];
f = [1 2 3];
c = [1 0 0; % red
0 1 0; % green
0 0 1]; % blue
patch('Faces',f,'Vertices',v,'FaceVertexCData',c,...
'EdgeColor','flat','FaceColor','none','LineWidth',2);
x = linspace(1,10,15);
y = sin(x);
y(end) = NaN;
c = y;
figure
patch(x,y,c,'EdgeColor','interp','Marker','o','MarkerFaceColor','fl
at');
colorbar;

Creación de Polígonos u forma 3D Comando Patch

Creemos una forma de bloque combinando seis polígonos usando el comando patch. Primero
consideramos el caso en el que uno de los vértices coincide con el origen del sistema de coordenadas y
cada lado es paralelo al eje de coordenadas como se muestra en la Figura 1 (lo llamamos la
"configuración básica"). En este caso, si se da la longitud de cada lado (Lx, Ly, Lz), las coordenadas de los
ocho vértices son obvias. Las seis caras están definidas por las siguientes seis secuencias de vértices
clear; close all;
% longitus de los lados

Lx = 0.15;
Ly = 0.05;
Lz = 0.30;

% Vertices
vertices = [
0, 0, 0; % #1
Lx, 0, 0; % #2
0, Ly, 0; % #3
0, 0, Lz; % #4
Lx, Ly, 0; % #5
0, Ly, Lz; % #6
Lx, 0, Lz; % #7
Lx, Ly, Lz]; % #8

% caras
faces = [
1, 2, 5, 3; % #1
1, 3, 6, 4; % #2
1, 4, 7, 2; % #3
4, 7, 8, 6; % #4
2, 5, 8, 7; % #5
3, 6, 8, 5]; % #6

% dibujar con patch


figure(1);
h = patch('Faces', faces, 'Vertices', vertices, 'FaceColor', 'r');

% configuracion de los ejes


xlabel('x'); ylabel('y'); zlabel('z');
axis vis3d equal;
view([-37.5, 30]);
camlight;
grid on;
xlim([-0.15, 0.35]);
ylim([-0.2, 0.3]);
zlim([-0.1, 0.4]);
La configuración general para obtener una forma de bloque en una como se muestra en la figura se puede
definir por la posición y la orientación del marco de referencia unido a uno de los vértices y la longitud de
cada lado (Lx, Ly, Lz). Si la coordenada de posición y la matriz de orientación del marco de referencia son r y
R, respectivamente, entonces las coordenadas de los vértices se obtienen mediante la siguiente ecuación:

Donde 𝑝𝑖0 es la coordenada del i-ésimo vértice en la configuración básica. Si se obtienen las
coordenadas de los vértices, podemos hacer la forma del bloque combinando seis polígonos usando
el comando patch.
clear; close all;

% pocicion
r = [1; 1; 1];

% orientacion function R = a_euler_XYZ(a1, a2, a3)


R = a_euler_XYZ(-pi/3, 0, pi/6); % Convierta los ángulos XYZ Euler en matriz de rotación
%longitud de los lados
Lx = 0.15; R1 = [
Ly = 0.05; 1, 0, 0;
Lz = 0.30; 0, cos(a1), -sin(a1);
% Vertices 0, sin(a1), cos(a1)];
vertices_0 = [
0, 0, 0; % #1 R2 = [
Lx, 0, 0; % #2
0, Ly, 0; % #3 cos(a2), 0, sin(a2);
0, 0, Lz; % #4 0, 1, 0;
Lx, Ly, 0; % #5 -sin(a2), 0, cos(a2)];
0, Ly, Lz; % #6
Lx, 0, Lz; % #7
Lx, Ly, Lz]; % #8 R3 = [
cos(a3), -sin(a3), 0;
vertices = r' + vertices_0*R';
sin(a3), cos(a3), 0;
% caras 0, 0, 1];
faces = [
1, 2, 5, 3; % #1
1, 3, 6, 4; % #2 R = R1*R2*R3;
1, 4, 7, 2; % #3
4, 7, 8, 6; % #4 end
2, 5, 8, 7; % #5
3, 6, 8, 5]; % #6

%dibujar con patch


figure(1);
h = patch('Faces', faces, 'Vertices', vertices, 'FaceColor', 'r');

% confguracion de los ejes


xlabel('x'); ylabel('y'); zlabel('z');
axis vis3d equal;
view([-37.5, 30]);
camlight;

También podría gustarte