diff options
author | Ansis Brammanis <brammanis@gmail.com> | 2015-08-14 16:13:47 +0300 |
---|---|---|
committer | Ansis Brammanis <brammanis@gmail.com> | 2015-08-24 18:41:50 -0400 |
commit | f0885d36ffac6c5260ab5694cf435946641c47a1 (patch) | |
tree | edaf6d8b68653f347e8183f7db8e537b0a6b737d /src | |
parent | 2535e669e2397003d9edb10f2fe3c9645a8551c1 (diff) | |
download | qtlocation-mapboxgl-f0885d36ffac6c5260ab5694cf435946641c47a1.tar.gz |
port mat2 from gl-matrix
Diffstat (limited to 'src')
-rw-r--r-- | src/mbgl/util/mat2.cpp | 52 | ||||
-rw-r--r-- | src/mbgl/util/mat2.hpp | 41 |
2 files changed, 93 insertions, 0 deletions
diff --git a/src/mbgl/util/mat2.cpp b/src/mbgl/util/mat2.cpp new file mode 100644 index 0000000000..05900d1667 --- /dev/null +++ b/src/mbgl/util/mat2.cpp @@ -0,0 +1,52 @@ +// This is an incomplete port of http://glmatrix.net/ +// +// Copyright (c) 2013 Brandon Jones, Colin MacKenzie IV +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the +// use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it +// freely, subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; you must not claim +// that you wrote the original software. If you use this software in a +// product, an acknowledgment in the product documentation would be +// appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. + +#include <mbgl/util/mat2.hpp> + +#include <cmath> + +using namespace mbgl; + +void matrix::identity(mat2& out) { + out[0] = 1.0f; + out[1] = 0.0f; + out[2] = 0.0f; + out[3] = 1.0f; +} + +void matrix::rotate(mat2& out, const mat2& a, float rad) { + float a0 = a[0], a1 = a[1], a2 = a[2], a3 = a[3], + s = std::sin(rad), + c = std::cos(rad); + out[0] = a0 * c + a2 * s; + out[1] = a1 * c + a3 * s; + out[2] = a0 * -s + a2 * c; + out[3] = a1 * -s + a3 * c; +}; + +void matrix::scale(mat2& out, const mat2& a, float v0, float v1) { + float a0 = a[0], a1 = a[1], a2 = a[2], a3 = a[3]; + out[0] = a0 * v0; + out[1] = a1 * v0; + out[2] = a2 * v1; + out[3] = a3 * v1; +} diff --git a/src/mbgl/util/mat2.hpp b/src/mbgl/util/mat2.hpp new file mode 100644 index 0000000000..59110bf906 --- /dev/null +++ b/src/mbgl/util/mat2.hpp @@ -0,0 +1,41 @@ +// This is an incomplete port of http://glmatrix.net/ +// +// Copyright (c) 2013 Brandon Jones, Colin MacKenzie IV +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the +// use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it +// freely, subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; you must not claim +// that you wrote the original software. If you use this software in a +// product, an acknowledgment in the product documentation would be +// appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. + +#ifndef MBGL_UTIL_MAT2 +#define MBGL_UTIL_MAT2 + +#include <array> + +namespace mbgl { + +typedef std::array<float, 4> mat2; + +namespace matrix { + +void identity(mat2& out); +void rotate(mat2& out, const mat2& a, float rad); +void scale(mat2& out, const mat2& a, float v0, float v1); + +} +} + +#endif |