|  | /* | 
|  | * 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); |