/* * Copyright 2014 Google Inc. * * Use of this source code is governed by a BSD-style license that can be * found in the LICENSE file. */ #ifndef SkMatrix22_DEFINED #define SkMatrix22_DEFINED #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); #endif