Wie man n äquidistante Punkte in einem n-1-dimensionalen Raum erzeugt

8

Wie gesagt, ich möchte ein Programm erstellen, um n äquidistante Punkte in einem euklidischen Raum zu erzeugen. Von dem was ich weiß

  • 1d: alle paar Punkte
  • 2d: alle gleichseitigen Dreiecke
  • 3d: alle gleichseitigen Tetraeder
  • bis zu 3d: Ich nehme an, es wird ein gleichseitiges Hypertriangle genannt

Mein Problem ist also wie folgt: In einem n-1-Euklidianraum, indem ich einen definierten Punkt gebe, baue den n-1-anderen, um ein gleichseitiges Hypertriangle mit einem entfernten d zwischen jedem Punkt zu haben.

Ich nehme an, wir können wie folgt mit beispielsweise einem 3D-Raum beginnen.

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

Wir fangen an, p2 zu reparieren, indem wir d und p1 kennen

  • d²=(x1x2)2+(y1y2)2+(z1z2)2

Wir haben 3 Variablen x2, y2, z2. Wir können zwei davon zufällig reparieren und die dritte ohne Probleme bestimmen.

Dann haben wir für den zweiten Punkt jetzt 2 Gleichungen, um ihn zu definieren:

  • d²=(x1x3)2+(y1y3)2+(z1z3)2
  • d²=(x2x3)2+(y2y3)2+(z2z3)2

Wie zuvor gehe ich davon aus, dass wir 2 Variablen festlegen können, um die dritte zu bestimmen.

Für den letzten Punkt haben wir jetzt 3 Gleichungen, die ihn definiert haben.

Für einen n-1-dimensionalen Raum haben wir also eine n-1-Gleichung, um den letzten Punkt zu definieren.

Ich weiß nicht, wie ich diese Art von System lösen soll, das aus einer quadratischen Gleichung mit einer Variablen besteht, und ob der Prozess, der darin besteht, die n-1-Dimension zu bestimmen, um die letzte zu bestimmen, zu einem äquidistanten Hypertriangle führt. Darüber hinaus gibt es möglicherweise andere Methoden mit einer geringeren Komplexität und einfacher zu implementieren.

Ich hoffe ich war klar genug und ich danke Ihnen für Ihre Hilfe.

KyBe
quelle

Antworten:

9

Ich gehe davon aus, dass wir in .Rn

Beachten Sie zunächst, dass ein regulärer Simplex alle anderen effektiv bestimmt. Wenn zwei Sätze von Punkten in , die die Regelmäßigkeitsbedingung erfüllen, können sie tatsächlich voneinander erhalten werden, indem höchstens eine Isometrie und eine homothetische Transformation des affinen Raums (der umgekehrt ist auch wahr).nS1,S2Rn

Daher ist es ausreichend, einen einheitlichen Simplex zu konstruieren , der im Ursprung zentriert ist. Wir visualisieren jeden Scheitelpunkt des Simplex als Element des realen dimensionalen Vektorraums.nv1,v2,vn+1n

Betrachten Sie zwei Eckpunkte des Simplex, sei der Ursprung und die Ebene, die durch . Der Winkel ist genau . Um dies zu beweisen, beobachten wir Folgendes:v1,v2Oπv1,v2,Oϑ=v1Ov2arccos(1/n)

0=ivi2=(n+1)+2cosϑ(n+12)

Wir schließen daraus, dass Folgendes gilt:

  • ivi=1

  • ijvi,vj=1/n

Man kann ohne Verlust an Allgemeinheit davon ausgehen , dass liegen auf der gleichen Linie, das liegt auf der gleichen Ebene wie die anderen , und so weiter (in der Regel, daß für jedes , liegen auf dem gleichen Unterraum von mit der Dimension ). Daher können wir die Vektoren durch Koordinaten wie folgt schreiben:v1,v2v3kv1,v2,vkRnk

v1v2vn+1===(x1,10000)T(x2,1x2,2000)T(xn+1,1xn+1,2xn+1,3xn+1,4xn+1,n+1)T

Die erste Gleichung bestimmt eindeutig und die zweite alle . Jetzt verwenden wir erneut das erste, um zu berechnen, und mit dem zweiten bestimmen wir alle verbleibenden .x1,1xm,1x2,2x2,m

Wenn Sie den Vorgang auf ähnliche Weise fortsetzen, werden die Koordinatenwerte aller Scheitelpunkte berechnet.

schnelle Sorte
quelle
Vielen Dank, trotz der wohlgeformten theoretischen Dinge, die Sie mit uns teilen, ist es mir nicht gelungen, herauszufinden, wie man die , vorausgesetzt, dass wird vom Benutzer definiert. Können Sie es bitte anders erklären? x2,1,x2,2,...x1,1
KyBe
v [n + 1] sollte n Dimensionen haben, nicht n + 1 wie in der letzten Gleichung; Das v [n + 1] sollte aus v [0] + v [1] + ... + v [n] + v [n + 1] = 0 berechnet werden
titus
6

Sie können n-1 äquidistante Punkte erstellen, indem Sie die Einheitsvektoren entlang jeder Achse (aka) verwenden. (1, 0, 0, 0, ..., 0); (0, 1, 0, 0, ..., 0); (0, 0, 1, 0, ..., 0); usw. Der letzte n-te Punkt liegt in der Richtung 1, 1, 1, ..., 1.

Anschließend können Sie mithilfe einer Skala den Abstand zwischen den Punkten von bis und einer Übersetzung festlegen , um einen der Punkte zum festen Punkt zu verschieben2d

Ratschenfreak
quelle
Schön - ich denke, Sie können mit diesem Ansatz tatsächlich eine geschlossene Lösung schreiben!
Ruakh
1
[später] Für den letzten Punkt können Sie entweder oder . (1nn1,1nn1,,1nn1)(1+nn1,1+nn1,,1+nn1)
Ruakh
Vielen Dank, aber ich bin mir nicht sicher, was Sie vorgeschlagen haben, indem Sie "den Einheitsvektor entlang jeder Achse verwenden". Können Sie dies bitte neu formulieren?
KyBe
@ KyBe Ich habe ein paar Beispiele hinzugefügt.
Ratschenfreak
Woher haben Sie Ihren Ausdruck des letzten Punktes (der der n-te in einem n-1 d-Raum ist) @ruakh gefunden? Es ist interessant, aber es gelingt mir nicht, herauszufinden, wie ich es bekomme.
KyBe