Index: src/utils/SkMatrix22.h |
=================================================================== |
--- src/utils/SkMatrix22.h (revision 0) |
+++ src/utils/SkMatrix22.h (working copy) |
@@ -0,0 +1,26 @@ |
+/* |
+ * Copyright 2014 Google Inc. |
+ * |
+ * Use of this source code is governed by a BSD-style license that can be |
+ * found in the LICENSE file. |
+ */ |
+ |
+#include "SkPoint.h" |
+ |
+class SkMatrix; |
+ |
+/** Find the Givens matrix G, which is the rotational matrix |
+ * that rotates the vector h to the positive hoizontal axis. |
+ * G * h = [hypot(h), 0] |
+ * |
+ * This is equivalent to |
+ * |
+ * SkScalar r = h.length(); |
+ * SkScalar r_inv = r ? SkScalarInvert(r) : 0; |
+ * h.scale(r_inv); |
+ * G->setSinCos(-h.fY, h.fX); |
+ * |
+ * but has better numerical stability by using (partial) hypot, |
+ * and saves a multiply by not computing r. |
+ */ |
+void SkComputeGivensRotation(const SkVector& h, SkMatrix* G); |