Update to Blender 2.69. Add fixes for building with Clang, either from

upstream or submitted for upstream. Import changes:

A new hidden wire display option was added to help with retopology. Mesh
Bisect is a new tool to cut meshes in half. The Bridge, Edgenet fill,
Grid fill and Symmetrize tools were improved. New curve and lattice
editing tools were added too.

Hair rendering was improved with a new Hair shader and reorganized
settings. Subsurface scattering uses a new sampling algorithm and now
supports bump mapping and texture blurring. Sky rendering now uses a
more accurate sky model. New blackbody, vector transform and HSV nodes
were added. The non-progressive integrator was renamed to Branched Path
Integrator, and is now available for GPU rendering.

The Motion tracker now supports plane tracking, which can be used to
replace billboards, screens and other flat things in footage.

Lists in the user interface can now be resized, sorted and filtered.
Further there are small improvements for vertex parenting, empty
objects, the shrinkwrap modifier, mask editing, armatures, f-curves and
drivers.

FBX Import support has been added and FBX/OBJ can now export split
normals (without the need for the edge split modifier).

In addition to the new features, over 270 bugs that existed in previous
releases have been fixed.
This commit is contained in:
joerg 2014-01-10 20:06:46 +00:00
parent 31b35cd438
commit 877c39bd77
22 changed files with 1931 additions and 1289 deletions

View file

@ -1,7 +1,6 @@
# $NetBSD: Makefile,v 1.100 2013/12/27 01:59:42 dholland Exp $
# $NetBSD: Makefile,v 1.101 2014/01/10 20:06:46 joerg Exp $
DISTNAME= blender-2.68a
PKGREVISION= 3
DISTNAME= blender-2.69
CATEGORIES= graphics
MASTER_SITES= http://download.blender.org/source/
@ -24,12 +23,9 @@ FIND_PREFIX:= SCONSDIR=scons
INSTALLATION_DIRS= bin share/blender
.if ${OPSYS} == "NetBSD"
# This doesn't seem right...
.if !empty(OS_VERSION:M6.99.*) || !empty(OS_VERSION:M7.*)
.if ${OPSYS} == "NetBSD" && exists(/usr/include/execinfo.h)
LDFLAGS+= -lexecinfo
.endif
.endif
# To pass LDFLAGS to compiler/linker
MYLDFLAGS= `printf "'%s'," ${LDFLAGS} | sed -e 's:,$$::'`
@ -68,8 +64,8 @@ do-build:
# build is done in install phase.
do-install:
cd ${WRKSRC} && \
${SCONSDIR}/bin/scons ${SCONS_ARGS}
cd ${WRKSRC:Q} && ${PKGSRC_SETENV} ${MAKE_ENV} \
${SCONSDIR}/bin/scons ${SCONS_ARGS} ${_MAKE_JOBS}
CHECK_INTERPRETER_SKIP= share/blender/${DISTNAME:S/blender-//:C/[a-z]//}/scripts/*.py share/blender/${DISTNAME:S/blender-//:C/[a-z]//}datafiles/*.py \
share/blender/${DISTNAME:S/blender-//:C/[a-z]//}/python/lib/python3.3/venv/scripts/posix/pydoc

File diff suppressed because it is too large Load diff

View file

@ -1,16 +1,33 @@
$NetBSD: distinfo,v 1.38 2013/10/12 22:11:00 ryoon Exp $
$NetBSD: distinfo,v 1.39 2014/01/10 20:06:46 joerg Exp $
SHA1 (blender-2.68a.tar.gz) = b01e73b560c791f5a6086deaed6072ef5f8dd3b3
RMD160 (blender-2.68a.tar.gz) = ee451f735f0814e067f178097d95eb5d89592fee
Size (blender-2.68a.tar.gz) = 40042207 bytes
SHA1 (patch-ab) = 2541584b0a4317f32558f581649a8c5c9ac427b7
SHA1 (patch-build__files_scons_config_netbsd6-config.py) = 520fa968b4f1f9f10adb1055803e05dafc96f0fe
SHA1 (blender-2.69.tar.gz) = 9500410d2457d99e685ca506bec12851454dc5d4
RMD160 (blender-2.69.tar.gz) = 27997d071a767630baeaddc0017e19dccb99b1a9
Size (blender-2.69.tar.gz) = 41274518 bytes
SHA1 (patch-ab) = f752ba279aed273bb5c93ede64c2d7292f33fd83
SHA1 (patch-build__files_scons_config_netbsd6-config.py) = a2ef239cc40430a5eaafd006b423e7f70ac9ee80
SHA1 (patch-build__files_scons_tools_btools.py) = 09fe67666091daafcf586aa70dc19fa6964b2098
SHA1 (patch-doc_python__api_sphinx__doc__gen.sh) = 52c9ee0e0c73b9b9628a3d82292a9588ff0060da
SHA1 (patch-extern_carve_lib_triangulator.cpp) = ad539e2f04a3b181504c4a9135f106189fccbda0
SHA1 (patch-extern_libmv_libmv_numeric_numeric.h) = 37649c996eda56c2a6e0776b9933df28fac645e3
SHA1 (patch-extern_libmv_libmv_tracking_brute__region__tracker.cc) = be5fe12d44221bde94326cccb30316bcf29f9aba
SHA1 (patch-extern_libmv_third__party_ceres_internal_ceres_collections__port.h) = 5a276e652ad222aca3ff626da4b4850e5043672c
SHA1 (patch-extern_libmv_third__party_glog_src_config.h) = d889d56d47167222ab54fad1c8f87c7ddb02852a
SHA1 (patch-extern_libmv_third__party_glog_src_config__netbsd.h) = 423dda12bb5871f810938666c0267ac73b3f856e
SHA1 (patch-extern_libmv_third__party_glog_src_utilities.h) = 32fea10d935621ef0529fe56b3e857685fbc5d1f
SHA1 (patch-extern_rangetree_range__tree.hh) = 976881b9caad67a2cfb24039652e887867fa6cc0
SHA1 (patch-intern_cycles_util_util__types.h) = 85624299d7b3ed354ba06406c9022393a448ad54
SHA1 (patch-intern_ghost_SConscript) = 84dad76663e6dfc3bd6636fe8924921fe04caa2f
SHA1 (patch-intern_itasc_Armature.cpp) = ee841eff87e7cb85657868246285644994263fa2
SHA1 (patch-intern_itasc_kdl_frameacc.hpp) = 06c5b13e889968b87513ff8ad7952b34173147de
SHA1 (patch-intern_itasc_kdl_frames.hpp) = afcf3d74e50e12d4b8b2efd9b6d2fdfbee8fc629
SHA1 (patch-intern_itasc_kdl_framevel.hpp) = fbf4accd352be468d3bdc039e315a86ce42010bd
SHA1 (patch-intern_itasc_kdl_jacobian.hpp) = 490f67d9938e321b41c4bd93ccca06fe0c2d920a
SHA1 (patch-intern_itasc_kdl_jntarray.hpp) = ff1b5befef08c8a7eb7f542a01305854b303156d
SHA1 (patch-intern_itasc_kdl_jntarrayacc.hpp) = 05088dc8422c7fef2c7d80fd32547e8c46fb1158
SHA1 (patch-intern_itasc_kdl_jntarrayvel.hpp) = 5673396e00d984448543959064a0d44e23baa09b
SHA1 (patch-intern_itasc_kdl_tree.cpp) = 15d3b38b8a936c40726407ec17ee4c2dc7e0ac53
SHA1 (patch-intern_itasc_kdl_tree.hpp) = 776b17eb67e4a619539d41c680b221d3c6f57dc8
SHA1 (patch-intern_itasc_kdl_treefksolverpos__recursive.cpp) = bed5ba3ac0578161f35b561a6d4d1595ca085b88
SHA1 (patch-intern_itasc_kdl_treefksolverpos__recursive.hpp) = da02d9c1bfe1f5825b1afded32ac1b1400613c08
SHA1 (patch-intern_itasc_kdl_treejnttojacsolver.cpp) = bde39ea3c0b56cfbc7836cf5a30b94b7adbdfaff
SHA1 (patch-user-config.py) = a3cf1a22185496f13b068a31d4b9638c8821f941

View file

@ -1,6 +1,6 @@
$NetBSD: patch-ab,v 1.11 2013/10/12 22:11:00 ryoon Exp $
$NetBSD: patch-ab,v 1.12 2014/01/10 20:06:46 joerg Exp $
--- source/blender/blenlib/intern/storage.c.orig 2013-04-25 16:35:57.000000000 +0000
--- source/blender/blenlib/intern/storage.c.orig 2013-08-20 08:33:04.000000000 +0000
+++ source/blender/blenlib/intern/storage.c
@@ -42,13 +42,13 @@
#include <time.h>
@ -9,7 +9,7 @@ $NetBSD: patch-ab,v 1.11 2013/10/12 22:11:00 ryoon Exp $
-#if defined(__sun__) || defined(__sun) || defined(__NetBSD__)
+#if defined(__sun__) || defined(__sun) || defined(__NetBSD__) || defined(__DragonFly__)
# include <sys/statvfs.h> /* Other modern unix os's should probably use this also */
#elif !defined(__FreeBSD__) && !defined(linux) && (defined(__sparc) || defined(__sparc__))
#elif !defined(__FreeBSD__) && !defined(__linux__) && (defined(__sparc) || defined(__sparc__))
# include <sys/statfs.h>
#endif
@ -18,7 +18,7 @@ $NetBSD: patch-ab,v 1.11 2013/10/12 22:11:00 ryoon Exp $
# include <sys/param.h>
# include <sys/mount.h>
#endif
@@ -173,7 +173,7 @@ double BLI_dir_free_space(const char *di
@@ -172,7 +172,7 @@ double BLI_dir_free_space(const char *di
return (double) (freec * bytesps * sectorspc);
#else
@ -27,12 +27,12 @@ $NetBSD: patch-ab,v 1.11 2013/10/12 22:11:00 ryoon Exp $
struct statvfs disk;
#else
struct statfs disk;
@@ -198,7 +198,7 @@ double BLI_dir_free_space(const char *di
@@ -197,7 +197,7 @@ double BLI_dir_free_space(const char *di
if (statfs(name, &disk)) return(-1);
#endif
-#if defined(__sun__) || defined(__sun) || defined(__NetBSD__)
+#if defined(__sun__) || defined(__sun) || defined(__NetBSD__) || defined(__DragonFly__)
if (statvfs(name, &disk)) return(-1);
#elif !defined(__FreeBSD__) && !defined(linux) && (defined(__sparc) || defined(__sparc__))
#elif !defined(__FreeBSD__) && !defined(__linux__) && (defined(__sparc) || defined(__sparc__))
/* WARNING - This may not be supported by geeneric unix os's - Campbell */

View file

@ -1,8 +1,8 @@
$NetBSD: patch-build__files_scons_config_netbsd6-config.py,v 1.2 2013/01/02 02:22:08 ryoon Exp $
$NetBSD: patch-build__files_scons_config_netbsd6-config.py,v 1.3 2014/01/10 20:06:46 joerg Exp $
* config file for NetBSD 6
--- build_files/scons/config/netbsd6-config.py.orig 2012-12-22 20:01:05.000000000 +0000
--- build_files/scons/config/netbsd6-config.py.orig 2013-11-20 14:12:04.000000000 +0000
+++ build_files/scons/config/netbsd6-config.py
@@ -0,0 +1,227 @@
+CC = 'gcc'
@ -185,7 +185,7 @@ $NetBSD: patch-build__files_scons_config_netbsd6-config.py,v 1.2 2013/01/02 02:2
+BF_BOOST_LIB_INTERNATIONAL = 'boost_locale'
+BF_BOOST_LIBPATH = BF_BOOST + '/lib'
+
+WITH_BF_OPENMP = True
+WITH_BF_OPENMP = False
+
+WITH_GHOST_XDND = False
+

View file

@ -0,0 +1,13 @@
$NetBSD: patch-extern_carve_lib_triangulator.cpp,v 1.1 2014/01/10 20:06:46 joerg Exp $
--- extern/carve/lib/triangulator.cpp.orig 2013-11-20 21:53:04.000000000 +0000
+++ extern/carve/lib/triangulator.cpp
@@ -122,7 +122,7 @@ namespace {
std::vector<vertex_info *> queue;
void checkheap() {
-#ifdef __GNUC__
+#if defined(__GNUC__) && !defined(_LIBCPP_VERSION)
CARVE_ASSERT(std::__is_heap(queue.begin(), queue.end(), vertex_info_ordering()));
#endif
}

View file

@ -0,0 +1,44 @@
$NetBSD: patch-extern_libmv_third__party_ceres_internal_ceres_collections__port.h,v 1.1 2014/01/10 20:06:46 joerg Exp $
--- extern/libmv/third_party/ceres/internal/ceres/collections_port.h.orig 2013-11-20 21:36:24.000000000 +0000
+++ extern/libmv/third_party/ceres/internal/ceres/collections_port.h
@@ -33,11 +33,13 @@
#ifndef CERES_INTERNAL_COLLECTIONS_PORT_H_
#define CERES_INTERNAL_COLLECTIONS_PORT_H_
+#include <cstddef>
+
#if defined(CERES_NO_TR1)
# include <map>
# include <set>
#else
-# if defined(_MSC_VER)
+# if defined(_MSC_VER) || defined(_LIBCPP_VERSION) || __cplusplus >= 201103L
# include <unordered_map>
# include <unordered_set>
# else
@@ -71,11 +73,24 @@ struct HashSet : set<K> {};
namespace ceres {
namespace internal {
+#if defined(_LIBCPP_VERSION) || __cplusplus >= 201103L
+#undef CERES_HASH_NAMESPACE_START
+#define CERES_HASH_NAMESPACE_START namespace std {
+#undef CERES_HASH_NAMESPACE_END
+#define CERES_HASH_NAMESPACE_END }
+
+template<typename K, typename V>
+struct HashMap : std::unordered_map<K, V> {};
+
+template<typename K>
+struct HashSet : std::unordered_set<K> {};
+#else
template<typename K, typename V>
struct HashMap : std::tr1::unordered_map<K, V> {};
template<typename K>
struct HashSet : std::tr1::unordered_set<K> {};
+#endif
#if defined(_WIN32) && !defined(__MINGW64__) && !defined(__MINGW32__)
#define GG_LONGLONG(x) x##I64

View file

@ -0,0 +1,17 @@
$NetBSD: patch-extern_rangetree_range__tree.hh,v 1.1 2014/01/10 20:06:46 joerg Exp $
--- extern/rangetree/range_tree.hh.orig 2013-11-20 21:28:30.000000000 +0000
+++ extern/rangetree/range_tree.hh
@@ -39,9 +39,9 @@ struct RangeTree {
return max < v.min;
}
- const T min;
- const T max;
- const bool single;
+ T min;
+ T max;
+ bool single;
};
typedef std::set<Range> Tree;

View file

@ -0,0 +1,14 @@
$NetBSD: patch-intern_cycles_util_util__types.h,v 1.1 2014/01/10 20:06:46 joerg Exp $
--- intern/cycles/util/util_types.h.orig 2013-11-20 21:10:53.000000000 +0000
+++ intern/cycles/util/util_types.h
@@ -26,6 +26,9 @@
/* Qualifiers for kernel code shared by CPU and GPU */
#ifndef __KERNEL_GPU__
+#ifdef __cplusplus
+#include <locale>
+#endif
#define __device static inline
#define __device_noinline static

View file

@ -0,0 +1,13 @@
$NetBSD: patch-intern_itasc_Armature.cpp,v 1.1 2014/01/10 20:06:46 joerg Exp $
--- intern/itasc/Armature.cpp.orig 2013-03-18 11:44:56.000000000 +0000
+++ intern/itasc/Armature.cpp
@@ -402,7 +402,7 @@ bool Armature::finalize()
m_armlength = 0.0;
for (i=0; i<m_neffector; i++) {
length = 0.0;
- KDL::SegmentMap::const_iterator sit = m_tree.getSegment(m_effectors[i].name);
+ KDL::SegmentMap::value_type const *sit = m_tree.getSegmentPtr(m_effectors[i].name);
while (sit->first != "root") {
Frame tip = sit->second.segment.pose(m_qKdl(sit->second.q_nr));
length += tip.p.Norm();

View file

@ -0,0 +1,94 @@
$NetBSD: patch-intern_itasc_kdl_frameacc.hpp,v 1.1 2014/01/10 20:06:46 joerg Exp $
--- intern/itasc/kdl/frameacc.hpp.orig 2013-11-20 15:03:18.000000000 +0000
+++ intern/itasc/kdl/frameacc.hpp
@@ -78,15 +78,18 @@ public:
IMETHOD friend VectorAcc operator / (const VectorAcc& r2,const doubleAcc& r1);
- IMETHOD friend bool Equal(const VectorAcc& r1,const VectorAcc& r2,double eps=epsilon);
- IMETHOD friend bool Equal(const Vector& r1,const VectorAcc& r2,double eps=epsilon);
- IMETHOD friend bool Equal(const VectorAcc& r1,const Vector& r2,double eps=epsilon);
+ IMETHOD friend bool Equal(const VectorAcc& r1,const VectorAcc& r2,double eps);
+ IMETHOD friend bool Equal(const Vector& r1,const VectorAcc& r2,double eps);
+ IMETHOD friend bool Equal(const VectorAcc& r1,const Vector& r2,double eps);
IMETHOD friend VectorAcc operator - (const VectorAcc& r);
IMETHOD friend doubleAcc dot(const VectorAcc& lhs,const VectorAcc& rhs);
IMETHOD friend doubleAcc dot(const VectorAcc& lhs,const Vector& rhs);
IMETHOD friend doubleAcc dot(const Vector& lhs,const VectorAcc& rhs);
};
+bool Equal(const VectorAcc& r1,const VectorAcc& r2,double eps=epsilon);
+bool Equal(const Vector& r1,const VectorAcc& r2,double eps=epsilon);
+bool Equal(const VectorAcc& r1,const Vector& r2,double eps=epsilon);
class RotationAcc
@@ -132,15 +135,18 @@ public:
IMETHOD friend RotationAcc operator* (const RotationAcc& r1,const RotationAcc& r2);
IMETHOD friend RotationAcc operator* (const Rotation& r1,const RotationAcc& r2);
IMETHOD friend RotationAcc operator* (const RotationAcc& r1,const Rotation& r2);
- IMETHOD friend bool Equal(const RotationAcc& r1,const RotationAcc& r2,double eps=epsilon);
- IMETHOD friend bool Equal(const Rotation& r1,const RotationAcc& r2,double eps=epsilon);
- IMETHOD friend bool Equal(const RotationAcc& r1,const Rotation& r2,double eps=epsilon);
+ IMETHOD friend bool Equal(const RotationAcc& r1,const RotationAcc& r2,double eps);
+ IMETHOD friend bool Equal(const Rotation& r1,const RotationAcc& r2,double eps);
+ IMETHOD friend bool Equal(const RotationAcc& r1,const Rotation& r2,double eps);
IMETHOD TwistAcc Inverse(const TwistAcc& arg) const;
IMETHOD TwistAcc Inverse(const Twist& arg) const;
IMETHOD TwistAcc operator * (const TwistAcc& arg) const;
IMETHOD TwistAcc operator * (const Twist& arg) const;
};
+bool Equal(const RotationAcc& r1,const RotationAcc& r2,double eps=epsilon);
+bool Equal(const Rotation& r1,const RotationAcc& r2,double eps=epsilon);
+bool Equal(const RotationAcc& r1,const Rotation& r2,double eps=epsilon);
@@ -170,9 +176,9 @@ public:
IMETHOD friend FrameAcc operator * (const FrameAcc& f1,const FrameAcc& f2);
IMETHOD friend FrameAcc operator * (const Frame& f1,const FrameAcc& f2);
IMETHOD friend FrameAcc operator * (const FrameAcc& f1,const Frame& f2);
- IMETHOD friend bool Equal(const FrameAcc& r1,const FrameAcc& r2,double eps=epsilon);
- IMETHOD friend bool Equal(const Frame& r1,const FrameAcc& r2,double eps=epsilon);
- IMETHOD friend bool Equal(const FrameAcc& r1,const Frame& r2,double eps=epsilon);
+ IMETHOD friend bool Equal(const FrameAcc& r1,const FrameAcc& r2,double eps);
+ IMETHOD friend bool Equal(const Frame& r1,const FrameAcc& r2,double eps);
+ IMETHOD friend bool Equal(const FrameAcc& r1,const Frame& r2,double eps);
IMETHOD TwistAcc Inverse(const TwistAcc& arg) const;
IMETHOD TwistAcc Inverse(const Twist& arg) const;
@@ -180,6 +186,9 @@ public:
IMETHOD TwistAcc operator * (const Twist& arg) const;
};
+bool Equal(const FrameAcc& r1,const FrameAcc& r2,double eps=epsilon);
+bool Equal(const Frame& r1,const FrameAcc& r2,double eps=epsilon);
+bool Equal(const FrameAcc& r1,const Frame& r2,double eps=epsilon);
@@ -226,9 +235,9 @@ public:
// the new point.
// Complexity : 6M+6A
- IMETHOD friend bool Equal(const TwistAcc& a,const TwistAcc& b,double eps=epsilon);
- IMETHOD friend bool Equal(const Twist& a,const TwistAcc& b,double eps=epsilon);
- IMETHOD friend bool Equal(const TwistAcc& a,const Twist& b,double eps=epsilon);
+ IMETHOD friend bool Equal(const TwistAcc& a,const TwistAcc& b,double eps);
+ IMETHOD friend bool Equal(const Twist& a,const TwistAcc& b,double eps);
+ IMETHOD friend bool Equal(const TwistAcc& a,const Twist& b,double eps);
IMETHOD Twist GetTwist() const;
@@ -239,6 +248,9 @@ public:
};
+bool Equal(const TwistAcc& a,const TwistAcc& b,double eps=epsilon);
+bool Equal(const Twist& a,const TwistAcc& b,double eps=epsilon);
+bool Equal(const TwistAcc& a,const Twist& b,double eps=epsilon);

View file

@ -0,0 +1,93 @@
$NetBSD: patch-intern_itasc_kdl_frames.hpp,v 1.1 2014/01/10 20:06:46 joerg Exp $
--- intern/itasc/kdl/frames.hpp.orig 2013-11-20 14:46:29.000000000 +0000
+++ intern/itasc/kdl/frames.hpp
@@ -248,10 +248,10 @@ public:
//! do not use operator == because the definition of Equal(.,.) is slightly
//! different. It compares whether the 2 arguments are equal in an eps-interval
- inline friend bool Equal(const Vector& a,const Vector& b,double eps=epsilon);
+ inline friend bool Equal(const Vector& a,const Vector& b,double eps);
//! return a normalized vector
- inline friend Vector Normalize(const Vector& a, double eps=epsilon);
+ inline friend Vector Normalize(const Vector& a, double eps);
//! The literal equality operator==(), also identical.
inline friend bool operator==(const Vector& a,const Vector& b);
@@ -502,7 +502,7 @@ public:
//! do not use operator == because the definition of Equal(.,.) is slightly
//! different. It compares whether the 2 arguments are equal in an eps-interval
- friend bool Equal(const Rotation& a,const Rotation& b,double eps=epsilon);
+ friend bool Equal(const Rotation& a,const Rotation& b,double eps);
//! The literal equality operator==(), also identical.
friend bool operator==(const Rotation& a,const Rotation& b);
@@ -663,7 +663,7 @@ public:
//! do not use operator == because the definition of Equal(.,.) is slightly
//! different. It compares whether the 2 arguments are equal in an eps-interval
- inline friend bool Equal(const Frame& a,const Frame& b,double eps=epsilon);
+ inline friend bool Equal(const Frame& a,const Frame& b,double eps);
//! The literal equality operator==(), also identical.
inline friend bool operator==(const Frame& a,const Frame& b);
@@ -735,7 +735,7 @@ public:
//! do not use operator == because the definition of Equal(.,.) is slightly
//! different. It compares whether the 2 arguments are equal in an eps-interval
- inline friend bool Equal(const Twist& a,const Twist& b,double eps=epsilon);
+ inline friend bool Equal(const Twist& a,const Twist& b,double eps);
//! The literal equality operator==(), also identical.
inline friend bool operator==(const Twist& a,const Twist& b);
@@ -898,7 +898,7 @@ public:
//! do not use operator == because the definition of Equal(.,.) is slightly
//! different. It compares whether the 2 arguments are equal in an eps-interval
- inline friend bool Equal(const Wrench& a,const Wrench& b,double eps=epsilon);
+ inline friend bool Equal(const Wrench& a,const Wrench& b,double eps);
//! The literal equality operator==(), also identical.
inline friend bool operator==(const Wrench& a,const Wrench& b);
@@ -979,7 +979,7 @@ public:
//! do not use operator == because the definition of Equal(.,.) is slightly
//! different. It compares whether the 2 arguments are equal in an eps-interval
- inline friend bool Equal(const Vector2& a,const Vector2& b,double eps=epsilon);
+ inline friend bool Equal(const Vector2& a,const Vector2& b,double eps);
friend class Rotation2;
};
@@ -1026,7 +1026,7 @@ public:
//! do not use operator == because the definition of Equal(.,.) is slightly
//! different. It compares whether the 2 arguments are equal in an eps-interval
- inline friend bool Equal(const Rotation2& a,const Rotation2& b,double eps=epsilon);
+ inline friend bool Equal(const Rotation2& a,const Rotation2& b,double eps);
};
//! A 2D frame class, for further documentation see the Frames class
@@ -1067,9 +1067,20 @@ public:
tmp.SetIdentity();
return tmp;
}
- inline friend bool Equal(const Frame2& a,const Frame2& b,double eps=epsilon);
+ inline friend bool Equal(const Frame2& a,const Frame2& b,double eps);
};
+
+Vector Normalize(const Vector& a, double eps=epsilon);
+bool Equal(const Vector& a,const Vector& b,double eps=epsilon);
+bool Equal(const Rotation& a,const Rotation& b,double eps=epsilon);
+bool Equal(const Frame& a,const Frame& b,double eps=epsilon);
+bool Equal(const Twist& a,const Twist& b,double eps=epsilon);
+bool Equal(const Wrench& a,const Wrench& b,double eps=epsilon);
+bool Equal(const Vector2& a,const Vector2& b,double eps=epsilon);
+bool Equal(const Rotation2& a,const Rotation2& b,double eps=epsilon);
+bool Equal(const Frame2& a,const Frame2& b,double eps=epsilon);
+
IMETHOD Vector diff(const Vector& a,const Vector& b,double dt=1);
IMETHOD Vector diff(const Rotation& R_a_b1,const Rotation& R_a_b2,double dt=1);
IMETHOD Twist diff(const Frame& F_a_b1,const Frame& F_a_b2,double dt=1);

View file

@ -0,0 +1,96 @@
$NetBSD: patch-intern_itasc_kdl_framevel.hpp,v 1.1 2014/01/10 20:06:46 joerg Exp $
--- intern/itasc/kdl/framevel.hpp.orig 2013-11-20 14:52:47.000000000 +0000
+++ intern/itasc/kdl/framevel.hpp
@@ -110,15 +110,18 @@ public:
IMETHOD friend void SetToZero(VectorVel& v);
- IMETHOD friend bool Equal(const VectorVel& r1,const VectorVel& r2,double eps=epsilon);
- IMETHOD friend bool Equal(const Vector& r1,const VectorVel& r2,double eps=epsilon);
- IMETHOD friend bool Equal(const VectorVel& r1,const Vector& r2,double eps=epsilon);
+ IMETHOD friend bool Equal(const VectorVel& r1,const VectorVel& r2,double eps);
+ IMETHOD friend bool Equal(const Vector& r1,const VectorVel& r2,double eps);
+ IMETHOD friend bool Equal(const VectorVel& r1,const Vector& r2,double eps);
IMETHOD friend VectorVel operator - (const VectorVel& r);
IMETHOD friend doubleVel dot(const VectorVel& lhs,const VectorVel& rhs);
IMETHOD friend doubleVel dot(const VectorVel& lhs,const Vector& rhs);
IMETHOD friend doubleVel dot(const Vector& lhs,const VectorVel& rhs);
};
+bool Equal(const VectorVel& r1,const VectorVel& r2,double eps=epsilon);
+bool Equal(const Vector& r1,const VectorVel& r2,double eps=epsilon);
+bool Equal(const VectorVel& r1,const Vector& r2,double eps=epsilon);
class RotationVel
@@ -166,9 +169,9 @@ public:
IMETHOD friend RotationVel operator* (const RotationVel& r1,const RotationVel& r2);
IMETHOD friend RotationVel operator* (const Rotation& r1,const RotationVel& r2);
IMETHOD friend RotationVel operator* (const RotationVel& r1,const Rotation& r2);
- IMETHOD friend bool Equal(const RotationVel& r1,const RotationVel& r2,double eps=epsilon);
- IMETHOD friend bool Equal(const Rotation& r1,const RotationVel& r2,double eps=epsilon);
- IMETHOD friend bool Equal(const RotationVel& r1,const Rotation& r2,double eps=epsilon);
+ IMETHOD friend bool Equal(const RotationVel& r1,const RotationVel& r2,double eps);
+ IMETHOD friend bool Equal(const Rotation& r1,const RotationVel& r2,double eps);
+ IMETHOD friend bool Equal(const RotationVel& r1,const Rotation& r2,double eps);
IMETHOD TwistVel Inverse(const TwistVel& arg) const;
IMETHOD TwistVel Inverse(const Twist& arg) const;
@@ -176,6 +179,9 @@ public:
IMETHOD TwistVel operator * (const Twist& arg) const;
};
+bool Equal(const RotationVel& r1,const RotationVel& r2,double eps=epsilon);
+bool Equal(const Rotation& r1,const RotationVel& r2,double eps=epsilon);
+bool Equal(const RotationVel& r1,const Rotation& r2,double eps=epsilon);
@@ -220,9 +226,9 @@ public:
IMETHOD friend FrameVel operator * (const FrameVel& f1,const FrameVel& f2);
IMETHOD friend FrameVel operator * (const Frame& f1,const FrameVel& f2);
IMETHOD friend FrameVel operator * (const FrameVel& f1,const Frame& f2);
- IMETHOD friend bool Equal(const FrameVel& r1,const FrameVel& r2,double eps=epsilon);
- IMETHOD friend bool Equal(const Frame& r1,const FrameVel& r2,double eps=epsilon);
- IMETHOD friend bool Equal(const FrameVel& r1,const Frame& r2,double eps=epsilon);
+ IMETHOD friend bool Equal(const FrameVel& r1,const FrameVel& r2,double eps);
+ IMETHOD friend bool Equal(const Frame& r1,const FrameVel& r2,double eps);
+ IMETHOD friend bool Equal(const FrameVel& r1,const Frame& r2,double eps);
IMETHOD TwistVel Inverse(const TwistVel& arg) const;
IMETHOD TwistVel Inverse(const Twist& arg) const;
@@ -230,6 +236,9 @@ public:
IMETHOD TwistVel operator * (const Twist& arg) const;
};
+bool Equal(const FrameVel& r1,const FrameVel& r2,double eps=epsilon);
+bool Equal(const Frame& r1,const FrameVel& r2,double eps=epsilon);
+bool Equal(const FrameVel& r1,const Frame& r2,double eps=epsilon);
@@ -292,9 +301,9 @@ public:
// = Equality operators
// do not use operator == because the definition of Equal(.,.) is slightly
// different. It compares whether the 2 arguments are equal in an eps-interval
- IMETHOD friend bool Equal(const TwistVel& a,const TwistVel& b,double eps=epsilon);
- IMETHOD friend bool Equal(const Twist& a,const TwistVel& b,double eps=epsilon);
- IMETHOD friend bool Equal(const TwistVel& a,const Twist& b,double eps=epsilon);
+ IMETHOD friend bool Equal(const TwistVel& a,const TwistVel& b,double eps);
+ IMETHOD friend bool Equal(const Twist& a,const TwistVel& b,double eps);
+ IMETHOD friend bool Equal(const TwistVel& a,const Twist& b,double eps);
// = Conversion to other entities
IMETHOD Twist GetTwist() const;
@@ -305,6 +314,10 @@ public:
};
+bool Equal(const TwistVel& a,const TwistVel& b,double eps=epsilon);
+bool Equal(const Twist& a,const TwistVel& b,double eps=epsilon);
+bool Equal(const TwistVel& a,const Twist& b,double eps=epsilon);
+
IMETHOD VectorVel diff(const VectorVel& a,const VectorVel& b,double dt=1.0) {
return VectorVel(diff(a.p,b.p,dt),diff(a.v,b.v,dt));
}

