Matlab - Calcular circunferencia dado tres puntos con tres componentes

 
Vista:
sin imagen de perfil
Val: 31
Ha aumentado su posición en 8 puestos en Matlab (en relación al último mes)
Gráfica de Matlab

Calcular circunferencia dado tres puntos con tres componentes

Publicado por Juan MG (20 intervenciones) el 30/10/2018 21:21:40
Hola,

resolver el sistema de ecuaciones en Matlab para hallar una circunferencia, cuando los puntos son de 2 coordenadas es fácil.
Cuando los puntos tienen las tres componentes X, Y y Z, el sistema de ecuaciones es complejo de adecuar a Matlab para resolver a base de matrices inversas y tal.

La pregunta: ¿existe en Matlab un programa o función, ya hecha, en la cual pueda incluir los 3 puntos con las 3 coordenadas/componentes y me devuelva directamente el centro y radio de dicha circunferencia?

Gracias.
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
Imágen de perfil de JOSE JEREMIAS CABALLERO
Val: 6.975
Oro
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Calcular circunferencia dado tres puntos con tres componentes

Publicado por JOSE JEREMIAS CABALLERO (5917 intervenciones) el 31/10/2018 03:07:56
¿Tiene la solución analítica de su pregunta o la teoría de su pregunta?.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 31
Ha aumentado su posición en 8 puestos en Matlab (en relación al último mes)
Gráfica de Matlab

Calcular circunferencia dado tres puntos con tres componentes

Publicado por Juan MG (20 intervenciones) el 31/10/2018 10:33:54
Sí,

tengo una nube de puntos con las tres componentes X, Y y Z. Son unos 50 puntos aproximadamente, de los cuales con un bucle "For" voy seleccionando de 3 en 3 y obteniendo todas las posibles circunferencias.

Si la Z no variara el problema sería sencillo aplicando la forma general de la ecuación de la circunferencia:

X^2 +Y^2 + dX +eY + f = 0

sustituyendo 3 puntos de la circunferencia obtenemos un sistema de ecuaciones de 3 ec con 3 incógnitas (d, e y f) con las que posteriormente se podrá calcular centro y radio de dicha circunferencia.
------------
Pero la Z sí varía en mi caso y por tanto la ecuación es la siguiente: (X-a)^2 + (Y-b)^2 + (Z-c)^2 = R^2 donde (a,b,c) es el centro de la circunferencia y R el radio.
No he encontrado por internet la ecuación en forma general cuando las Z de la circunferencia no tienen la misma altura.

Éste es el problema. Si hay algo en lo que no me haya expresado bien no dude en comentarlo.
Gracias de antemano.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de JOSE JEREMIAS CABALLERO
Val: 6.975
Oro
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Calcular circunferencia dado tres puntos con tres componentes

Publicado por JOSE JEREMIAS CABALLERO (5917 intervenciones) el 02/11/2018 00:00:23
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
clear
figure(gcf)
theta=0:pi/20:2*pi;
h=5;
k=10;
radio=20;
x=radio*cos(theta)+h;
y=radio*sin(theta)+k;
hold on
for h=-4:0.5:9
z=h*ones(1,length(x));
plot3(x,y,z)
view(20,39)
end
grid  on
axis('image')
hold off


Saludos
JOSE JEREMIAS CABALLERO
Asesor de Proyectos con Matlab
Servicios de programación matlab


http://matlabcaballero.blogspot.com
https://www.facebook.com/matlabcaballero
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de JOSE JEREMIAS CABALLERO
Val: 6.975
Oro
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Calcular circunferencia dado tres puntos con tres componentes

Publicado por JOSE JEREMIAS CABALLERO (5917 intervenciones) el 02/11/2018 00:12:12
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
clear
figure(gcf)
theta=0:pi/20:2*pi;
n=12;
a=30*rand(1,n);
b=30*rand(1,n);
c=30*rand(1,n);
r=30*rand(1,n);
h=30*rand(1,n);
hold on
for i=1:length(a)
 x=r(i)*cos(theta)+a(i);
y=r(i)*sin(theta)+b(i);
z=h(i)*ones(1,length(x));
plot3(x,y,z)
view(20,39)
clear  x y z
end
grid  on
axis('image')
hold off
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de JOSE JEREMIAS CABALLERO
Val: 6.975
Oro
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Calcular circunferencia dado tres puntos con tres componentes

Publicado por JOSE JEREMIAS CABALLERO (5917 intervenciones) el 02/11/2018 20:56:33
Podría subir su nubes de puntos de X Y Z que menciona. Ademas su avance de su código seria de ayuda
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de JOSE JEREMIAS CABALLERO
Val: 6.975
Oro
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Calcular circunferencia dado tres puntos con tres componentes

Publicado por JOSE JEREMIAS CABALLERO (5917 intervenciones) el 03/11/2018 00:27:54
"resolver el sistema de ecuaciones en Matlab para hallar una circunferencia, cuando los puntos son de 2 coordenadas es fácil."

podría mostrar un ejemplo resuelto de este afirmación.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de JOSE JEREMIAS CABALLERO
Val: 6.975
Oro
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Calcular circunferencia dado tres puntos con tres componentes

Publicado por JOSE JEREMIAS CABALLERO (5917 intervenciones) el 03/11/2018 06:21:23
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
clear
syms A B C  D
% EG=expand((x-h)^2+(y-k)^2+(z-u)^2-r^2)
p1=[1,2,6]; p2=[9,4,7]; p3=[4 9,12];   p4=[5 8,20];
x1=p1(1);  y1=p1(2); z1=p1(3);
x2=p2(1); y2=p2(2);  z2=p2(3);
x3=p3(1); y3=p3(2);  z3=p3(3);
x4=p4(1); y4=p4(2);  z4=p4(3);
 e1=x1^2+y1^2+z1^2+A*x1+B*y1+C*z1+D;
 e2=x2^2+y2^2+z2^2+A*x2+B*y2+C*z2+D;
 e3=x3^2+y3^2+z3^2+A*x3+B*y3+C*z3+D;
 e4=x4^2+y4^2+z4^2+A*x4+B*y4+C*z4+D;
 S=solve(e1,e2,e3,e4,A,B,C,D);
A=S.A;
B=S.B;
C=S.C;
D=S.D;
h=-A/2
k=-B/2
u=-C/2
r=double(sqrt(h^2+k^2+u^2-D))


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
>> circunferencias3
 
h =
 
29/6
 
 
k =
 
-1/2
 
 
u =
 
89/6
 
 
r =
 
    9.9485


Saludos
JOSE JEREMIAS CABALLERO
Asesor de Proyectos con Matlab
Servicios de programación matlab


http://matlabcaballero.blogspot.com
https://www.facebook.com/matlabcaballero
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 31
Ha aumentado su posición en 8 puestos en Matlab (en relación al último mes)
Gráfica de Matlab

Calcular circunferencia dado tres puntos con tres componentes

Publicado por Juan MG (20 intervenciones) el 03/11/2018 12:37:40
Muchas gracias por las respuestas y atención.

En los próximos días trabajaré con el código, probaré su método y le haré saber los resultados.

Gracias de nuevo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Calcular circunferencia dado tres puntos con tres componentes

Publicado por Ian Oliver (1 intervención) el 19/06/2021 17:58:29
¿Lograste encontrar un código que funcione correctamente?
He investigado y según entiendo, la única forma de calcular lo que propones es primeramente calcular lo que sería la esfera que contiene esos 3 puntos, es decir, que cumple con (X-a)^2 + (Y-b)^2 + (Z-c)^2 = R^2, y posteriormente intersectarla por un plano que contenga a los 3 puntos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar