| Index: cc/math_util.cc
|
| diff --git a/cc/math_util.cc b/cc/math_util.cc
|
| index 23fd588413004a28582100e174e477fe6bbcbaa6..a48dc4ec3a502e9329a051f01e5d1595a3fe1292 100644
|
| --- a/cc/math_util.cc
|
| +++ b/cc/math_util.cc
|
| @@ -6,12 +6,14 @@
|
|
|
| #include "cc/math_util.h"
|
|
|
| -#include "FloatSize.h"
|
| +#include <cmath>
|
| +#include <limits>
|
| +
|
| #include "ui/gfx/quad_f.h"
|
| #include "ui/gfx/rect.h"
|
| #include "ui/gfx/rect_conversions.h"
|
| #include "ui/gfx/rect_f.h"
|
| -#include <cmath>
|
| +#include "ui/gfx/vector2d_f.h"
|
| #include <public/WebTransformationMatrix.h>
|
|
|
| using WebKit::WebTransformationMatrix;
|
| @@ -378,19 +380,24 @@ gfx::Vector2dF MathUtil::computeTransform2dScaleComponents(const WebTransformati
|
| return gfx::Vector2dF(xScale, yScale);
|
| }
|
|
|
| -float MathUtil::smallestAngleBetweenVectors(const FloatSize& v1, const FloatSize& v2)
|
| +static inline double rad2deg(double r)
|
| +{
|
| + double pi = 3.14159265358979323846;
|
| + return r * 180.0 / pi;
|
| +}
|
| +
|
| +float MathUtil::smallestAngleBetweenVectors(gfx::Vector2dF v1, gfx::Vector2dF v2)
|
| {
|
| - float dotProduct = (v1.width() * v2.width() + v1.height() * v2.height()) / (v1.diagonalLength() * v2.diagonalLength());
|
| + double dotProduct = gfx::DotProduct(v1, v2) / v1.Length() / v2.Length();
|
| // Clamp to compensate for rounding errors.
|
| - dotProduct = std::max(-1.f, std::min(1.f, dotProduct));
|
| - return rad2deg(acosf(dotProduct));
|
| + dotProduct = std::max(-1.0, std::min(1.0, dotProduct));
|
| + return static_cast<float>(rad2deg(std::acos(dotProduct)));
|
| }
|
|
|
| -FloatSize MathUtil::projectVector(const FloatSize& source, const FloatSize& destination)
|
| +gfx::Vector2dF MathUtil::projectVector(gfx::Vector2dF source, gfx::Vector2dF destination)
|
| {
|
| - float sourceDotDestination = source.width() * destination.width() + source.height() * destination.height();
|
| - float projectedLength = sourceDotDestination / destination.diagonalLengthSquared();
|
| - return FloatSize(projectedLength * destination.width(), projectedLength * destination.height());
|
| + float projectedLength = gfx::DotProduct(source, destination) / destination.LengthSquared();
|
| + return gfx::Vector2dF(projectedLength * destination.x(), projectedLength * destination.y());
|
| }
|
|
|
| } // namespace cc
|
|
|