View file

@ -0,0 +1,23 @@
$NetBSD: patch-intern_itasc_kdl_jacobian.hpp,v 1.1 2014/01/10 20:06:46 joerg Exp $
--- intern/itasc/kdl/jacobian.hpp.orig 2013-11-20 14:57:39.000000000 +0000
+++ intern/itasc/kdl/jacobian.hpp
@@ -45,7 +45,7 @@ namespace KDL
bool operator ==(const Jacobian& arg);
bool operator !=(const Jacobian& arg);
- friend bool Equal(const Jacobian& a,const Jacobian& b,double eps=epsilon);
+ friend bool Equal(const Jacobian& a,const Jacobian& b,double eps);
~Jacobian();
@@ -63,6 +63,9 @@ namespace KDL
};
+
+ bool Equal(const Jacobian& a,const Jacobian& b,double eps=epsilon);
}
+
#endif

View file

@ -0,0 +1,19 @@
$NetBSD: patch-intern_itasc_kdl_jntarray.hpp,v 1.1 2014/01/10 20:06:46 joerg Exp $
--- intern/itasc/kdl/jntarray.hpp.orig 2013-11-20 14:54:27.000000000 +0000
+++ intern/itasc/kdl/jntarray.hpp
@@ -209,12 +209,13 @@ class MyTask : public RTT::TaskContext
* @return true if each element of src1 is within eps of the same
* element in src2, or if both src1 and src2 have no data (ie 0==rows())
*/
- friend bool Equal(const JntArray& src1,const JntArray& src2,double eps=epsilon);
+ friend bool Equal(const JntArray& src1,const JntArray& src2,double eps);
friend bool operator==(const JntArray& src1,const JntArray& src2);
//friend bool operator!=(const JntArray& src1,const JntArray& src2);
};
+ bool Equal(const JntArray& src1,const JntArray& src2,double eps=epsilon);
bool operator==(const JntArray& src1,const JntArray& src2);
//bool operator!=(const JntArray& src1,const JntArray& src2);

View file

@ -0,0 +1,17 @@
$NetBSD: patch-intern_itasc_kdl_jntarrayacc.hpp,v 1.1 2014/01/10 20:06:46 joerg Exp $
--- intern/itasc/kdl/jntarrayacc.hpp.orig 2013-11-20 15:09:06.000000000 +0000
+++ intern/itasc/kdl/jntarrayacc.hpp
@@ -58,9 +58,11 @@ namespace KDL
friend void Divide(const JntArrayAcc& src,const doubleVel& factor,JntArrayAcc& dest);
friend void Divide(const JntArrayAcc& src,const doubleAcc& factor,JntArrayAcc& dest);
friend void SetToZero(JntArrayAcc& array);
- friend bool Equal(const JntArrayAcc& src1,const JntArrayAcc& src2,double eps=epsilon);
+ friend bool Equal(const JntArrayAcc& src1,const JntArrayAcc& src2,double eps);
};
+
+ bool Equal(const JntArrayAcc& src1,const JntArrayAcc& src2,double eps=epsilon);
}
#endif

View file

@ -0,0 +1,17 @@
$NetBSD: patch-intern_itasc_kdl_jntarrayvel.hpp,v 1.1 2014/01/10 20:06:46 joerg Exp $
--- intern/itasc/kdl/jntarrayvel.hpp.orig 2013-11-20 15:08:46.000000000 +0000
+++ intern/itasc/kdl/jntarrayvel.hpp
@@ -51,9 +51,11 @@ namespace KDL
friend void Divide(const JntArrayVel& src,const double& factor,JntArrayVel& dest);
friend void Divide(const JntArrayVel& src,const doubleVel& factor,JntArrayVel& dest);
friend void SetToZero(JntArrayVel& array);
- friend bool Equal(const JntArrayVel& src1,const JntArrayVel& src2,double eps=epsilon);
+ friend bool Equal(const JntArrayVel& src1,const JntArrayVel& src2,double eps);
};
+
+ bool Equal(const JntArrayVel& src1,const JntArrayVel& src2,double eps=epsilon);
}
#endif

