Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'extern/carve/include/carve/rescale.hpp')
-rw-r--r--extern/carve/include/carve/rescale.hpp100
1 files changed, 0 insertions, 100 deletions
diff --git a/extern/carve/include/carve/rescale.hpp b/extern/carve/include/carve/rescale.hpp
deleted file mode 100644
index 9269d271d8e..00000000000
--- a/extern/carve/include/carve/rescale.hpp
+++ /dev/null
@@ -1,100 +0,0 @@
-// Begin License:
-// Copyright (C) 2006-2014 Tobias Sargeant (tobias.sargeant@gmail.com).
-// All rights reserved.
-//
-// This file is part of the Carve CSG Library (http://carve-csg.com/)
-//
-// This file may be used under the terms of either the GNU General
-// Public License version 2 or 3 (at your option) as published by the
-// Free Software Foundation and appearing in the files LICENSE.GPL2
-// and LICENSE.GPL3 included in the packaging of this file.
-//
-// This file is provided "AS IS" with NO WARRANTY OF ANY KIND,
-// INCLUDING THE WARRANTIES OF DESIGN, MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE.
-// End:
-
-
-#pragma once
-
-#include <carve/carve.hpp>
-
-#include <carve/vector.hpp>
-#include <carve/aabb.hpp>
-#include <carve/matrix.hpp>
-
-#include <limits>
-
-namespace carve {
- namespace rescale {
-
- template<typename T>
- T calc_scale(T max) {
- const int radix = std::numeric_limits<T>::radix;
-
- T div = T(1);
- T m = fabs(max);
- while (div < m) div *= radix;
- m *= radix;
- while (div > m) div /= radix;
- return div;
- }
-
- template<typename T>
- T calc_delta(T min, T max) {
- const int radix = std::numeric_limits<T>::radix;
-
- if (min >= T(0) || max <= T(0)) {
- bool neg = false;
- if (max <= T(0)) {
- min = -min;
- max = -max;
- std::swap(min, max);
- neg = true;
- }
- T t = T(1);
- while (t > max) t /= radix;
- while (t <= max/radix) t *= radix;
- volatile T temp = t + min;
- temp -= t;
- if (neg) temp = -temp;
- return temp;
- } else {
- return T(0);
- }
- }
-
- struct rescale {
- double dx, dy, dz, scale;
-
- void init(double minx, double miny, double minz, double maxx, double maxy, double maxz) {
- dx = calc_delta(minx, maxx); minx -= dx; maxx -= dx;
- dy = calc_delta(miny, maxy); miny -= dy; maxy -= dy;
- dz = calc_delta(minz, maxz); minz -= dz; maxz -= dz;
- scale = calc_scale(std::max(std::max(fabs(minz), fabs(maxz)),
- std::max(std::max(fabs(minx), fabs(maxx)),
- std::max(fabs(miny), fabs(maxy)))));
- }
-
- rescale(double minx, double miny, double minz, double maxx, double maxy, double maxz) {
- init(minx, miny, minz, maxx, maxy, maxz);
- }
- rescale(const carve::geom3d::Vector &min, const carve::geom3d::Vector &max) {
- init(min.x, min.y, min.z, max.x, max.y, max.z);
- }
- };
-
- struct fwd {
- rescale r;
- fwd(const rescale &_r) : r(_r) { }
- carve::geom3d::Vector operator()(const carve::geom3d::Vector &v) const { return carve::geom::VECTOR((v.x - r.dx) / r.scale, (v.y - r.dy) / r.scale, (v.z - r.dz) / r.scale); }
- };
-
- struct rev {
- rescale r;
- rev(const rescale &_r) : r(_r) { }
- carve::geom3d::Vector operator()(const carve::geom3d::Vector &v) const { return carve::geom::VECTOR((v.x * r.scale) + r.dx, (v.y * r.scale) + r.dy, (v.z * r.scale) + r.dz); }
- };
-
- }
-}