Si su polígono es convex, puede calcular el casco convexo desde los vértices usando la función CONVHULL y trazar el polígono usando la función de trazado PATCH. Por ejemplo:
x = [0 1 0 1]; %# Unordered x coordinates of vertices
y = [0 1 1 0]; %# Corresponding y coordinates of vertices
hullIndices = convhull(x,y); %# Gives vertex indices running counterclockwise
%# around the hull
patch(x(hullIndices),y(hullIndices),'r'); %# Plot the polygon in red
Si el polígono es cóncavo en lugar , que se vuelve más complicado. Tendría que reordenar las líneas de borde usted mismo comparando sus puntos finales y ordenándolos en sentido horario o antihorario.
... pero si eso suena como demasiado trabajo para codificar hasta, puede eludir el problema creando un constrained Delaunay triangulation de los puntos de vértice, find the triangles on the inside of the constrained edges, a continuación, trazar estos triángulos individuales que forman el polígono utilizando PATCH. Por ejemplo:
x = [0 1 0 1 0.5]; %# Unordered x coordinates of vertices
y = [0 1 1 0 0.5]; %# Corresponding y coordinates of vertices
edgeLines = [1 3;... %# Point 1 connects to point 3
1 4;... %# Point 1 connects to point 4
2 3;... %# Point 2 connects to point 3
2 5;... %# Point 2 connects to point 5
5 4]; %# Point 5 connects to point 4
dt = DelaunayTri(x(:),y(:),edgeLines); %# Create a constrained triangulation
isInside = inOutStatus(dt); %# Find the indices of inside triangles
faces = dt(isInside,:); %# Get the face indices of the inside triangles
vertices = [x(:) y(:)]; %# Vertex data for polygon
hPolygon = patch('Faces',faces,...
'Vertices',vertices,...
'FaceColor','r'); %# Plot the triangular faces in red
Lo anterior se mostrará el polígono con líneas de borde alrededor de cada sub-triángulo que lo forma. Si solo desea que se muestre una línea de borde alrededor de todo el polígono, puede agregar lo siguiente:
set(hPolygon,'EdgeColor','none'); %# Turn off the edge coloring
xEdge = x(edgeLines).'; %'# Create x coordinates for the edge
yEdge = y(edgeLines).'; %'# Create y coordinates for the edge
hold on; %# Add to the existing plot
line(xEdge,yEdge,'Color','k'); %# Plot the edge in black
¿Cómo se almacenan los datos de borde (el número de variables, sus tamaños, etc.)? – gnovice