Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "ui/gfx/geometry/quad_f.h" | 5 #include "ui/gfx/geometry/quad_f.h" |
| 6 | 6 |
| 7 #include <limits> | 7 #include <limits> |
| 8 | 8 |
| 9 #include "base/strings/stringprintf.h" | 9 #include "base/strings/stringprintf.h" |
| 10 | 10 |
| (...skipping 27 matching lines...) Expand all Loading... | |
| 38 } | 38 } |
| 39 | 39 |
| 40 bool QuadF::IsCounterClockwise() const { | 40 bool QuadF::IsCounterClockwise() const { |
| 41 // This math computes the signed area of the quad. Positive area | 41 // This math computes the signed area of the quad. Positive area |
| 42 // indicates the quad is clockwise; negative area indicates the quad is | 42 // indicates the quad is clockwise; negative area indicates the quad is |
| 43 // counter-clockwise. Note carefully: this is backwards from conventional | 43 // counter-clockwise. Note carefully: this is backwards from conventional |
| 44 // math because our geometric space uses screen coordiantes with y-axis | 44 // math because our geometric space uses screen coordiantes with y-axis |
| 45 // pointing downards. | 45 // pointing downards. |
| 46 // Reference: http://mathworld.wolfram.com/PolygonArea.html | 46 // Reference: http://mathworld.wolfram.com/PolygonArea.html |
| 47 | 47 |
| 48 float tmp1 = p2_.y() - p4_.y(); | |
|
danakj
2014/08/11 14:18:49
how about naming this p24 or something more descri
kui.zheng
2014/08/12 04:20:55
Done.
| |
| 49 float tmp2 = p3_.y() - p1_.y(); | |
|
danakj
2014/08/11 14:18:49
ditto
kui.zheng
2014/08/12 04:20:55
Done.
| |
| 50 | |
| 48 // Up-cast to double so this cannot overflow. | 51 // Up-cast to double so this cannot overflow. |
| 49 double determinant1 = static_cast<double>(p1_.x()) * p2_.y() | 52 double determinant1 = static_cast<double>(p1_.x()) * tmp1; |
|
Ian Vollick
2014/08/11 14:39:09
If I'm understanding things, determinant1 here is
kui.zheng
2014/08/12 04:20:55
Right, This patch just refactoring the computation
| |
| 50 - static_cast<double>(p2_.x()) * p1_.y(); | 53 double determinant2 = static_cast<double>(p2_.x()) * tmp2; |
| 51 double determinant2 = static_cast<double>(p2_.x()) * p3_.y() | 54 double determinant3 = static_cast<double>(p3_.x()) * tmp1; |
| 52 - static_cast<double>(p3_.x()) * p2_.y(); | 55 double determinant4 = static_cast<double>(p4_.x()) * tmp2; |
| 53 double determinant3 = static_cast<double>(p3_.x()) * p4_.y() | |
| 54 - static_cast<double>(p4_.x()) * p3_.y(); | |
| 55 double determinant4 = static_cast<double>(p4_.x()) * p1_.y() | |
| 56 - static_cast<double>(p1_.x()) * p4_.y(); | |
| 57 | 56 |
| 58 return determinant1 + determinant2 + determinant3 + determinant4 < 0; | 57 return determinant1 + determinant2 < determinant3 + determinant4; |
| 59 } | 58 } |
| 60 | 59 |
| 61 static inline bool PointIsInTriangle(const PointF& point, | 60 static inline bool PointIsInTriangle(const PointF& point, |
| 62 const PointF& r1, | 61 const PointF& r1, |
| 63 const PointF& r2, | 62 const PointF& r2, |
| 64 const PointF& r3) { | 63 const PointF& r3) { |
| 65 // Compute the barycentric coordinates (u, v, w) of |point| relative to the | 64 // Compute the barycentric coordinates (u, v, w) of |point| relative to the |
| 66 // triangle (r1, r2, r3) by the solving the system of equations: | 65 // triangle (r1, r2, r3) by the solving the system of equations: |
| 67 // 1) point = u * r1 + v * r2 + w * r3 | 66 // 1) point = u * r1 + v * r2 + w * r3 |
| 68 // 2) u + v + w = 1 | 67 // 2) u + v + w = 1 |
| (...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 114 return result; | 113 return result; |
| 115 } | 114 } |
| 116 | 115 |
| 117 QuadF operator-(const QuadF& lhs, const Vector2dF& rhs) { | 116 QuadF operator-(const QuadF& lhs, const Vector2dF& rhs) { |
| 118 QuadF result = lhs; | 117 QuadF result = lhs; |
| 119 result -= rhs; | 118 result -= rhs; |
| 120 return result; | 119 return result; |
| 121 } | 120 } |
| 122 | 121 |
| 123 } // namespace gfx | 122 } // namespace gfx |
| OLD | NEW |