Regelmäßig verteiltes orthogonales Gitter Delaunay-Triangulation (Berechnung der Paraboloid-Koeffizienten)

Ich versuche, eine Delaunay-Triangulation für den speziellen Fall zu konstruieren, in dem die eingegebenen x- und y-Koordinaten orthogonal und relativ äquidistant sind.

Angesichts der relativ großen Datenmenge (1000 x 1200 Triangulationspunkte) und der Tatsache, dass der Qhull-Algorithmus meine zusätzliche orthogonale Bedingung nicht kennt, ist die Triangulation relativ langsam (25 Sekunden auf meinem Computer).

Als solches möchte ich manuell eine Delaunay-Triangulation erstellen, wobei jedes meiner bekannten Quads in zwei Dreiecke unterteilt ist. Ich weiß, dass dies nicht immer zu einer gültigen Delaunay-Triangulation führt (z. B. wenn sich der x- und der y-Schritt erheblich unterscheiden), aber in meinem Fall bin ich ziemlich zuversichtlich, dass der Unterteilungsansatz eine gute Triangulation ergibt.

Im folgenden Diagramm habe ich jedes der Dreiecke mit einem Index, dem anfänglichen Scheitelpunkt und der Scheitelpunktdefinitionsrichtung gekennzeichnet:

In diesem Fall habe ich und x und y Koordinaten von[-1, 1.33, 3.67, 6] und[2, 4.5, 7, 9.5, 12] beziehungsweise.

Ich verwende derzeit die SciPy-Wrapper für Qhull und konnte Scheitelpunkte und entsprechende Nachbarinformationen konstruieren, habe jedoch Schwierigkeiten, die zu definierenequations Attribut (wie kurz erwähnt beihttp://docs.scipy.org/doc/scipy-dev/reference/generated/scipy.spatial.ConvexHull.html).

Im Wesentlichen glaube ich, dass diese Werte Parameter der Normalen eines jeden Dreiecks zu dem Paraboloid sind, das durch definiert wirdparaboloid_scale undparaboloid_shift Attribute, kann aber nicht die magischen Zahlen finden, die für die Interpretation durch Qhull geeignet sind. Es sollte gebenn_dimensions + 1 Werte pro Scheitelpunkt und es gibt Code in SciPy, der die Entfernung jedes Scheitelpunkts von einem bestimmten Punkt berechnet:

dist = d.equations[isimplex*(d.ndim+2) + d.ndim+1]
for k in xrange(d.ndim+1):
    dist += d.equations[isimplex*(d.ndim+2) + k] * point[k]

Meine Fragen sind also:

Habe ich das gedolmetschtequation richtig zuordnen?Gibt es da draußen schon ein Tool, das das für mich macht?Kann ich das berechnen?equation Parameterwerte in meinem orthogonalen und meist äquidistanten Fall ohne Qhull?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage