OLD | NEW |
1 /* | 1 /* |
2 Copyright (C) 2004, 2005, 2006 Nikolas Zimmermann <wildfox@kde.org> | 2 Copyright (C) 2004, 2005, 2006 Nikolas Zimmermann <wildfox@kde.org> |
3 2004, 2005 Rob Buis <buis@kde.org> | 3 2004, 2005 Rob Buis <buis@kde.org> |
4 2005 Eric Seidel <eric@webkit.org> | 4 2005 Eric Seidel <eric@webkit.org> |
5 | 5 |
6 This library is free software; you can redistribute it and/or | 6 This library is free software; you can redistribute it and/or |
7 modify it under the terms of the GNU Library General Public | 7 modify it under the terms of the GNU Library General Public |
8 License as published by the Free Software Foundation; either | 8 License as published by the Free Software Foundation; either |
9 version 2 of the License, or (at your option) any later version. | 9 version 2 of the License, or (at your option) any later version. |
10 | 10 |
11 This library is distributed in the hope that it will be useful, | 11 This library is distributed in the hope that it will be useful, |
12 but WITHOUT ANY WARRANTY; without even the implied warranty of | 12 but WITHOUT ANY WARRANTY; without even the implied warranty of |
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | 13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
14 Library General Public License for more details. | 14 Library General Public License for more details. |
15 | 15 |
16 You should have received a copy of the GNU Library General Public License | 16 You should have received a copy of the GNU Library General Public License |
17 aint with this library; see the file COPYING.LIB. If not, write to | 17 aint with this library; see the file COPYING.LIB. If not, write to |
18 the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, | 18 the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, |
19 Boston, MA 02110-1301, USA. | 19 Boston, MA 02110-1301, USA. |
20 */ | 20 */ |
21 | 21 |
22 #include "platform/geometry/FloatPoint3D.h" | 22 #include "platform/geometry/FloatPoint3D.h" |
23 | 23 |
24 #include "wtf/MathExtras.h" | 24 #include "wtf/MathExtras.h" |
| 25 #include "wtf/text/WTFString.h" |
25 #include <math.h> | 26 #include <math.h> |
26 | 27 |
27 namespace blink { | 28 namespace blink { |
28 | 29 |
29 void FloatPoint3D::normalize() | 30 void FloatPoint3D::normalize() |
30 { | 31 { |
31 float tempLength = length(); | 32 float tempLength = length(); |
32 | 33 |
33 if (tempLength) { | 34 if (tempLength) { |
34 m_x /= tempLength; | 35 m_x /= tempLength; |
35 m_y /= tempLength; | 36 m_y /= tempLength; |
36 m_z /= tempLength; | 37 m_z /= tempLength; |
37 } | 38 } |
38 } | 39 } |
39 | 40 |
40 float FloatPoint3D::angleBetween(const FloatPoint3D& y) const | 41 float FloatPoint3D::angleBetween(const FloatPoint3D& y) const |
41 { | 42 { |
42 float xLength = this->length(); | 43 float xLength = this->length(); |
43 float yLength = y.length(); | 44 float yLength = y.length(); |
44 | 45 |
45 if (xLength && yLength) { | 46 if (xLength && yLength) { |
46 float cosAngle = this->dot(y) / (xLength * yLength); | 47 float cosAngle = this->dot(y) / (xLength * yLength); |
47 // Due to round-off |cosAngle| can have a magnitude greater than 1. Cla
mp the value to [-1, | 48 // Due to round-off |cosAngle| can have a magnitude greater than 1. Cla
mp the value to [-1, |
48 // 1] before computing the angle. | 49 // 1] before computing the angle. |
49 return acos(clampTo(cosAngle, -1.0, 1.0)); | 50 return acos(clampTo(cosAngle, -1.0, 1.0)); |
50 } | 51 } |
51 return 0; | 52 return 0; |
52 } | 53 } |
53 | 54 |
| 55 String FloatPoint3D::toString() const |
| 56 { |
| 57 return String::format("%lg,%lg,%lg", x(), y(), z()); |
| 58 } |
| 59 |
54 } // namespace blink | 60 } // namespace blink |
55 | 61 |
OLD | NEW |