View file

@ -0,0 +1,13 @@
$NetBSD: patch-intern_itasc_kdl_tree.cpp,v 1.1 2014/01/10 20:06:46 joerg Exp $
--- intern/itasc/kdl/tree.cpp.orig 2012-06-03 12:00:41.000000000 +0000
+++ intern/itasc/kdl/tree.cpp
@@ -64,7 +64,7 @@ bool Tree::addSegment(const Segment& seg
return false;
pair<SegmentMap::iterator, bool> retval;
//insert new element
- TreeElement elem(segment, parent, nrOfJoints);
+ TreeElement elem(segment, *parent, nrOfJoints);
std::pair<std::string, TreeElement> val(segment_name, elem);
retval = segments.insert(val);

View file

@ -0,0 +1,59 @@
$NetBSD: patch-intern_itasc_kdl_tree.hpp,v 1.1 2014/01/10 20:06:46 joerg Exp $
--- intern/itasc/kdl/tree.hpp.orig 2012-12-15 11:15:05.000000000 +0000
+++ intern/itasc/kdl/tree.hpp
@@ -41,32 +41,28 @@ namespace KDL
{
//Forward declaration
class TreeElement;
-#if defined(__APPLE__)
-# if MAC_OS_X_VERSION_MIN_REQUIRED <= 1050
+#if defined(__APPLE__) && MAC_OS_X_VERSION_MIN_REQUIRED <= 1050
typedef std::map<std::string,TreeElement> SegmentMap;
-# else
- // Eigen allocator is needed for alignment of Eigen data types
- typedef std::map<std::string,TreeElement, std::less<std::string>, Eigen::aligned_allocator<std::pair<std::string, TreeElement> > > SegmentMap;
-# endif /* MAC_OS_X_VERSION_MIN_REQUIRED */
#else
// Eigen allocator is needed for alignment of Eigen data types
typedef std::map<std::string,TreeElement, std::less<std::string>, Eigen::aligned_allocator<std::pair<std::string, TreeElement> > > SegmentMap;
#endif
+
class TreeElement
{
public:
- TreeElement():q_nr(0)
+ TreeElement():q_nr(0),parent(0)
{};
public:
Segment segment;
unsigned int q_nr;
- SegmentMap::const_iterator parent;
+ SegmentMap::value_type const *parent;
std::vector<SegmentMap::const_iterator > children;
- TreeElement(const Segment& segment_in,const SegmentMap::const_iterator& parent_in,unsigned int q_nr_in)
+ TreeElement(const Segment& segment_in,const SegmentMap::value_type& parent_in,unsigned int q_nr_in)
{
q_nr=q_nr_in;
segment=segment_in;
- parent=parent_in;
+ parent=&parent_in;
};
static TreeElement Root()
{
@@ -167,7 +163,15 @@ namespace KDL
return segments.find(segment_name);
};
+ SegmentMap::value_type const* getSegmentPtr(const std::string& segment_name)const
+ {
+ SegmentMap::const_iterator it = segments.find(segment_name);
+
+ if (it == segments.end())
+ return 0;
+ return &*it;
+ };
const SegmentMap& getSegments()const
{

View file

@ -0,0 +1,44 @@
$NetBSD: patch-intern_itasc_kdl_treefksolverpos__recursive.cpp,v 1.1 2014/01/10 20:06:46 joerg Exp $
--- intern/itasc/kdl/treefksolverpos_recursive.cpp.orig 2011-10-23 18:38:16.000000000 +0000
+++ intern/itasc/kdl/treefksolverpos_recursive.cpp
@@ -35,22 +35,22 @@ namespace KDL {
int TreeFkSolverPos_recursive::JntToCart(const JntArray& q_in, Frame& p_out, const std::string& segmentName, const std::string& baseName)
{
- SegmentMap::const_iterator it = tree.getSegment(segmentName);
- SegmentMap::const_iterator baseit = tree.getSegment(baseName);
+ SegmentMap::value_type const* it = tree.getSegmentPtr(segmentName);
+ SegmentMap::value_type const* baseit = tree.getSegmentPtr(baseName);
if(q_in.rows() != tree.getNrOfJoints())
return -1;
- else if(it == tree.getSegments().end()) //if the segment name is not found
+ else if(!it) //if the segment name is not found
return -2;
- else if(baseit == tree.getSegments().end()) //if the base segment name is not found
+ else if(!baseit) //if the base segment name is not found
return -3;
else{
- p_out = recursiveFk(q_in, it, baseit);
- return 0;
+ p_out = recursiveFk(q_in, it, baseit);
+ return 0;
}
}
- Frame TreeFkSolverPos_recursive::recursiveFk(const JntArray& q_in, const SegmentMap::const_iterator& it, const SegmentMap::const_iterator& baseit)
+ Frame TreeFkSolverPos_recursive::recursiveFk(const JntArray& q_in, SegmentMap::value_type const* it, SegmentMap::value_type const* baseit)
{
//gets the frame for the current element (segment)
const TreeElement& currentElement = it->second;
@@ -60,8 +60,7 @@ namespace KDL {
}
else{
Frame currentFrame = currentElement.segment.pose(((JntArray&)q_in)(currentElement.q_nr));
- SegmentMap::const_iterator parentIt = currentElement.parent;
- return recursiveFk(q_in, parentIt, baseit) * currentFrame;
+ return recursiveFk(q_in, currentElement.parent, baseit) * currentFrame;
}
}

View file

@ -0,0 +1,13 @@
$NetBSD: patch-intern_itasc_kdl_treefksolverpos__recursive.hpp,v 1.1 2014/01/10 20:06:46 joerg Exp $
--- intern/itasc/kdl/treefksolverpos_recursive.hpp.orig 2009-07-14 15:36:21.000000000 +0000
+++ intern/itasc/kdl/treefksolverpos_recursive.hpp
@@ -45,7 +45,7 @@ namespace KDL {
private:
const Tree tree;
- Frame recursiveFk(const JntArray& q_in, const SegmentMap::const_iterator& it, const SegmentMap::const_iterator& baseit);
+ Frame recursiveFk(const JntArray& q_in, SegmentMap::value_type const* it, SegmentMap::value_type const* baseit);
};
}

View file

@ -0,0 +1,24 @@
$NetBSD: patch-intern_itasc_kdl_treejnttojacsolver.cpp,v 1.1 2014/01/10 20:06:46 joerg Exp $
--- intern/itasc/kdl/treejnttojacsolver.cpp.orig 2011-10-23 18:38:16.000000000 +0000
+++ intern/itasc/kdl/treejnttojacsolver.cpp
@@ -28,16 +28,16 @@ int TreeJntToJacSolver::JntToJac(const J
return -1;
//Lets search the tree-element
- SegmentMap::const_iterator it = tree.getSegments().find(segmentname);
+ SegmentMap::value_type const* it = tree.getSegmentPtr(segmentname);
//If segmentname is not inside the tree, back out:
- if (it == tree.getSegments().end())
+ if (!it)
return -2;
//Let's make the jacobian zero:
SetToZero(jac);
- SegmentMap::const_iterator root = tree.getSegments().find("root");
+ SegmentMap::value_type const* root = tree.getSegmentPtr("root");
Frame T_total = Frame::Identity();
Frame T_local, T_joint;