Matlab - TRIANGULACIÓN DE POLINOMIO CONVEXO

 
Vista:
sin imagen de perfil

TRIANGULACIÓN DE POLINOMIO CONVEXO

Publicado por Daniel (1 intervención) el 28/11/2021 11:34:26
Buenos días a todos, soy muy novato con Matlab y debo realizar un ejercicio para clase que me está dando un poco de dolor de cabeza. Me gustaría que alguien pudiera echarme una mano.

El ejercicio trata de triangular un polígono convexo utilizando componentes monótonas (identificar orejas), para ello mi idea es recorrer el polígono en sentido antihorario, utilizar la ecuación de la recta cada 3 vértices e ir eliminando aquellos que queden fuera del polígono al hallar una diagonal. De este modo ir iterando n veces hasta que el polígono quede triangulado.

Hasta ahora he logrado que el programa lea el archivo txt y guarde una matriz ordenada de los datos del fichero, en este caso de 21x3

posteriormente intento con un bucle for aplicar la ecuación de la recta entre vertices impares para observar si el vertice par intermedio está a un lado u otro de la misma y con ello definir una diagonal o no. Aquí tengo problemas para calcular y extraer a una nueva matriz los valores calculados.

Mi idea es una vez tenga estos valores aplicar un bucle if para eliminar vértices ya triangulados.

No se si alguien pudiera decirme donde encontrar información sobre como realizar este ejercicio

Muchas gracias y un saludo!

CODIGO:

PRUEBA DE EVALUACIÓN DEL MÓDULO 1
%1.Identificación de vértices

clear;%Para borrar el workspace
clc;%Para borrar el comandWindow


%Lectura del fichero de puntos - puntos.txt
%coordenadas de los puntos de control (3columnas, nombre del punto, X, Y):

ficherocon = fopen ('puntos.txt','r');%apertura del fichero que vamos a leer
A = fscanf (ficherocon, '%s %g %g'); %Lectura de los datos, con formato, y almacenamiento en la matriz A
fclose (ficherocon); %Cierro el ficherocon


%///ESTRUCTURACIÓN DE LA MATRIZ A/////
% Volvemos A a su forma original
M = size (A,1); %En primer lugar contamos el número de filas de A para poder
%cambiar las dimensiones de la matriz. La instrucción
%size(matriz,número) devuelve el número de filas si número = 1 y
%el número de columnas si número = 2.
A = reshape (A,3,M/3)'; %Devolvemos a A la estructura que tenía el fichero control.txt
vartotales = (M/3)-1 %Para saber cuantas columnas hay en la matriz A tras devolver su estructura real


%Recorro la matriz para guardar los valores en la variable x y la variable
%y Cálculo orejas

for i = 1:vartotales-1
r(i) = ((A(i+2,2)- A(i,2)) * (A(i+1,3)- A(i,3)))-((A(i+2,3)-A(i,3))*(A(i+1,2)- A(i,2)))
end

------------------------------------------------------------------------------------------------------
FICHERO DE ENTRADA:
puntos.txt:
A 708790.72 4496667.12
B 709469.41 4496665.74
C 709321.4 4497029
D 709164.22 4497195
E 709159.020 4497379.750
F 709496.04 4498223.52
G 709027.16 4497654.48
H 708733.09 4497532.57
I 708878.83 4497330.11
J 708687.97 4497335.65
K 708594.9 4497157.38
L 708496.53 4497113.63
M 708603.27 4497006.62
N 708721.51 4497005.94
O 708686.13 4496947.84
P 708678.63 4496934.63
Q 708655.62 4496861.21
R 708478.55 4496860.58
S 708721.15 4496704.72
T 708640.22 4496404.14
A 708790.72 4496667.12
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder