[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [43295] branches/carve_booleans: Carve booleans: update to most recent version of Carve from mercurial
Sergey Sharybin
sergey.vfx at gmail.com
Wed Jan 11 15:43:23 CET 2012
Revision: 43295
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=43295
Author: nazgul
Date: 2012-01-11 14:43:20 +0000 (Wed, 11 Jan 2012)
Log Message:
-----------
Carve booleans: update to most recent version of Carve from mercurial
- Updated bundled version of Carve library
- Updated patches applying on Carve to make it compiling nicely
- Switched CarveInterface to half-edge data structures
Modified Paths:
--------------
branches/carve_booleans/extern/carve/CMakeLists.txt
branches/carve_booleans/extern/carve/SConscript
branches/carve_booleans/extern/carve/bundle.sh
branches/carve_booleans/extern/carve/files.txt
branches/carve_booleans/extern/carve/include/carve/aabb.hpp
branches/carve_booleans/extern/carve/include/carve/aabb_impl.hpp
branches/carve_booleans/extern/carve/include/carve/carve.hpp
branches/carve_booleans/extern/carve/include/carve/classification.hpp
branches/carve_booleans/extern/carve/include/carve/collection/unordered/fallback_impl.hpp
branches/carve_booleans/extern/carve/include/carve/collection/unordered/libstdcpp_impl.hpp
branches/carve_booleans/extern/carve/include/carve/collection/unordered/tr1_impl.hpp
branches/carve_booleans/extern/carve/include/carve/collection/unordered/vcpp_impl.hpp
branches/carve_booleans/extern/carve/include/carve/collection_types.hpp
branches/carve_booleans/extern/carve/include/carve/config.h
branches/carve_booleans/extern/carve/include/carve/csg.hpp
branches/carve_booleans/extern/carve/include/carve/csg_triangulator.hpp
branches/carve_booleans/extern/carve/include/carve/debug_hooks.hpp
branches/carve_booleans/extern/carve/include/carve/exact.hpp
branches/carve_booleans/extern/carve/include/carve/faceloop.hpp
branches/carve_booleans/extern/carve/include/carve/geom.hpp
branches/carve_booleans/extern/carve/include/carve/interpolator.hpp
branches/carve_booleans/extern/carve/include/carve/intersection.hpp
branches/carve_booleans/extern/carve/include/carve/iobj.hpp
branches/carve_booleans/extern/carve/include/carve/matrix.hpp
branches/carve_booleans/extern/carve/include/carve/mesh.hpp
branches/carve_booleans/extern/carve/include/carve/mesh_impl.hpp
branches/carve_booleans/extern/carve/include/carve/mesh_simplify.hpp
branches/carve_booleans/extern/carve/include/carve/polyhedron_decl.hpp
branches/carve_booleans/extern/carve/include/carve/rtree.hpp
branches/carve_booleans/extern/carve/include/carve/tree.hpp
branches/carve_booleans/extern/carve/include/carve/triangulator_impl.hpp
branches/carve_booleans/extern/carve/include/carve/vcpp_config.h
branches/carve_booleans/extern/carve/include/carve/win32.h
branches/carve_booleans/extern/carve/lib/csg.cpp
branches/carve_booleans/extern/carve/lib/csg_collector.cpp
branches/carve_booleans/extern/carve/lib/csg_collector.hpp
branches/carve_booleans/extern/carve/lib/csg_data.hpp
branches/carve_booleans/extern/carve/lib/csg_detail.hpp
branches/carve_booleans/extern/carve/lib/intersect.cpp
branches/carve_booleans/extern/carve/lib/intersect_classify_common_impl.hpp
branches/carve_booleans/extern/carve/lib/intersect_classify_edge.cpp
branches/carve_booleans/extern/carve/lib/intersect_classify_group.cpp
branches/carve_booleans/extern/carve/lib/intersect_common.hpp
branches/carve_booleans/extern/carve/lib/intersect_face_division.cpp
branches/carve_booleans/extern/carve/lib/intersect_group.cpp
branches/carve_booleans/extern/carve/lib/intersect_half_classify_group.cpp
branches/carve_booleans/extern/carve/lib/intersection.cpp
branches/carve_booleans/extern/carve/lib/math.cpp
branches/carve_booleans/extern/carve/lib/mesh.cpp
branches/carve_booleans/extern/carve/lib/polyhedron.cpp
branches/carve_booleans/extern/carve/patches/series
branches/carve_booleans/intern/boolop/SConscript
branches/carve_booleans/intern/boolop/intern/BOP_CarveInterface.cpp
Added Paths:
-----------
branches/carve_booleans/extern/carve/include/carve/external/
branches/carve_booleans/extern/carve/include/carve/external/boost/
branches/carve_booleans/extern/carve/include/carve/external/boost/random.hpp
branches/carve_booleans/extern/carve/patches/files/
branches/carve_booleans/extern/carve/patches/files/config.h
branches/carve_booleans/extern/carve/patches/files/random.hpp
branches/carve_booleans/extern/carve/patches/includes.patch
branches/carve_booleans/extern/carve/patches/strict_flags.patch
Removed Paths:
-------------
branches/carve_booleans/extern/carve/include/carve/boost/random.hpp
branches/carve_booleans/extern/carve/patches/boost.patch
branches/carve_booleans/extern/carve/patches/collections.patch
branches/carve_booleans/extern/carve/patches/config.patch
branches/carve_booleans/extern/carve/patches/warning_fix.patch
branches/carve_booleans/extern/carve/patches/win32.patch
Modified: branches/carve_booleans/extern/carve/CMakeLists.txt
===================================================================
--- branches/carve_booleans/extern/carve/CMakeLists.txt 2012-01-11 14:23:54 UTC (rev 43294)
+++ branches/carve_booleans/extern/carve/CMakeLists.txt 2012-01-11 14:43:20 UTC (rev 43295)
@@ -1,4 +1,3 @@
-# $Id$
# ***** BEGIN GPL LICENSE BLOCK *****
#
# This program is free software; you can redistribute it and/or
@@ -24,6 +23,10 @@
#
# ***** END GPL LICENSE BLOCK *****
+# NOTE: This file is automatically generated by bundle.sh script
+# If you're doing changes in this file, please update template
+# in that script too
+
set(INC
include
)
@@ -93,7 +96,6 @@
include/carve/rtree.hpp
include/carve/math.hpp
include/carve/math_constants.hpp
- include/carve/boost/random.hpp
include/carve/octree_decl.hpp
include/carve/input.hpp
include/carve/mesh_ops.hpp
@@ -118,7 +120,6 @@
include/carve/matrix.hpp
include/carve/poly.hpp
include/carve/vector.hpp
- include/carve/config.h
include/carve/intersection.hpp
include/carve/faceloop.hpp
include/carve/geom_impl.hpp
Modified: branches/carve_booleans/extern/carve/SConscript
===================================================================
--- branches/carve_booleans/extern/carve/SConscript 2012-01-11 14:23:54 UTC (rev 43294)
+++ branches/carve_booleans/extern/carve/SConscript 2012-01-11 14:43:20 UTC (rev 43295)
@@ -1,4 +1,9 @@
#!/usr/bin/python
+
+# NOTE: This file is automatically generated by bundle.sh script
+# If you're doing changes in this file, please update template
+# in that script too
+
Import ('env')
sources = env.Glob('lib/*.cpp')
Modified: branches/carve_booleans/extern/carve/bundle.sh
===================================================================
--- branches/carve_booleans/extern/carve/bundle.sh 2012-01-11 14:23:54 UTC (rev 43294)
+++ branches/carve_booleans/extern/carve/bundle.sh 2012-01-11 14:43:20 UTC (rev 43295)
@@ -1,5 +1,10 @@
#!/bin/sh
+if [ -d ./.svn ]; then
+ echo "This script is supposed to work only when using git-svn"
+ exit 1
+fi
+
tmp=`mktemp -d`
hg clone https://code.google.com/p/carve/ $tmp/carve
@@ -23,8 +28,11 @@
headers=`find ./lib -type f -iname '*.h' -or -iname '*.hpp' | sed -r 's/^\.\//\t/'`
includes=`find ./include -type f -iname '*.h' -or -iname '*.hpp' | sed -r 's/^\.\//\t/'`
+mkdir -p include/carve/external/boost
+cp patches/files/random.hpp include/carve/external/boost/random.hpp
+cp patches/files/config.h include/carve/config.h
+
cat > CMakeLists.txt << EOF
-# \$Id\$
# ***** BEGIN GPL LICENSE BLOCK *****
#
# This program is free software; you can redistribute it and/or
@@ -50,6 +58,10 @@
#
# ***** END GPL LICENSE BLOCK *****
+# NOTE: This file is automatically generated by bundle.sh script
+# If you're doing changes in this file, please update template
+# in that script too
+
set(INC
include
)
@@ -65,17 +77,38 @@
${includes}
)
+if(WITH_BOOST)
+ add_definitions(
+ -DHAVE_BOOST_UNORDERED_COLLECTIONS
+ -DCARVE_SYSTEM_BOOST
+ )
+
+ list(APPEND INC
+ \${BOOST_INCLUDE_DIR}
+ )
+endif()
+
blender_add_lib(extern_carve "\${SRC}" "\${INC}" "\${INC_SYS}")
EOF
cat > SConscript << EOF
#!/usr/bin/python
+
+# NOTE: This file is automatically generated by bundle.sh script
+# If you're doing changes in this file, please update template
+# in that script too
+
Import ('env')
sources = env.Glob('lib/*.cpp')
-defs = ''
-incs = 'include'
+defs = []
+incs = ['include']
-env.BlenderLib ('extern_carve', Split(sources), Split(incs), Split(defs), libtype=['extern'], priority=[40] )
+if env['WITH_BF_BOOST']:
+ defs.append('HAVE_BOOST_UNORDERED_COLLECTIONS')
+ defs.append('CARVE_SYSTEM_BOOST')
+ incs.append(env['BF_BOOST_INC'])
+
+env.BlenderLib ('extern_carve', Split(sources), incs, defs, libtype=['extern'], priority=[40] )
EOF
Modified: branches/carve_booleans/extern/carve/files.txt
===================================================================
--- branches/carve_booleans/extern/carve/files.txt 2012-01-11 14:23:54 UTC (rev 43294)
+++ branches/carve_booleans/extern/carve/files.txt 2012-01-11 14:43:20 UTC (rev 43295)
@@ -24,7 +24,6 @@
include/carve/rtree.hpp
include/carve/math.hpp
include/carve/math_constants.hpp
-include/carve/boost/random.hpp
include/carve/octree_decl.hpp
include/carve/input.hpp
include/carve/mesh_ops.hpp
@@ -49,7 +48,6 @@
include/carve/matrix.hpp
include/carve/poly.hpp
include/carve/vector.hpp
-include/carve/config.h
include/carve/intersection.hpp
include/carve/faceloop.hpp
include/carve/geom_impl.hpp
Modified: branches/carve_booleans/extern/carve/include/carve/aabb.hpp
===================================================================
--- branches/carve_booleans/extern/carve/include/carve/aabb.hpp 2012-01-11 14:23:54 UTC (rev 43294)
+++ branches/carve_booleans/extern/carve/include/carve/aabb.hpp 2012-01-11 14:43:20 UTC (rev 43295)
@@ -69,6 +69,10 @@
bool intersectsLineSegment(const vector_t &v1, const vector_t &v2) const;
+ double axisSeparation(const aabb<ndim> &other, unsigned axis) const;
+
+ double maxAxisSeparation(const aabb<ndim> &other) const;
+
bool intersects(const aabb<ndim> &other) const;
bool intersects(const sphere<ndim> &s) const;
bool intersects(const plane<ndim> &plane) const;
@@ -76,6 +80,8 @@
bool intersects(tri<ndim> tri) const;
bool intersects(const linesegment<ndim> &ls) const;
+ std::pair<double, double> rangeInDirection(const carve::geom::vector<ndim> &v) const;
+
vector_t min() const;
vector_t mid() const;
vector_t max() const;
Modified: branches/carve_booleans/extern/carve/include/carve/aabb_impl.hpp
===================================================================
--- branches/carve_booleans/extern/carve/include/carve/aabb_impl.hpp 2012-01-11 14:23:54 UTC (rev 43294)
+++ branches/carve_booleans/extern/carve/include/carve/aabb_impl.hpp 2012-01-11 14:43:20 UTC (rev 43295)
@@ -175,12 +175,23 @@
}
template<unsigned ndim>
- bool aabb<ndim>::intersects(const aabb<ndim> &other) const {
- for (unsigned i = 0; i < ndim; ++i) {
- if (fabs(other.pos.v[i] - pos.v[i]) > (extent.v[i] + other.extent.v[i])) return false;
+ double aabb<ndim>::axisSeparation(const aabb<ndim> &other, unsigned axis) const {
+ return fabs(other.pos.v[axis] - pos.v[axis]) - extent.v[axis] - other.extent.v[axis];
+ }
+
+ template<unsigned ndim>
+ double aabb<ndim>::maxAxisSeparation(const aabb<ndim> &other) const {
+ double m = axisSeparation(other, 0);
+ for (unsigned i = 1; i < ndim; ++i) {
+ m = std::max(m, axisSeparation(other, i));
}
- return true;
+ return m;
}
+
+ template<unsigned ndim>
+ bool aabb<ndim>::intersects(const aabb<ndim> &other) const {
+ return maxAxisSeparation(other) <= 0.0;
+ }
template<unsigned ndim>
bool aabb<ndim>::intersects(const sphere<ndim> &s) const {
@@ -204,6 +215,14 @@
}
template<unsigned ndim>
+ std::pair<double, double> aabb<ndim>::rangeInDirection(const carve::geom::vector<ndim> &v) const {
+ double d1 = dot(v, pos);
+ double d2 = dot(abs(v), extent);
+
+ return std::make_pair(d1 - d2, d1 + d2);
+ }
+
+ template<unsigned ndim>
typename aabb<ndim>::vector_t aabb<ndim>::min() const { return pos - extent; }
template<unsigned ndim>
Deleted: branches/carve_booleans/extern/carve/include/carve/boost/random.hpp
===================================================================
--- branches/carve_booleans/extern/carve/include/carve/boost/random.hpp 2012-01-11 14:23:54 UTC (rev 43294)
+++ branches/carve_booleans/extern/carve/include/carve/boost/random.hpp 2012-01-11 14:43:20 UTC (rev 43295)
@@ -1,773 +0,0 @@
-#pragma once
-
-#include <iostream>
-#include <vector>
-#include <limits>
-#include <stdexcept>
-#include <cmath>
-#include <algorithm>
-
-#if !defined(_MSC_VER)
-#include <stdint.h>
-#endif
-
-namespace boost {
-
-// type_traits could help here, but I don't want to depend on type_traits.
-template<class T>
-struct ptr_helper
-{
- typedef T value_type;
- typedef T& reference_type;
- typedef const T& rvalue_type;
- static reference_type ref(T& r) { return r; }
- static const T& ref(const T& r) { return r; }
-};
-
-template<class T>
-struct ptr_helper<T&>
-{
- typedef T value_type;
- typedef T& reference_type;
- typedef T& rvalue_type;
- static reference_type ref(T& r) { return r; }
- static const T& ref(const T& r) { return r; }
-};
-
-template<class T>
-struct ptr_helper<T*>
-{
- typedef T value_type;
- typedef T& reference_type;
- typedef T* rvalue_type;
- static reference_type ref(T * p) { return *p; }
- static const T& ref(const T * p) { return *p; }
-};
-
-template<class UniformRandomNumberGenerator>
-class pass_through_engine
-{
-private:
- typedef ptr_helper<UniformRandomNumberGenerator> helper_type;
-
-public:
- typedef typename helper_type::value_type base_type;
- typedef typename base_type::result_type result_type;
-
- explicit pass_through_engine(UniformRandomNumberGenerator rng)
- // make argument an rvalue to avoid matching Generator& constructor
- : _rng(static_cast<typename helper_type::rvalue_type>(rng))
- { }
-
- result_type min () const { return (base().min)(); }
- result_type max () const { return (base().max)(); }
- base_type& base() { return helper_type::ref(_rng); }
- const base_type& base() const { return helper_type::ref(_rng); }
-
- result_type operator()() { return base()(); }
-
-private:
- UniformRandomNumberGenerator _rng;
-};
-
-template<class RealType>
-class new_uniform_01
-{
-public:
- typedef RealType input_type;
- typedef RealType result_type;
- // compiler-generated copy ctor and copy assignment are fine
- result_type min () const { return result_type(0); }
- result_type max () const { return result_type(1); }
- void reset() { }
-
- template<class Engine>
- result_type operator()(Engine& eng) {
- for (;;) {
- typedef typename Engine::result_type base_result;
- result_type factor = result_type(1) /
- (result_type((eng.max)()-(eng.min)()) +
- result_type(std::numeric_limits<base_result>::is_integer ? 1 : 0));
- result_type result = result_type(eng() - (eng.min)()) * factor;
- if (result < result_type(1))
- return result;
- }
- }
-
- template<class CharT, class Traits>
- friend std::basic_ostream<CharT,Traits>&
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list