Rincón Matemático

Matemática => Matemática Discreta y Algoritmos => Mensaje iniciado por: jlopez en 23 Septiembre, 2019, 07:13 pm

Título: Algoritmos que me dé N puntos equidistante en la superficie de una esfera
Publicado por: jlopez en 23 Septiembre, 2019, 07:13 pm
Mi idea es usarlo para crear N círculos lo más regularmente posible en una esfera hueca.
Los puntos sirven para crear aros cuya perpendicular apunte a dichos puntos y estén centrados en el origen
Se puede usar por ejemplo para calcular hilos para cubrir una esfera de fibra de carbono para cubrirla con epoxi y albergar hidrógeno a presión o por ejemplo en mi caso para hacer una máquina magnética.

He intentado el siguiente algoritmo:
Latex:
\(
\Delta\phi =\pi*(3-\sqrt{5}) \\
offset=2/N \\
Bucle: i=0..N:\\
y=i*offset-1+\frac{offset}{2} \\
r=\sqrt{1-y^{2}}\\
\phi=i*\Delta\phi \\
vector={r*cos(\phi),y,r*sin(\phi)}
 \)
Código: [Seleccionar]
       //C++:
double inc = PI * (3. - sqrt(5.)), off = 2. / n;
for (int i = 0; i < n; i++)
{
double y = i * off - 1. + 0.5*off,  r = sqrt(1. - y * y), phi = i * inc;
dxyz = { r*cos(phi),y,r*sin(phi) };
                imprime(dxyz);               
}

Pero el resultado es un desastre, por ejemplo para n=128:
(https://i.ibb.co/YRc0M4Z/bola.jpg)

Título: Re: Algoritmos que me dé N puntos equidistante en la superficie de una esfera
Publicado por: Luis Fuentes en 24 Septiembre, 2019, 11:53 am
Hola

 Mira por aquí:

https://stackoverflow.com/questions/43990833/generate-equidistant-points-on-a-sphere-matlab

Saludos.
Título: Re: Algoritmos que me dé N puntos equidistante en la superficie de una esfera
Publicado por: jlopez en 25 Septiembre, 2019, 09:46 am
Gracias Luis, aunque no me soluciona el problema pues la esfera que sale monta los hilos en los casquetes polares.
También he encontrado otro sistema a base de distribuir puntos con distribución par-impar según latitud y longitud pero el resultado es peor (la distancia mínima entre puntos es menor) y por eso no lo pongo

He visto que en la esfera que he generado con mi programa mejora mucho si elimino los puntos de uno de los hemisferios, pues así no duplico hilos generados por centros de uno de los hemisferios con los del otro, pero el resultado sigue sin ser bueno pues se montan hilos en varios puntos, o sea, mi idea de cubrir la esfera con hilos es un problema distinto del de los puntos equidistantes.

Por ahora probaré con el sistema propuesto con centros en uno de los hemisferios a ver que tal va el simulador

saludos
Título: Re: Algoritmos que me dé N puntos equidistante en la superficie de una esfera
Publicado por: Abdulai en 25 Septiembre, 2019, 02:14 pm

Un recurso para distribuirlos casi equidistantes es partir de un poliedro regular (p.e. el icosaedro) e ir subdividiendo las caras.

(https://foro.rinconmatematico.com/index.php?action=dlattach;topic=110598.0;attach=21292)

(de http://www.songho.ca/opengl/gl_sphere.html )

De todas maneras tu problema es mas complejo, pues no se trata de encontrar puntos sino una línea continua donde los cruces y los espacios libres estén lo mas regularmente distribuidos posible.
Título: Re: Algoritmos que me dé N puntos equidistante en la superficie de una esfera
Publicado por: jlopez en 25 Septiembre, 2019, 06:59 pm
Gracias, no se me había ocurrido subdividir el icosaedro

Un saludo