void MinError(Edge edge, out Vector3 minPos, out float minError, out Quality q) { var vi0 = vertexInfos[edge.v0]; var vi1 = vertexInfos[edge.v1]; q = vi0.quad + vi1.quad; try { var minPosD = q.MinError(); minError = (float)(q * minPosD); minPos = (Vector3)minPosD; } catch (nobnak.Algebra.SingularMatrixException) { MinErrorOnEdge(vi0, vi1, q, out minPos, out minError); } }