Cómo generar n puntos equidistantes en un espacio dimensional n-1


8

Como se dijo, quiero construir un programa para generar n puntos equidistantes en un espacio euclidiano. Por lo que sé

  • 1d: todos los puntos
  • 2d: todos los triángulos equiláteros
  • 3d: todos los tetraedros equiláteros
  • hasta 3d: supongo que se llama hipertriangulo equilátero

Entonces, mi problema es el siguiente, en un espacio euclidiano n-1, dando un punto definido, construya el otro n-1 para tener un hipertriangulo equilátero con una d distante entre cada punto.

Supongo que podemos comenzar como sigue con, por ejemplo, un espacio 3d.

  • p1 = (x1, y1, z1) fijo
  • p2 = (x2, y2, z2)
  • p3 = (x3, y3, z3)
  • p4 = (x4, y4, z4)
  • re

Comenzamos a arreglar p2 sabiendo d y p1

  • d²=(x1−x2)2+(y1−y2)2+(z1−z2)2

Tenemos 3 variables x2, y2, z2. Podemos arreglar al azar dos de ellos y determinar el tercero sin problema.

Luego para el segundo punto tenemos ahora 2 ecuaciones para definirlo:

  • d²=(x1−x3)2+(y1−y3)2+(z1−z3)2
  • d²=(x2−x3)2+(y2−y3)2+(z2−z3)2

Como anteriormente, supongo que podemos arreglar 2 variables para determinar la tercera.

Para el último punto ahora tenemos 3 ecuaciones que lo definieron.

Entonces, para un espacio dimensional n-1 tenemos una ecuación n-1 para definir el último punto.

No sé cómo resolver este tipo de sistema compuesto de ecuaciones cuadráticas con una variable y si el proceso que consiste en fijar la dimensión n-1 para determinar la última conduce a un hipertriangulo equidistante. Además, existen otros métodos con una complejidad menor y más fáciles de implementar.

Espero haber sido lo suficientemente claro y gracias por su ayuda.

Respuestas:


9

Supongo que estamos trabajando en .Rn

En primer lugar, observe que un simplex regular determina efectivamente a todos los demás. De hecho, si son dos conjuntos de puntos en que satisfacen la condición de regularidad, entonces pueden obtenerse unos de otros componiendo como máximo una isometría y una transformación homotética del espacio afín (el lo contrario también es cierto).n−S1,S2Rn

Por lo tanto, es suficiente construir un simplex unitario centrado en el origen. Visualizamos cada vértice del simplex como un elemento del espacio vectorial -dimensional real .n−v1,v2,…vn+1n

Consideremos dos vértices del simplex, permiten ser el origen y es el plano que pasa a través . El ángulo es exactamente . Para probar eso, observamos que:v1,v2Oπv1,v2,Oϑ=∠v1Ov2arccos⁡(−1/n)

0=‖∑ivi‖2=(n+1)+2cos⁡ϑ(n+12)

Deducimos que se cumple lo siguiente:

  • ∀i‖vi‖=1

  • ∀i≠j⟨vi,vj⟩=−1/n

Podemos suponer sin pérdida de generalidad que encuentran en la misma línea, que encuentra en el mismo plano que los demás y así sucesivamente (en general, que para cada , encuentran en el mismo subespacio de con dimensión ). Por lo tanto, podemos escribir los vectores por coordenadas de la siguiente manera:v1,v2v3kv1,v2,…vkRnk

v1v2⋯vn+1===(x1,1000…0)T(x2,1x2,200…0)T(xn+1,1xn+1,2xn+1,3xn+1,4…xn+1,n+1)T

La primera ecuación determina de forma exclusiva y la segunda todas las . Ahora usamos nuevamente el primero para calcular y con el segundo determinamos todos los restantes .x1,1xm,1x2,2x2,m

Continuar el procedimiento de manera similar calcula los valores de coordenadas de todos los vértices.


Gracias, a pesar de las cosas teóricas bien formadas que comparte con nosotros, no logro descifrar cómo determinar , suponiendo que está definido por el usuario. ¿Puedes explicarlo de otra manera? x2,1,x2,2,...x1,1
— KyBe

v [n + 1] debe tener n dimensiones no n + 1 como en la última ecuación; v [n + 1] debe calcularse a partir de v [0] + v [1] + ... + v [n] + v [n + 1] = 0
— titus

6

Puede hacer n-1 puntos equidistantes utilizando los vectores unitarios a lo largo de cada uno de los ejes aka. (1, 0, 0, 0, ..., 0); (0, 1, 0, 0, ..., 0); (0, 0, 1, 0, ..., 0); etc., el último enésimo punto estará a lo largo de la dirección 1, 1, 1, ..., 1.

Luego puede usar una escala para establecer la distancia entre los puntos de a y una traslación para mover uno de los puntos al punto fijo2d


Agradable: ¡creo que puedes escribir una solución de forma cerrada con este enfoque!
— ruakh

1
[más tarde] Para el último punto, puede usar o . (1−nn−1,1−nn−1,…,1−nn−1)(1+nn−1,1+nn−1,…,1+nn−1)
— ruakh

Gracias, pero no estoy seguro de comprender bien lo que propuso al "usar el vector unitario a lo largo de cada uno de los ejes", ¿puede reformularlo por favor?
— KyBe

@ Kybe Agregué algunos ejemplos.
— monstruo de trinquete

¿De dónde encontraste tu expresión del último punto (que es el enésimo en un espacio d n-1) @ruakh? Es interesante, pero no logro descubrir cómo conseguirlo.
— KyBe
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.