| /// autogenerated analytical inverse kinematics code from ikfast program part of OpenRAVE |
| /// \author Rosen Diankov |
| /// |
| /// Licensed under the Apache License, Version 2.0 (the "License"); |
| /// you may not use this file except in compliance with the License. |
| /// You may obtain a copy of the License at |
| /// http://www.apache.org/licenses/LICENSE-2.0 |
| /// |
| /// Unless required by applicable law or agreed to in writing, software |
| /// distributed under the License is distributed on an "AS IS" BASIS, |
| /// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| /// See the License for the specific language governing permissions and |
| /// limitations under the License. |
| /// |
| /// ikfast version 0x1000004a generated on 2017-12-12 14:08:54.348797 |
| /// Generated using solver transform6d |
| /// To compile with gcc: |
| /// gcc -lstdc++ ik.cpp |
| /// To compile without any main function as a shared object (might need -llapack): |
| /// gcc -fPIC -lstdc++ -DIKFAST_NO_MAIN -DIKFAST_CLIBRARY -shared -Wl,-soname,libik.so -o libik.so ik.cpp |
| #define IKFAST_HAS_LIBRARY |
| #include "ikfast.h" // found inside share/openrave-X.Y/python/ikfast.h |
| using namespace ikfast; |
| |
| // check if the included ikfast version matches what this file was compiled with |
| #define IKFAST_COMPILE_ASSERT(x) extern int __dummy[(int)x] |
| IKFAST_COMPILE_ASSERT(IKFAST_VERSION==0x1000004a); |
| |
| #include <cmath> |
| #include <vector> |
| #include <limits> |
| #include <algorithm> |
| #include <complex> |
| |
| #ifndef IKFAST_ASSERT |
| #include <stdexcept> |
| #include <sstream> |
| #include <iostream> |
| |
| #ifdef _MSC_VER |
| #ifndef __PRETTY_FUNCTION__ |
| #define __PRETTY_FUNCTION__ __FUNCDNAME__ |
| #endif |
| #endif |
| |
| #ifndef __PRETTY_FUNCTION__ |
| #define __PRETTY_FUNCTION__ __func__ |
| #endif |
| |
| #define IKFAST_ASSERT(b) { if( !(b) ) { std::stringstream ss; ss << "ikfast exception: " << __FILE__ << ":" << __LINE__ << ": " <<__PRETTY_FUNCTION__ << ": Assertion '" << #b << "' failed"; throw std::runtime_error(ss.str()); } } |
| |
| #endif |
| |
| #if defined(_MSC_VER) |
| #define IKFAST_ALIGNED16(x) __declspec(align(16)) x |
| #else |
| #define IKFAST_ALIGNED16(x) x __attribute((aligned(16))) |
| #endif |
| |
| #define IK2PI ((IkReal)6.28318530717959) |
| #define IKPI ((IkReal)3.14159265358979) |
| #define IKPI_2 ((IkReal)1.57079632679490) |
| |
| #ifdef _MSC_VER |
| #ifndef isnan |
| #define isnan _isnan |
| #endif |
| #ifndef isinf |
| #define isinf _isinf |
| #endif |
| //#ifndef isfinite |
| //#define isfinite _isfinite |
| //#endif |
| #endif // _MSC_VER |
| |
| // lapack routines |
| extern "C" { |
| void dgetrf_ (const int* m, const int* n, double* a, const int* lda, int* ipiv, int* info); |
| void zgetrf_ (const int* m, const int* n, std::complex<double>* a, const int* lda, int* ipiv, int* info); |
| void dgetri_(const int* n, const double* a, const int* lda, int* ipiv, double* work, const int* lwork, int* info); |
| void dgesv_ (const int* n, const int* nrhs, double* a, const int* lda, int* ipiv, double* b, const int* ldb, int* info); |
| void dgetrs_(const char *trans, const int *n, const int *nrhs, double *a, const int *lda, int *ipiv, double *b, const int *ldb, int *info); |
| void dgeev_(const char *jobvl, const char *jobvr, const int *n, double *a, const int *lda, double *wr, double *wi,double *vl, const int *ldvl, double *vr, const int *ldvr, double *work, const int *lwork, int *info); |
| } |
| |
| using namespace std; // necessary to get std math routines |
| |
| #ifdef IKFAST_NAMESPACE |
| namespace IKFAST_NAMESPACE { |
| #endif |
| |
| inline float IKabs(float f) { return fabsf(f); } |
| inline double IKabs(double f) { return fabs(f); } |
| |
| inline float IKsqr(float f) { return f*f; } |
| inline double IKsqr(double f) { return f*f; } |
| |
| inline float IKlog(float f) { return logf(f); } |
| inline double IKlog(double f) { return log(f); } |
| |
| // allows asin and acos to exceed 1. has to be smaller than thresholds used for branch conds and evaluation |
| #ifndef IKFAST_SINCOS_THRESH |
| #define IKFAST_SINCOS_THRESH ((IkReal)1e-7) |
| #endif |
| |
| // used to check input to atan2 for degenerate cases. has to be smaller than thresholds used for branch conds and evaluation |
| #ifndef IKFAST_ATAN2_MAGTHRESH |
| #define IKFAST_ATAN2_MAGTHRESH ((IkReal)1e-7) |
| #endif |
| |
| // minimum distance of separate solutions |
| #ifndef IKFAST_SOLUTION_THRESH |
| #define IKFAST_SOLUTION_THRESH ((IkReal)1e-6) |
| #endif |
| |
| // there are checkpoints in ikfast that are evaluated to make sure they are 0. This threshold speicfies by how much they can deviate |
| #ifndef IKFAST_EVALCOND_THRESH |
| #define IKFAST_EVALCOND_THRESH ((IkReal)0.00001) |
| #endif |
| |
| |
| inline float IKasin(float f) |
| { |
| IKFAST_ASSERT( f > -1-IKFAST_SINCOS_THRESH && f < 1+IKFAST_SINCOS_THRESH ); // any more error implies something is wrong with the solver |
| if( f <= -1 ) return float(-IKPI_2); |
| else if( f >= 1 ) return float(IKPI_2); |
| return asinf(f); |
| } |
| inline double IKasin(double f) |
| { |
| IKFAST_ASSERT( f > -1-IKFAST_SINCOS_THRESH && f < 1+IKFAST_SINCOS_THRESH ); // any more error implies something is wrong with the solver |
| if( f <= -1 ) return -IKPI_2; |
| else if( f >= 1 ) return IKPI_2; |
| return asin(f); |
| } |
| |
| // return positive value in [0,y) |
| inline float IKfmod(float x, float y) |
| { |
| while(x < 0) { |
| x += y; |
| } |
| return fmodf(x,y); |
| } |
| |
| // return positive value in [0,y) |
| inline double IKfmod(double x, double y) |
| { |
| while(x < 0) { |
| x += y; |
| } |
| return fmod(x,y); |
| } |
| |
| inline float IKacos(float f) |
| { |
| IKFAST_ASSERT( f > -1-IKFAST_SINCOS_THRESH && f < 1+IKFAST_SINCOS_THRESH ); // any more error implies something is wrong with the solver |
| if( f <= -1 ) return float(IKPI); |
| else if( f >= 1 ) return float(0); |
| return acosf(f); |
| } |
| inline double IKacos(double f) |
| { |
| IKFAST_ASSERT( f > -1-IKFAST_SINCOS_THRESH && f < 1+IKFAST_SINCOS_THRESH ); // any more error implies something is wrong with the solver |
| if( f <= -1 ) return IKPI; |
| else if( f >= 1 ) return 0; |
| return acos(f); |
| } |
| inline float IKsin(float f) { return sinf(f); } |
| inline double IKsin(double f) { return sin(f); } |
| inline float IKcos(float f) { return cosf(f); } |
| inline double IKcos(double f) { return cos(f); } |
| inline float IKtan(float f) { return tanf(f); } |
| inline double IKtan(double f) { return tan(f); } |
| inline float IKsqrt(float f) { if( f <= 0.0f ) return 0.0f; return sqrtf(f); } |
| inline double IKsqrt(double f) { if( f <= 0.0 ) return 0.0; return sqrt(f); } |
| inline float IKatan2Simple(float fy, float fx) { |
| return atan2f(fy,fx); |
| } |
| inline float IKatan2(float fy, float fx) { |
| if( isnan(fy) ) { |
| IKFAST_ASSERT(!isnan(fx)); // if both are nan, probably wrong value will be returned |
| return float(IKPI_2); |
| } |
| else if( isnan(fx) ) { |
| return 0; |
| } |
| return atan2f(fy,fx); |
| } |
| inline double IKatan2Simple(double fy, double fx) { |
| return atan2(fy,fx); |
| } |
| inline double IKatan2(double fy, double fx) { |
| if( isnan(fy) ) { |
| IKFAST_ASSERT(!isnan(fx)); // if both are nan, probably wrong value will be returned |
| return IKPI_2; |
| } |
| else if( isnan(fx) ) { |
| return 0; |
| } |
| return atan2(fy,fx); |
| } |
| |
| template <typename T> |
| struct CheckValue |
| { |
| T value; |
| bool valid; |
| }; |
| |
| template <typename T> |
| inline CheckValue<T> IKatan2WithCheck(T fy, T fx, T epsilon) |
| { |
| CheckValue<T> ret; |
| ret.valid = false; |
| ret.value = 0; |
| if( !isnan(fy) && !isnan(fx) ) { |
| if( IKabs(fy) >= IKFAST_ATAN2_MAGTHRESH || IKabs(fx) > IKFAST_ATAN2_MAGTHRESH ) { |
| ret.value = IKatan2Simple(fy,fx); |
| ret.valid = true; |
| } |
| } |
| return ret; |
| } |
| |
| inline float IKsign(float f) { |
| if( f > 0 ) { |
| return float(1); |
| } |
| else if( f < 0 ) { |
| return float(-1); |
| } |
| return 0; |
| } |
| |
| inline double IKsign(double f) { |
| if( f > 0 ) { |
| return 1.0; |
| } |
| else if( f < 0 ) { |
| return -1.0; |
| } |
| return 0; |
| } |
| |
| template <typename T> |
| inline CheckValue<T> IKPowWithIntegerCheck(T f, int n) |
| { |
| CheckValue<T> ret; |
| ret.valid = true; |
| if( n == 0 ) { |
| ret.value = 1.0; |
| return ret; |
| } |
| else if( n == 1 ) |
| { |
| ret.value = f; |
| return ret; |
| } |
| else if( n < 0 ) |
| { |
| if( f == 0 ) |
| { |
| ret.valid = false; |
| ret.value = (T)1.0e30; |
| return ret; |
| } |
| if( n == -1 ) { |
| ret.value = T(1.0)/f; |
| return ret; |
| } |
| } |
| |
| int num = n > 0 ? n : -n; |
| if( num == 2 ) { |
| ret.value = f*f; |
| } |
| else if( num == 3 ) { |
| ret.value = f*f*f; |
| } |
| else { |
| ret.value = 1.0; |
| while(num>0) { |
| if( num & 1 ) { |
| ret.value *= f; |
| } |
| num >>= 1; |
| f *= f; |
| } |
| } |
| |
| if( n < 0 ) { |
| ret.value = T(1.0)/ret.value; |
| } |
| return ret; |
| } |
| |
| /// solves the forward kinematics equations. |
| /// \param pfree is an array specifying the free joints of the chain. |
| IKFAST_API void ComputeFk(const IkReal* j, IkReal* eetrans, IkReal* eerot) { |
| IkReal x0,x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,x11,x12,x13,x14,x15,x16,x17,x18,x19,x20,x21,x22,x23,x24,x25,x26,x27,x28,x29,x30,x31,x32,x33,x34,x35,x36,x37,x38,x39,x40,x41,x42,x43,x44,x45,x46,x47,x48,x49,x50,x51,x52,x53,x54,x55,x56,x57,x58,x59,x60,x61,x62,x63,x64; |
| x0=IKcos(j[0]); |
| x1=IKcos(j[3]); |
| x2=IKsin(j[0]); |
| x3=IKsin(j[3]); |
| x4=IKsin(j[4]); |
| x5=IKsin(j[1]); |
| x6=IKsin(j[2]); |
| x7=IKcos(j[1]); |
| x8=IKcos(j[2]); |
| x9=IKcos(j[4]); |
| x10=IKsin(j[5]); |
| x11=IKcos(j[5]); |
| x12=((0.134999999784)*x4); |
| x13=((5.39999999136e-6)*x4); |
| x14=((0.9999999992)*x4); |
| x15=((1.271)*x0); |
| x16=((1.271)*x2); |
| x17=((5.39999999136e-6)*x0); |
| x18=((0.175)*x0); |
| x19=((3.9999999968e-5)*x4); |
| x20=((5.39999999136e-6)*x9); |
| x21=((0.175)*x2); |
| x22=((0.134999999784)*x9); |
| x23=((3.9999999968e-5)*x9); |
| x24=((0.9999999992)*x9); |
| x25=((1.0)*x2); |
| x26=((5.39999999136e-6)*x1); |
| x27=((1.095)*x5); |
| x28=((2.159999996544e-10)*x0); |
| x29=((1.0)*x0); |
| x30=((2.159999996544e-10)*x2); |
| x31=((2.159999996544e-10)*x1); |
| x32=((5.39999999136e-6)*x2); |
| x33=(x5*x6); |
| x34=(x7*x8); |
| x35=(x1*x9); |
| x36=(x2*x3); |
| x37=(x6*x7); |
| x38=(x5*x8); |
| x39=((1.0)*x34); |
| x40=(x29*x33); |
| x41=(x25*x33); |
| x42=((((-1.0)*x39))+x33); |
| x43=((((-1.0)*x33))+x39); |
| x44=((((1.0)*x38))+(((1.0)*x37))); |
| x45=((-1.0)*x44); |
| x46=(x1*x42); |
| x47=(x3*x43); |
| x48=((((-1.0)*x40))+((x0*x34))); |
| x49=((((-1.0)*x41))+((x2*x34))); |
| x50=((((-1.0)*x29*x34))+x40); |
| x51=((((-1.0)*x25*x34))+x41); |
| x52=(x29*((x38+x37))); |
| x53=((-1.0)*x52); |
| x54=(x25*((x38+x37))); |
| x55=((-1.0)*x54); |
| x56=(x1*x55); |
| x57=((((-1.0)*x25*x3))+((x1*x53))); |
| x58=(((x3*x52))+(((-1.0)*x1*x25))); |
| x59=(((x0*x3))+x56); |
| x60=(((x0*x1))+((x3*x54))); |
| x61=(x4*x57); |
| x62=(((x19*x46))+((x23*x45))+((x14*x44))+((x24*x46))); |
| x63=(((x14*x50))+((x23*x48))+((x19*x57))+((x24*x57))); |
| x64=(((x14*x51))+((x23*x49))+((x19*x59))+((x24*x59))); |
| eerot[0]=(((x11*x63))+((x10*x58))); |
| eerot[1]=((((-1.0)*x10*x63))+((x11*x58))); |
| eerot[2]=(((x14*x57))+(((-1.0)*x23*x57))+(((-1.0)*x19*x50))+((x24*x48))); |
| IkReal x65=((1.0)*x33); |
| eetrans[0]=(((x12*x57))+((x0*x27))+(((-1.0)*x15*x65))+((x18*x37))+((x18*x38))+(((-1.0)*x20*x57))+((x22*x48))+((x4*(((((-2.159999996544e-10)*x36))+((x31*x53))))))+((x15*x34))+((x9*((((x28*x34))+(((-1.0)*x28*x65))))))+x18+((x9*((((x26*x53))+(((-5.39999999136e-6)*x36))))))+(((-1.0)*x13*x50))+((x4*((((x17*x33))+(((-1.0)*x17*x34))))))); |
| eerot[3]=(((x11*x64))+((x10*x60))); |
| eerot[4]=((((-1.0)*x10*x64))+((x11*x60))); |
| eerot[5]=(((x14*x59))+(((-1.0)*x23*x59))+(((-1.0)*x19*x51))+((x24*x49))); |
| IkReal x66=((1.0)*x33); |
| eetrans[1]=((((-1.0)*x16*x66))+((x12*x59))+((x4*((((x31*x55))+((x28*x3))))))+((x16*x34))+(((-1.0)*x20*x59))+((x4*((((x32*x33))+(((-1.0)*x32*x34))))))+((x22*x49))+((x21*x38))+((x21*x37))+((x9*(((((-1.0)*x30*x66))+((x30*x34))))))+((x2*x27))+x21+(((-1.0)*x13*x51))+((x9*((((x26*x55))+((x17*x3))))))); |
| eerot[6]=(((x10*x47))+((x11*x62))); |
| eerot[7]=((((-1.0)*x10*x62))+((x11*x47))); |
| eerot[8]=(((x14*x46))+(((-1.0)*x19*x44))+((x24*x45))+(((-1.0)*x23*x46))); |
| eetrans[2]=((0.495)+(((-0.175)*x33))+(((-1.0)*x20*x46))+(((0.175)*x34))+((x22*x45))+(((-1.271)*x38))+(((-1.271)*x37))+((x4*(((((5.39999999136e-6)*x38))+(((5.39999999136e-6)*x37))))))+((x1*x4*(((((-2.159999996544e-10)*x34))+(((2.159999996544e-10)*x33))))))+((x35*(((((5.39999999136e-6)*x33))+(((-5.39999999136e-6)*x34))))))+(((1.095)*x7))+((x12*x46))+((x9*(((((-2.159999996544e-10)*x37))+(((-2.159999996544e-10)*x38))))))+(((-1.0)*x13*x44))); |
| } |
| |
| IKFAST_API int GetNumFreeParameters() { return 0; } |
| IKFAST_API int* GetFreeParameters() { return NULL; } |
| IKFAST_API int GetNumJoints() { return 6; } |
| |
| IKFAST_API int GetIkRealSize() { return sizeof(IkReal); } |
| |
| IKFAST_API int GetIkType() { return 0x67000001; } |
| |
| class IKSolver { |
| public: |
| IkReal j0,cj0,sj0,htj0,j0mul,j1,cj1,sj1,htj1,j1mul,j2,cj2,sj2,htj2,j2mul,j3,cj3,sj3,htj3,j3mul,j4,cj4,sj4,htj4,j4mul,j5,cj5,sj5,htj5,j5mul,new_r00,r00,rxp0_0,new_r01,r01,rxp0_1,new_r02,r02,rxp0_2,new_r10,r10,rxp1_0,new_r11,r11,rxp1_1,new_r12,r12,rxp1_2,new_r20,r20,rxp2_0,new_r21,r21,rxp2_1,new_r22,r22,rxp2_2,new_px,px,npx,new_py,py,npy,new_pz,pz,npz,pp; |
| unsigned char _ij0[2], _nj0,_ij1[2], _nj1,_ij2[2], _nj2,_ij3[2], _nj3,_ij4[2], _nj4,_ij5[2], _nj5; |
| |
| IkReal j100, cj100, sj100; |
| unsigned char _ij100[2], _nj100; |
| bool ComputeIk(const IkReal* eetrans, const IkReal* eerot, const IkReal* pfree, IkSolutionListBase<IkReal>& solutions) { |
| j0=numeric_limits<IkReal>::quiet_NaN(); _ij0[0] = -1; _ij0[1] = -1; _nj0 = -1; j1=numeric_limits<IkReal>::quiet_NaN(); _ij1[0] = -1; _ij1[1] = -1; _nj1 = -1; j2=numeric_limits<IkReal>::quiet_NaN(); _ij2[0] = -1; _ij2[1] = -1; _nj2 = -1; j3=numeric_limits<IkReal>::quiet_NaN(); _ij3[0] = -1; _ij3[1] = -1; _nj3 = -1; j4=numeric_limits<IkReal>::quiet_NaN(); _ij4[0] = -1; _ij4[1] = -1; _nj4 = -1; j5=numeric_limits<IkReal>::quiet_NaN(); _ij5[0] = -1; _ij5[1] = -1; _nj5 = -1; |
| for(int dummyiter = 0; dummyiter < 1; ++dummyiter) { |
| solutions.Clear(); |
| r00 = eerot[0*3+0]; |
| r01 = eerot[0*3+1]; |
| r02 = eerot[0*3+2]; |
| r10 = eerot[1*3+0]; |
| r11 = eerot[1*3+1]; |
| r12 = eerot[1*3+2]; |
| r20 = eerot[2*3+0]; |
| r21 = eerot[2*3+1]; |
| r22 = eerot[2*3+2]; |
| px = eetrans[0]; py = eetrans[1]; pz = eetrans[2]; |
| |
| new_r00=r00; |
| new_r01=r01; |
| new_r02=r02; |
| new_px=((((-0.134999999892)*r02))+px); |
| new_r10=r10; |
| new_r11=r11; |
| new_r12=r12; |
| new_py=((((-0.134999999892)*r12))+py); |
| new_r20=r20; |
| new_r21=r21; |
| new_r22=r22; |
| new_pz=((-0.495)+pz+(((-0.134999999892)*r22))); |
| r00 = new_r00; r01 = new_r01; r02 = new_r02; r10 = new_r10; r11 = new_r11; r12 = new_r12; r20 = new_r20; r21 = new_r21; r22 = new_r22; px = new_px; py = new_py; pz = new_pz; |
| IkReal x67=((1.0)*px); |
| IkReal x68=((1.0)*pz); |
| IkReal x69=((1.0)*py); |
| pp=((px*px)+(py*py)+(pz*pz)); |
| npx=(((px*r00))+((py*r10))+((pz*r20))); |
| npy=(((px*r01))+((py*r11))+((pz*r21))); |
| npz=(((px*r02))+((py*r12))+((pz*r22))); |
| rxp0_0=((((-1.0)*r20*x69))+((pz*r10))); |
| rxp0_1=(((px*r20))+(((-1.0)*r00*x68))); |
| rxp0_2=((((-1.0)*r10*x67))+((py*r00))); |
| rxp1_0=((((-1.0)*r21*x69))+((pz*r11))); |
| rxp1_1=(((px*r21))+(((-1.0)*r01*x68))); |
| rxp1_2=((((-1.0)*r11*x67))+((py*r01))); |
| rxp2_0=(((pz*r12))+(((-1.0)*r22*x69))); |
| rxp2_1=(((px*r22))+(((-1.0)*r02*x68))); |
| rxp2_2=((((-1.0)*r12*x67))+((py*r02))); |
| { |
| IkReal j0eval[1]; |
| j0eval[0]=((IKabs(px))+(IKabs(py))); |
| if( IKabs(j0eval[0]) < 0.0000010000000000 ) |
| { |
| continue; // no branches [j0, j1, j2] |
| |
| } else |
| { |
| { |
| IkReal j0array[2], cj0array[2], sj0array[2]; |
| bool j0valid[2]={false}; |
| _nj0 = 2; |
| CheckValue<IkReal> x71 = IKatan2WithCheck(IkReal(py),IkReal(((-1.0)*px)),IKFAST_ATAN2_MAGTHRESH); |
| if(!x71.valid){ |
| continue; |
| } |
| IkReal x70=x71.value; |
| j0array[0]=((-1.0)*x70); |
| sj0array[0]=IKsin(j0array[0]); |
| cj0array[0]=IKcos(j0array[0]); |
| j0array[1]=((3.14159265358979)+(((-1.0)*x70))); |
| sj0array[1]=IKsin(j0array[1]); |
| cj0array[1]=IKcos(j0array[1]); |
| if( j0array[0] > IKPI ) |
| { |
| j0array[0]-=IK2PI; |
| } |
| else if( j0array[0] < -IKPI ) |
| { j0array[0]+=IK2PI; |
| } |
| j0valid[0] = true; |
| if( j0array[1] > IKPI ) |
| { |
| j0array[1]-=IK2PI; |
| } |
| else if( j0array[1] < -IKPI ) |
| { j0array[1]+=IK2PI; |
| } |
| j0valid[1] = true; |
| for(int ij0 = 0; ij0 < 2; ++ij0) |
| { |
| if( !j0valid[ij0] ) |
| { |
| continue; |
| } |
| _ij0[0] = ij0; _ij0[1] = -1; |
| for(int iij0 = ij0+1; iij0 < 2; ++iij0) |
| { |
| if( j0valid[iij0] && IKabs(cj0array[ij0]-cj0array[iij0]) < IKFAST_SOLUTION_THRESH && IKabs(sj0array[ij0]-sj0array[iij0]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j0valid[iij0]=false; _ij0[1] = iij0; break; |
| } |
| } |
| j0 = j0array[ij0]; cj0 = cj0array[ij0]; sj0 = sj0array[ij0]; |
| |
| { |
| IkReal j2array[2], cj2array[2], sj2array[2]; |
| bool j2valid[2]={false}; |
| _nj2 = 2; |
| IkReal x72=px*px; |
| IkReal x73=r10*r10; |
| IkReal x74=r01*r01; |
| IkReal x75=py*py; |
| IkReal x76=r11*r11; |
| IkReal x77=r00*r00; |
| IkReal x78=r20*r20; |
| IkReal x79=r21*r21; |
| IkReal x80=pz*pz; |
| IkReal x81=r12*r12; |
| IkReal x82=r22*r22; |
| IkReal x83=r02*r02; |
| IkReal x84=((0.355903503251059)*x80); |
| IkReal x85=((0.124566226137871)*cj0*px); |
| IkReal x86=((0.355903503251059)*x72); |
| IkReal x87=((0.355903503251059)*x75); |
| IkReal x88=((0.124566226137871)*py*sj0); |
| IkReal x89=(x74*x76); |
| IkReal x90=(x77*x78); |
| IkReal x91=(x76*x79); |
| IkReal x92=(x81*x83); |
| IkReal x93=(x82*x83); |
| IkReal x94=(x81*x82); |
| IkReal x95=(x74*x79); |
| IkReal x96=(x73*x87); |
| if( (((-1.00167830918099)+(((-1.0)*x81*x88))+((x77*x86))+((x87*x91))+((x79*x84))+(((-1.0)*x73*x88))+(((-1.0)*x83*x85))+((x78*x84))+((x82*x84))+((x81*x87))+((x78*x96))+((x86*x90))+((x86*x95))+(((-1.0)*x77*x85))+((x86*x89))+((x74*x86))+(((-0.711807006502117)*x78*x79*x80))+(((-1.0)*x87*x92))+(((-1.0)*x87*x94))+(((-1.0)*x86*x93))+(((-1.0)*x86*x92))+((x76*x87))+((x73*x77*x86))+x96+(((-1.0)*x74*x85))+(((-0.711807006502117)*x73*x75*x76))+(((-1.0)*x76*x88))+(((-1.0)*x84*x94))+(((-1.0)*x84*x93))+((x83*x86))+(((-0.711807006502117)*x72*x74*x77))+((x73*x78*x84))+((x84*x91))+((x84*x90))+((x84*x95))+((x77*x96))+((x87*x89)))) < -1-IKFAST_SINCOS_THRESH || (((-1.00167830918099)+(((-1.0)*x81*x88))+((x77*x86))+((x87*x91))+((x79*x84))+(((-1.0)*x73*x88))+(((-1.0)*x83*x85))+((x78*x84))+((x82*x84))+((x81*x87))+((x78*x96))+((x86*x90))+((x86*x95))+(((-1.0)*x77*x85))+((x86*x89))+((x74*x86))+(((-0.711807006502117)*x78*x79*x80))+(((-1.0)*x87*x92))+(((-1.0)*x87*x94))+(((-1.0)*x86*x93))+(((-1.0)*x86*x92))+((x76*x87))+((x73*x77*x86))+x96+(((-1.0)*x74*x85))+(((-0.711807006502117)*x73*x75*x76))+(((-1.0)*x76*x88))+(((-1.0)*x84*x94))+(((-1.0)*x84*x93))+((x83*x86))+(((-0.711807006502117)*x72*x74*x77))+((x73*x78*x84))+((x84*x91))+((x84*x90))+((x84*x95))+((x77*x96))+((x87*x89)))) > 1+IKFAST_SINCOS_THRESH ) |
| continue; |
| IkReal x97=IKasin(((-1.00167830918099)+(((-1.0)*x81*x88))+((x77*x86))+((x87*x91))+((x79*x84))+(((-1.0)*x73*x88))+(((-1.0)*x83*x85))+((x78*x84))+((x82*x84))+((x81*x87))+((x78*x96))+((x86*x90))+((x86*x95))+(((-1.0)*x77*x85))+((x86*x89))+((x74*x86))+(((-0.711807006502117)*x78*x79*x80))+(((-1.0)*x87*x92))+(((-1.0)*x87*x94))+(((-1.0)*x86*x93))+(((-1.0)*x86*x92))+((x76*x87))+((x73*x77*x86))+x96+(((-1.0)*x74*x85))+(((-0.711807006502117)*x73*x75*x76))+(((-1.0)*x76*x88))+(((-1.0)*x84*x94))+(((-1.0)*x84*x93))+((x83*x86))+(((-0.711807006502117)*x72*x74*x77))+((x73*x78*x84))+((x84*x91))+((x84*x90))+((x84*x95))+((x77*x96))+((x87*x89)))); |
| j2array[0]=((0.136826551321617)+(((-1.0)*x97))); |
| sj2array[0]=IKsin(j2array[0]); |
| cj2array[0]=IKcos(j2array[0]); |
| j2array[1]=((3.27841920491141)+x97); |
| sj2array[1]=IKsin(j2array[1]); |
| cj2array[1]=IKcos(j2array[1]); |
| if( j2array[0] > IKPI ) |
| { |
| j2array[0]-=IK2PI; |
| } |
| else if( j2array[0] < -IKPI ) |
| { j2array[0]+=IK2PI; |
| } |
| j2valid[0] = true; |
| if( j2array[1] > IKPI ) |
| { |
| j2array[1]-=IK2PI; |
| } |
| else if( j2array[1] < -IKPI ) |
| { j2array[1]+=IK2PI; |
| } |
| j2valid[1] = true; |
| for(int ij2 = 0; ij2 < 2; ++ij2) |
| { |
| if( !j2valid[ij2] ) |
| { |
| continue; |
| } |
| _ij2[0] = ij2; _ij2[1] = -1; |
| for(int iij2 = ij2+1; iij2 < 2; ++iij2) |
| { |
| if( j2valid[iij2] && IKabs(cj2array[ij2]-cj2array[iij2]) < IKFAST_SOLUTION_THRESH && IKabs(sj2array[ij2]-sj2array[iij2]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j2valid[iij2]=false; _ij2[1] = iij2; break; |
| } |
| } |
| j2 = j2array[ij2]; cj2 = cj2array[ij2]; sj2 = sj2array[ij2]; |
| |
| { |
| IkReal j1eval[2]; |
| IkReal x98=(py*sj0); |
| IkReal x99=((41.5020408163265)*cj2); |
| IkReal x100=(pz*sj2); |
| IkReal x101=((5.71428571428571)*sj2); |
| IkReal x102=(cj2*pz); |
| IkReal x103=(cj0*px); |
| IkReal x104=((1.271)*cj2); |
| IkReal x105=((0.175)*sj2); |
| j1eval[0]=((((-35.7551020408163)*pz))+(((-1.0)*sj2))+(((41.5020408163265)*x100))+((x103*x99))+((x101*x98))+(((-5.71428571428571)*x102))+((x98*x99))+((x101*x103))+(((-7.26285714285714)*cj2))); |
| j1eval[1]=IKsign(((((-1.095)*pz))+(((-0.175)*x102))+((x103*x105))+((x103*x104))+(((-0.030625)*sj2))+((x105*x98))+(((1.271)*x100))+((x104*x98))+(((-0.222425)*cj2)))); |
| if( IKabs(j1eval[0]) < 0.0000010000000000 || IKabs(j1eval[1]) < 0.0000010000000000 ) |
| { |
| { |
| IkReal j1eval[2]; |
| j1eval[0]=((7.42359034572733)+(((-7.26285714285714)*sj2))+cj2); |
| j1eval[1]=IKsign(((2.845091)+(((0.38325)*cj2))+(((-2.78349)*sj2)))); |
| if( IKabs(j1eval[0]) < 0.0000010000000000 || IKabs(j1eval[1]) < 0.0000010000000000 ) |
| { |
| { |
| IkReal j1eval[2]; |
| IkReal x106=(py*sj0); |
| IkReal x107=((0.175)*cj2); |
| IkReal x108=((5.71428571428571)*cj2); |
| IkReal x109=(cj0*px); |
| IkReal x110=((1.271)*sj2); |
| IkReal x111=(pz*sj2); |
| IkReal x112=(cj2*pz); |
| IkReal x113=((41.5020408163265)*sj2); |
| j1eval[0]=((6.25714285714286)+(((-7.26285714285714)*sj2))+(((-35.7551020408163)*x109))+(((-35.7551020408163)*x106))+cj2+((x106*x113))+(((-5.71428571428571)*x111))+(((-41.5020408163265)*x112))+((x109*x113))+(((-1.0)*x106*x108))+(((-1.0)*x108*x109))); |
| j1eval[1]=IKsign(((0.191625)+(((-0.175)*x111))+(((-1.271)*x112))+(((-1.095)*x106))+(((-1.095)*x109))+(((0.030625)*cj2))+((x106*x110))+(((-1.0)*x107*x109))+((x109*x110))+(((-1.0)*x106*x107))+(((-0.222425)*sj2)))); |
| if( IKabs(j1eval[0]) < 0.0000010000000000 || IKabs(j1eval[1]) < 0.0000010000000000 ) |
| { |
| continue; // no branches [j1] |
| |
| } else |
| { |
| { |
| IkReal j1array[1], cj1array[1], sj1array[1]; |
| bool j1valid[1]={false}; |
| _nj1 = 1; |
| IkReal x114=cj2*cj2; |
| IkReal x115=(cj2*sj2); |
| IkReal x116=(py*sj0); |
| IkReal x117=((1.271)*sj2); |
| IkReal x118=((0.175)*cj2); |
| IkReal x119=(cj0*px); |
| IkReal x120=((0.175)*pz); |
| IkReal x121=((1.0)*pz); |
| CheckValue<IkReal> x122=IKPowWithIntegerCheck(IKsign(((0.191625)+(((-1.095)*x116))+(((-1.095)*x119))+(((-1.0)*x118*x119))+(((-1.0)*sj2*x120))+(((-1.271)*cj2*pz))+(((0.030625)*cj2))+(((-1.0)*x116*x118))+(((-0.222425)*sj2))+((x116*x117))+((x117*x119)))),-1); |
| if(!x122.valid){ |
| continue; |
| } |
| CheckValue<IkReal> x123 = IKatan2WithCheck(IkReal(((-2.814466)+(((0.44485)*x115))+(((2.78349)*sj2))+(((-0.38325)*cj2))+(pz*pz)+(((1.584816)*x114)))),IkReal(((0.222425)+(((-0.191625)*sj2))+(((-1.0)*x119*x121))+(((-1.0)*x116*x121))+(((-1.391745)*cj2))+x120+(((1.584816)*x115))+(((-0.44485)*x114)))),IKFAST_ATAN2_MAGTHRESH); |
| if(!x123.valid){ |
| continue; |
| } |
| j1array[0]=((-1.5707963267949)+(((1.5707963267949)*(x122.value)))+(x123.value)); |
| sj1array[0]=IKsin(j1array[0]); |
| cj1array[0]=IKcos(j1array[0]); |
| if( j1array[0] > IKPI ) |
| { |
| j1array[0]-=IK2PI; |
| } |
| else if( j1array[0] < -IKPI ) |
| { j1array[0]+=IK2PI; |
| } |
| j1valid[0] = true; |
| for(int ij1 = 0; ij1 < 1; ++ij1) |
| { |
| if( !j1valid[ij1] ) |
| { |
| continue; |
| } |
| _ij1[0] = ij1; _ij1[1] = -1; |
| for(int iij1 = ij1+1; iij1 < 1; ++iij1) |
| { |
| if( j1valid[iij1] && IKabs(cj1array[ij1]-cj1array[iij1]) < IKFAST_SOLUTION_THRESH && IKabs(sj1array[ij1]-sj1array[iij1]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j1valid[iij1]=false; _ij1[1] = iij1; break; |
| } |
| } |
| j1 = j1array[ij1]; cj1 = cj1array[ij1]; sj1 = sj1array[ij1]; |
| { |
| IkReal evalcond[5]; |
| IkReal x124=IKcos(j1); |
| IkReal x125=IKsin(j1); |
| IkReal x126=py*py; |
| IkReal x127=r11*r11; |
| IkReal x128=r21*r21; |
| IkReal x129=r01*r01; |
| IkReal x130=px*px; |
| IkReal x131=pz*pz; |
| IkReal x132=r10*r10; |
| IkReal x133=r00*r00; |
| IkReal x134=r20*r20; |
| IkReal x135=r02*r02; |
| IkReal x136=r22*r22; |
| IkReal x137=r12*r12; |
| IkReal x138=((1.271)*cj2); |
| IkReal x139=(cj0*px); |
| IkReal x140=((0.175)*cj2); |
| IkReal x141=(py*sj0); |
| IkReal x142=(sj2*x124); |
| IkReal x143=((1.0)*x125); |
| IkReal x144=((1.0)*x136); |
| IkReal x145=(sj2*x125); |
| IkReal x146=(x130*x133); |
| IkReal x147=(x130*x135); |
| IkReal x148=(x128*x131); |
| IkReal x149=(x126*x137); |
| IkReal x150=(x131*x134); |
| IkReal x151=(x126*x132); |
| IkReal x152=(x126*x127); |
| IkReal x153=(x129*x130); |
| evalcond[0]=(((x124*x141))+(((-1.0)*pz*x143))+(((-0.175)*sj2))+(((-1.0)*x138))+((x124*x139))+(((-0.175)*x124))); |
| evalcond[1]=((((1.271)*x142))+(((-1.0)*x124*x140))+(((0.175)*x145))+((x125*x138))+pz+(((-1.095)*x124))); |
| evalcond[2]=((1.095)+(((-1.0)*x139*x143))+x140+(((-1.0)*pz*x124))+(((-1.0)*x141*x143))+(((0.175)*x125))+(((-1.271)*sj2))); |
| evalcond[3]=((-0.175)+(((1.271)*x145))+(((-1.0)*x125*x140))+(((-0.175)*x142))+(((-1.0)*x124*x138))+x141+x139+(((-1.095)*x125))); |
| evalcond[4]=((-2.875716)+(((-2.0)*x129*x146))+(((-0.38325)*x125))+(((-0.44485)*cj2*x124))+(((-1.0)*x131*x137*x144))+((x128*x153))+((x128*x152))+(((2.78349)*sj2))+(((-0.38325)*cj2))+(((-1.0)*x144*x147))+(((-1.0)*x144*x149))+(((-2.0)*x134*x148))+(((-1.0)*x137*x147))+x153+x152+x151+x150+x146+x147+x148+x149+(((-0.06125)*x142))+((x129*x148))+((x127*x148))+((x131*x136))+((x129*x152))+(((-2.0)*x127*x151))+((x127*x153))+(((-1.0)*x131*x135*x144))+((x134*x146))+(((-0.06125)*cj2*x125))+((x134*x151))+((x132*x146))+((x133*x150))+((x133*x151))+((x132*x150))+(((-1.0)*x135*x149))+(((0.44485)*x145))); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[2]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[3]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[4]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| rotationfunction0(solutions); |
| } |
| } |
| |
| } |
| |
| } |
| |
| } else |
| { |
| { |
| IkReal j1array[1], cj1array[1], sj1array[1]; |
| bool j1valid[1]={false}; |
| _nj1 = 1; |
| IkReal x2707=((0.175)*cj2); |
| IkReal x2708=(cj0*px); |
| IkReal x2709=(py*sj0); |
| IkReal x2710=((1.271)*pz); |
| IkReal x2711=((0.175)*sj2); |
| IkReal x2712=((1.271)*x2709); |
| CheckValue<IkReal> x2713 = IKatan2WithCheck(IkReal(((-0.191625)+(((-0.030625)*cj2))+(((-1.0)*cj2*x2710))+(((-1.271)*sj2*x2708))+((x2707*x2708))+((x2707*x2709))+(((-1.0)*sj2*x2712))+(((-1.0)*pz*x2711))+(((0.222425)*sj2))+(((1.095)*x2708))+(((1.095)*x2709)))),IkReal((((x2708*x2711))+((cj2*x2712))+(((1.095)*pz))+((x2709*x2711))+(((1.271)*cj2*x2708))+((pz*x2707))+(((-1.0)*sj2*x2710))+(((-0.030625)*sj2))+(((-0.222425)*cj2)))),IKFAST_ATAN2_MAGTHRESH); |
| if(!x2713.valid){ |
| continue; |
| } |
| CheckValue<IkReal> x2714=IKPowWithIntegerCheck(IKsign(((2.845091)+(((0.38325)*cj2))+(((-2.78349)*sj2)))),-1); |
| if(!x2714.valid){ |
| continue; |
| } |
| j1array[0]=((-1.5707963267949)+(x2713.value)+(((1.5707963267949)*(x2714.value)))); |
| sj1array[0]=IKsin(j1array[0]); |
| cj1array[0]=IKcos(j1array[0]); |
| if( j1array[0] > IKPI ) |
| { |
| j1array[0]-=IK2PI; |
| } |
| else if( j1array[0] < -IKPI ) |
| { j1array[0]+=IK2PI; |
| } |
| j1valid[0] = true; |
| for(int ij1 = 0; ij1 < 1; ++ij1) |
| { |
| if( !j1valid[ij1] ) |
| { |
| continue; |
| } |
| _ij1[0] = ij1; _ij1[1] = -1; |
| for(int iij1 = ij1+1; iij1 < 1; ++iij1) |
| { |
| if( j1valid[iij1] && IKabs(cj1array[ij1]-cj1array[iij1]) < IKFAST_SOLUTION_THRESH && IKabs(sj1array[ij1]-sj1array[iij1]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j1valid[iij1]=false; _ij1[1] = iij1; break; |
| } |
| } |
| j1 = j1array[ij1]; cj1 = cj1array[ij1]; sj1 = sj1array[ij1]; |
| { |
| IkReal evalcond[5]; |
| IkReal x2715=IKcos(j1); |
| IkReal x2716=IKsin(j1); |
| IkReal x2717=py*py; |
| IkReal x2718=r11*r11; |
| IkReal x2719=r21*r21; |
| IkReal x2720=r01*r01; |
| IkReal x2721=px*px; |
| IkReal x2722=pz*pz; |
| IkReal x2723=r10*r10; |
| IkReal x2724=r00*r00; |
| IkReal x2725=r20*r20; |
| IkReal x2726=r02*r02; |
| IkReal x2727=r22*r22; |
| IkReal x2728=r12*r12; |
| IkReal x2729=((1.271)*cj2); |
| IkReal x2730=(cj0*px); |
| IkReal x2731=((0.175)*cj2); |
| IkReal x2732=(py*sj0); |
| IkReal x2733=(sj2*x2715); |
| IkReal x2734=((1.0)*x2716); |
| IkReal x2735=((1.0)*x2727); |
| IkReal x2736=(sj2*x2716); |
| IkReal x2737=(x2721*x2724); |
| IkReal x2738=(x2721*x2726); |
| IkReal x2739=(x2719*x2722); |
| IkReal x2740=(x2717*x2728); |
| IkReal x2741=(x2722*x2725); |
| IkReal x2742=(x2717*x2723); |
| IkReal x2743=(x2717*x2718); |
| IkReal x2744=(x2720*x2721); |
| evalcond[0]=((((-1.0)*pz*x2734))+((x2715*x2732))+((x2715*x2730))+(((-0.175)*sj2))+(((-1.0)*x2729))+(((-0.175)*x2715))); |
| evalcond[1]=((((-1.095)*x2715))+(((-1.0)*x2715*x2731))+(((0.175)*x2736))+(((1.271)*x2733))+pz+((x2716*x2729))); |
| evalcond[2]=((1.095)+x2731+(((-1.0)*x2730*x2734))+(((0.175)*x2716))+(((-1.0)*pz*x2715))+(((-1.271)*sj2))+(((-1.0)*x2732*x2734))); |
| evalcond[3]=((-0.175)+x2730+x2732+(((-1.095)*x2716))+(((1.271)*x2736))+(((-1.0)*x2715*x2729))+(((-0.175)*x2733))+(((-1.0)*x2716*x2731))); |
| evalcond[4]=((-2.875716)+(((-2.0)*x2725*x2739))+x2741+x2740+x2743+x2742+x2744+x2737+x2738+x2739+(((-2.0)*x2720*x2737))+(((-1.0)*x2726*x2740))+(((2.78349)*sj2))+(((-0.44485)*cj2*x2715))+(((-0.38325)*cj2))+(((-1.0)*x2722*x2726*x2735))+((x2725*x2737))+((x2723*x2741))+((x2720*x2739))+(((-0.06125)*cj2*x2716))+(((-0.06125)*x2733))+(((-1.0)*x2735*x2738))+(((-1.0)*x2735*x2740))+((x2718*x2739))+((x2723*x2737))+((x2724*x2741))+((x2724*x2742))+((x2720*x2743))+(((-1.0)*x2728*x2738))+(((-0.38325)*x2716))+((x2722*x2727))+((x2725*x2742))+(((-2.0)*x2718*x2742))+((x2719*x2744))+((x2719*x2743))+(((-1.0)*x2722*x2728*x2735))+(((0.44485)*x2736))+((x2718*x2744))); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[2]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[3]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[4]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| rotationfunction0(solutions); |
| } |
| } |
| |
| } |
| |
| } |
| |
| } else |
| { |
| { |
| IkReal j1array[1], cj1array[1], sj1array[1]; |
| bool j1valid[1]={false}; |
| _nj1 = 1; |
| IkReal x2745=cj2*cj2; |
| IkReal x2746=(cj2*sj2); |
| IkReal x2747=((0.175)*pz); |
| IkReal x2748=((1.271)*cj2); |
| IkReal x2749=(py*sj0); |
| IkReal x2750=(cj0*px); |
| IkReal x2751=((0.175)*sj2); |
| IkReal x2752=((1.0)*pz); |
| CheckValue<IkReal> x2753 = IKatan2WithCheck(IkReal(((-0.222425)+x2747+(((-1.584816)*x2746))+(((0.191625)*sj2))+(((-1.0)*x2750*x2752))+(((-1.0)*x2749*x2752))+(((1.391745)*cj2))+(((0.44485)*x2745)))),IkReal(((0.030625)+(((-1.0)*pz*x2752))+(((1.584816)*x2745))+(((0.44485)*x2746)))),IKFAST_ATAN2_MAGTHRESH); |
| if(!x2753.valid){ |
| continue; |
| } |
| CheckValue<IkReal> x2754=IKPowWithIntegerCheck(IKsign((((x2749*x2751))+(((-1.095)*pz))+(((1.271)*pz*sj2))+((x2750*x2751))+(((-1.0)*cj2*x2747))+((x2748*x2749))+((x2748*x2750))+(((-0.030625)*sj2))+(((-0.222425)*cj2)))),-1); |
| if(!x2754.valid){ |
| continue; |
| } |
| j1array[0]=((-1.5707963267949)+(x2753.value)+(((1.5707963267949)*(x2754.value)))); |
| sj1array[0]=IKsin(j1array[0]); |
| cj1array[0]=IKcos(j1array[0]); |
| if( j1array[0] > IKPI ) |
| { |
| j1array[0]-=IK2PI; |
| } |
| else if( j1array[0] < -IKPI ) |
| { j1array[0]+=IK2PI; |
| } |
| j1valid[0] = true; |
| for(int ij1 = 0; ij1 < 1; ++ij1) |
| { |
| if( !j1valid[ij1] ) |
| { |
| continue; |
| } |
| _ij1[0] = ij1; _ij1[1] = -1; |
| for(int iij1 = ij1+1; iij1 < 1; ++iij1) |
| { |
| if( j1valid[iij1] && IKabs(cj1array[ij1]-cj1array[iij1]) < IKFAST_SOLUTION_THRESH && IKabs(sj1array[ij1]-sj1array[iij1]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j1valid[iij1]=false; _ij1[1] = iij1; break; |
| } |
| } |
| j1 = j1array[ij1]; cj1 = cj1array[ij1]; sj1 = sj1array[ij1]; |
| { |
| IkReal evalcond[5]; |
| IkReal x2755=IKcos(j1); |
| IkReal x2756=IKsin(j1); |
| IkReal x2757=py*py; |
| IkReal x2758=r11*r11; |
| IkReal x2759=r21*r21; |
| IkReal x2760=r01*r01; |
| IkReal x2761=px*px; |
| IkReal x2762=pz*pz; |
| IkReal x2763=r10*r10; |
| IkReal x2764=r00*r00; |
| IkReal x2765=r20*r20; |
| IkReal x2766=r02*r02; |
| IkReal x2767=r22*r22; |
| IkReal x2768=r12*r12; |
| IkReal x2769=((1.271)*cj2); |
| IkReal x2770=(cj0*px); |
| IkReal x2771=((0.175)*cj2); |
| IkReal x2772=(py*sj0); |
| IkReal x2773=(sj2*x2755); |
| IkReal x2774=((1.0)*x2756); |
| IkReal x2775=((1.0)*x2767); |
| IkReal x2776=(sj2*x2756); |
| IkReal x2777=(x2761*x2764); |
| IkReal x2778=(x2761*x2766); |
| IkReal x2779=(x2759*x2762); |
| IkReal x2780=(x2757*x2768); |
| IkReal x2781=(x2762*x2765); |
| IkReal x2782=(x2757*x2763); |
| IkReal x2783=(x2757*x2758); |
| IkReal x2784=(x2760*x2761); |
| evalcond[0]=((((-0.175)*x2755))+(((-0.175)*sj2))+(((-1.0)*pz*x2774))+((x2755*x2770))+((x2755*x2772))+(((-1.0)*x2769))); |
| evalcond[1]=(((x2756*x2769))+(((0.175)*x2776))+(((-1.095)*x2755))+pz+(((1.271)*x2773))+(((-1.0)*x2755*x2771))); |
| evalcond[2]=((1.095)+x2771+(((-1.0)*pz*x2755))+(((-1.0)*x2770*x2774))+(((-1.0)*x2772*x2774))+(((0.175)*x2756))+(((-1.271)*sj2))); |
| evalcond[3]=((-0.175)+x2770+x2772+(((-1.0)*x2755*x2769))+(((-1.0)*x2756*x2771))+(((-1.095)*x2756))+(((1.271)*x2776))+(((-0.175)*x2773))); |
| evalcond[4]=((-2.875716)+((x2758*x2779))+x2778+x2779+x2777+x2784+x2781+x2780+x2783+x2782+((x2763*x2777))+(((-1.0)*x2766*x2780))+(((-1.0)*x2762*x2768*x2775))+(((-0.06125)*cj2*x2756))+(((-1.0)*x2762*x2766*x2775))+((x2765*x2782))+(((-2.0)*x2760*x2777))+((x2764*x2782))+((x2764*x2781))+(((2.78349)*sj2))+(((-0.06125)*x2773))+((x2760*x2783))+(((-0.38325)*cj2))+(((-1.0)*x2768*x2778))+((x2762*x2767))+((x2759*x2783))+((x2759*x2784))+(((-0.38325)*x2756))+((x2763*x2781))+((x2758*x2784))+(((-2.0)*x2758*x2782))+(((-1.0)*x2775*x2778))+(((-0.44485)*cj2*x2755))+(((-2.0)*x2765*x2779))+(((0.44485)*x2776))+((x2765*x2777))+((x2760*x2779))+(((-1.0)*x2775*x2780))); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[2]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[3]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[4]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| rotationfunction0(solutions); |
| } |
| } |
| |
| } |
| |
| } |
| } |
| } |
| } |
| } |
| |
| } |
| |
| } |
| } |
| return solutions.GetNumSolutions()>0; |
| } |
| inline void rotationfunction0(IkSolutionListBase<IkReal>& solutions) { |
| for(int rotationiter = 0; rotationiter < 1; ++rotationiter) { |
| IkReal x154=((1.0)*cj1); |
| IkReal x155=((1.0)*sj1); |
| IkReal x156=((1.0)*sj0); |
| IkReal x157=((1.0)*sj2); |
| IkReal x158=(((r10*sj0))+((cj0*r00))); |
| IkReal x159=(((r11*sj0))+((cj0*r01))); |
| IkReal x160=(((r12*sj0))+((cj0*r02))); |
| IkReal x161=((((-1.0)*r20*x155))+((cj1*x158))); |
| IkReal x162=(((cj1*x159))+(((-1.0)*r21*x155))); |
| IkReal x163=(((cj1*x160))+(((-1.0)*r22*x155))); |
| IkReal x164=((((-1.0)*x155*x158))+(((-1.0)*r20*x154))); |
| IkReal x165=((((-1.0)*x155*x159))+(((-1.0)*r21*x154))); |
| IkReal x166=((((-1.0)*x155*x160))+(((-1.0)*r22*x154))); |
| new_r00=((((-1.0)*x157*x161))+((cj2*x164))); |
| new_r01=((((-1.0)*r00*x156))+((cj0*r10))); |
| new_r02=(((cj2*x161))+((sj2*x164))); |
| new_r10=((((-1.0)*x157*x162))+((cj2*x165))); |
| new_r11=((((-1.0)*r01*x156))+((cj0*r11))); |
| new_r12=(((cj2*x162))+((sj2*x165))); |
| new_r20=((((-1.0)*x157*x163))+((cj2*x166))); |
| new_r21=((((-1.0)*r02*x156))+((cj0*r12))); |
| new_r22=(((cj2*x163))+((sj2*x166))); |
| { |
| IkReal j4array[2], cj4array[2], sj4array[2]; |
| bool j4valid[2]={false}; |
| _nj4 = 2; |
| if( (new_r22) < -1-IKFAST_SINCOS_THRESH || (new_r22) > 1+IKFAST_SINCOS_THRESH ) |
| continue; |
| IkReal x167=IKasin(new_r22); |
| j4array[0]=((1.57083632679488)+(((-1.0)*x167))); |
| sj4array[0]=IKsin(j4array[0]); |
| cj4array[0]=IKcos(j4array[0]); |
| j4array[1]=((4.71242898038467)+x167); |
| sj4array[1]=IKsin(j4array[1]); |
| cj4array[1]=IKcos(j4array[1]); |
| if( j4array[0] > IKPI ) |
| { |
| j4array[0]-=IK2PI; |
| } |
| else if( j4array[0] < -IKPI ) |
| { j4array[0]+=IK2PI; |
| } |
| j4valid[0] = true; |
| if( j4array[1] > IKPI ) |
| { |
| j4array[1]-=IK2PI; |
| } |
| else if( j4array[1] < -IKPI ) |
| { j4array[1]+=IK2PI; |
| } |
| j4valid[1] = true; |
| for(int ij4 = 0; ij4 < 2; ++ij4) |
| { |
| if( !j4valid[ij4] ) |
| { |
| continue; |
| } |
| _ij4[0] = ij4; _ij4[1] = -1; |
| for(int iij4 = ij4+1; iij4 < 2; ++iij4) |
| { |
| if( j4valid[iij4] && IKabs(cj4array[ij4]-cj4array[iij4]) < IKFAST_SOLUTION_THRESH && IKabs(sj4array[ij4]-sj4array[iij4]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j4valid[iij4]=false; _ij4[1] = iij4; break; |
| } |
| } |
| j4 = j4array[ij4]; cj4 = cj4array[ij4]; sj4 = sj4array[ij4]; |
| |
| { |
| IkReal j5eval[3]; |
| j5eval[0]=((((25000.0)*sj4))+(((-1.0)*cj4))); |
| j5eval[1]=((IKabs(new_r12))+(IKabs(new_r02))); |
| j5eval[2]=IKsign(((((-3.9999999968e-5)*cj4))+(((0.9999999992)*sj4)))); |
| if( IKabs(j5eval[0]) < 0.0000010000000000 || IKabs(j5eval[1]) < 0.0000010000000000 || IKabs(j5eval[2]) < 0.0000010000000000 ) |
| { |
| { |
| IkReal j3eval[3]; |
| j3eval[0]=((((-25000.0)*sj4))+cj4); |
| j3eval[1]=IKsign(((((-0.9999999992)*sj4))+(((3.9999999968e-5)*cj4)))); |
| j3eval[2]=((IKabs(new_r20))+(IKabs(new_r21))); |
| if( IKabs(j3eval[0]) < 0.0000010000000000 || IKabs(j3eval[1]) < 0.0000010000000000 || IKabs(j3eval[2]) < 0.0000010000000000 ) |
| { |
| { |
| IkReal j5eval[3]; |
| IkReal x168=((625000000.5)*sj4); |
| IkReal x169=((25000.00002)*cj4); |
| IkReal x170=((new_r12*new_r12)+(new_r02*new_r02)); |
| j5eval[0]=x170; |
| j5eval[1]=((IKabs((((new_r12*x168))+(((-1.0)*new_r12*x169)))))+(IKabs(((((-1.0)*new_r02*x168))+((new_r02*x169)))))); |
| j5eval[2]=IKsign(x170); |
| if( IKabs(j5eval[0]) < 0.0000010000000000 || IKabs(j5eval[1]) < 0.0000010000000000 || IKabs(j5eval[2]) < 0.0000010000000000 ) |
| { |
| { |
| IkReal evalcond[5]; |
| bool bgotonextstatement = true; |
| do |
| { |
| evalcond[0]=((new_r12*new_r12)+(new_r02*new_r02)); |
| if( IKabs(evalcond[0]) < 0.0000050000000000 ) |
| { |
| bgotonextstatement=false; |
| { |
| IkReal j5eval[1]; |
| new_r12=0; |
| new_r02=0; |
| j5eval[0]=IKabs(((((-25000.0)*sj4))+cj4)); |
| if( IKabs(j5eval[0]) < 0.0000000100000000 ) |
| { |
| { |
| IkReal j5eval[1]; |
| new_r12=0; |
| new_r02=0; |
| j5eval[0]=IKabs(((((-0.9999999992)*sj4))+(((3.9999999968e-5)*cj4)))); |
| if( IKabs(j5eval[0]) < 0.0000000100000000 ) |
| { |
| continue; // no branches [j3, j5] |
| |
| } else |
| { |
| IkReal op[2+1], zeror[2]; |
| int numroots; |
| IkReal x171=((0.9999999992)*sj4); |
| IkReal x172=((3.9999999968e-5)*cj4); |
| op[0]=((((-1.0)*x171))+x172); |
| op[1]=0; |
| op[2]=((((-1.0)*x172))+x171); |
| polyroots2(op,zeror,numroots); |
| IkReal j5array[2], cj5array[2], sj5array[2], tempj5array[1]; |
| int numsolutions = 0; |
| for(int ij5 = 0; ij5 < numroots; ++ij5) |
| { |
| IkReal htj5 = zeror[ij5]; |
| tempj5array[0]=((2.0)*(atan(htj5))); |
| for(int kj5 = 0; kj5 < 1; ++kj5) |
| { |
| j5array[numsolutions] = tempj5array[kj5]; |
| if( j5array[numsolutions] > IKPI ) |
| { |
| j5array[numsolutions]-=IK2PI; |
| } |
| else if( j5array[numsolutions] < -IKPI ) |
| { |
| j5array[numsolutions]+=IK2PI; |
| } |
| sj5array[numsolutions] = IKsin(j5array[numsolutions]); |
| cj5array[numsolutions] = IKcos(j5array[numsolutions]); |
| numsolutions++; |
| } |
| } |
| bool j5valid[2]={true,true}; |
| _nj5 = 2; |
| for(int ij5 = 0; ij5 < numsolutions; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| htj5 = IKtan(j5/2); |
| |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < numsolutions; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| { |
| IkReal j3array[1], cj3array[1], sj3array[1]; |
| bool j3valid[1]={false}; |
| _nj3 = 1; |
| if( IKabs(((((-1.0)*new_r00*sj5))+(((-1.0)*cj5*new_r10)))) < IKFAST_ATAN2_MAGTHRESH && IKabs((((cj5*new_r11))+((new_r01*sj5)))) < IKFAST_ATAN2_MAGTHRESH && IKabs(IKsqr(((((-1.0)*new_r00*sj5))+(((-1.0)*cj5*new_r10))))+IKsqr((((cj5*new_r11))+((new_r01*sj5))))-1) <= IKFAST_SINCOS_THRESH ) |
| continue; |
| j3array[0]=IKatan2(((((-1.0)*new_r00*sj5))+(((-1.0)*cj5*new_r10))), (((cj5*new_r11))+((new_r01*sj5)))); |
| sj3array[0]=IKsin(j3array[0]); |
| cj3array[0]=IKcos(j3array[0]); |
| if( j3array[0] > IKPI ) |
| { |
| j3array[0]-=IK2PI; |
| } |
| else if( j3array[0] < -IKPI ) |
| { j3array[0]+=IK2PI; |
| } |
| j3valid[0] = true; |
| for(int ij3 = 0; ij3 < 1; ++ij3) |
| { |
| if( !j3valid[ij3] ) |
| { |
| continue; |
| } |
| _ij3[0] = ij3; _ij3[1] = -1; |
| for(int iij3 = ij3+1; iij3 < 1; ++iij3) |
| { |
| if( j3valid[iij3] && IKabs(cj3array[ij3]-cj3array[iij3]) < IKFAST_SOLUTION_THRESH && IKabs(sj3array[ij3]-sj3array[iij3]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j3valid[iij3]=false; _ij3[1] = iij3; break; |
| } |
| } |
| j3 = j3array[ij3]; cj3 = cj3array[ij3]; sj3 = sj3array[ij3]; |
| { |
| IkReal evalcond[10]; |
| IkReal x173=IKsin(j3); |
| IkReal x174=IKcos(j3); |
| IkReal x175=(cj5*new_r01); |
| IkReal x176=((25000.00002)*sj4); |
| IkReal x177=(cj5*new_r00); |
| IkReal x178=((1.0)*sj5); |
| IkReal x179=((1.0)*x174); |
| IkReal x180=(sj5*x173); |
| IkReal x181=(cj5*x174); |
| IkReal x182=(cj5*x173); |
| evalcond[0]=(((cj5*new_r10))+((new_r00*sj5))+x173); |
| evalcond[1]=((((-1.0)*x179))+((cj5*new_r11))+((new_r01*sj5))); |
| evalcond[2]=(x182+((sj5*x174*x176))+new_r10); |
| evalcond[3]=((((-1.0)*x174*x176))+(((-1.0)*new_r10*x178))+x177); |
| evalcond[4]=((((-1.0)*new_r11*x178))+x175+(((-1.0)*x173*x176))); |
| evalcond[5]=(x180+(((-1.0)*x176*x181))+new_r00); |
| evalcond[6]=((((-1.0)*cj5*x179))+((x176*x180))+new_r11); |
| evalcond[7]=((((-1.0)*x174*x178))+(((-1.0)*x176*x182))+new_r01); |
| evalcond[8]=(((x176*x177))+(((-1.0)*x179))+(((-1.0)*new_r10*sj5*x176))); |
| evalcond[9]=((((-1.0)*new_r11*sj5*x176))+(((-1.0)*x173))+((x175*x176))); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[2]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[3]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[4]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[5]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[6]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[7]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[8]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[9]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| } |
| |
| } |
| |
| } |
| |
| } else |
| { |
| IkReal op[2+1], zeror[2]; |
| int numroots; |
| IkReal x183=((25000.0)*sj4); |
| op[0]=(cj4+(((-1.0)*x183))); |
| op[1]=0; |
| op[2]=(x183+(((-1.0)*cj4))); |
| polyroots2(op,zeror,numroots); |
| IkReal j5array[2], cj5array[2], sj5array[2], tempj5array[1]; |
| int numsolutions = 0; |
| for(int ij5 = 0; ij5 < numroots; ++ij5) |
| { |
| IkReal htj5 = zeror[ij5]; |
| tempj5array[0]=((2.0)*(atan(htj5))); |
| for(int kj5 = 0; kj5 < 1; ++kj5) |
| { |
| j5array[numsolutions] = tempj5array[kj5]; |
| if( j5array[numsolutions] > IKPI ) |
| { |
| j5array[numsolutions]-=IK2PI; |
| } |
| else if( j5array[numsolutions] < -IKPI ) |
| { |
| j5array[numsolutions]+=IK2PI; |
| } |
| sj5array[numsolutions] = IKsin(j5array[numsolutions]); |
| cj5array[numsolutions] = IKcos(j5array[numsolutions]); |
| numsolutions++; |
| } |
| } |
| bool j5valid[2]={true,true}; |
| _nj5 = 2; |
| for(int ij5 = 0; ij5 < numsolutions; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| htj5 = IKtan(j5/2); |
| |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < numsolutions; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| { |
| IkReal j3array[1], cj3array[1], sj3array[1]; |
| bool j3valid[1]={false}; |
| _nj3 = 1; |
| if( IKabs(((((-1.0)*new_r00*sj5))+(((-1.0)*cj5*new_r10)))) < IKFAST_ATAN2_MAGTHRESH && IKabs((((cj5*new_r11))+((new_r01*sj5)))) < IKFAST_ATAN2_MAGTHRESH && IKabs(IKsqr(((((-1.0)*new_r00*sj5))+(((-1.0)*cj5*new_r10))))+IKsqr((((cj5*new_r11))+((new_r01*sj5))))-1) <= IKFAST_SINCOS_THRESH ) |
| continue; |
| j3array[0]=IKatan2(((((-1.0)*new_r00*sj5))+(((-1.0)*cj5*new_r10))), (((cj5*new_r11))+((new_r01*sj5)))); |
| sj3array[0]=IKsin(j3array[0]); |
| cj3array[0]=IKcos(j3array[0]); |
| if( j3array[0] > IKPI ) |
| { |
| j3array[0]-=IK2PI; |
| } |
| else if( j3array[0] < -IKPI ) |
| { j3array[0]+=IK2PI; |
| } |
| j3valid[0] = true; |
| for(int ij3 = 0; ij3 < 1; ++ij3) |
| { |
| if( !j3valid[ij3] ) |
| { |
| continue; |
| } |
| _ij3[0] = ij3; _ij3[1] = -1; |
| for(int iij3 = ij3+1; iij3 < 1; ++iij3) |
| { |
| if( j3valid[iij3] && IKabs(cj3array[ij3]-cj3array[iij3]) < IKFAST_SOLUTION_THRESH && IKabs(sj3array[ij3]-sj3array[iij3]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j3valid[iij3]=false; _ij3[1] = iij3; break; |
| } |
| } |
| j3 = j3array[ij3]; cj3 = cj3array[ij3]; sj3 = sj3array[ij3]; |
| { |
| IkReal evalcond[10]; |
| IkReal x184=IKsin(j3); |
| IkReal x185=IKcos(j3); |
| IkReal x186=(cj5*new_r01); |
| IkReal x187=((25000.00002)*sj4); |
| IkReal x188=(cj5*new_r00); |
| IkReal x189=((1.0)*sj5); |
| IkReal x190=((1.0)*x185); |
| IkReal x191=(sj5*x184); |
| IkReal x192=(cj5*x185); |
| IkReal x193=(cj5*x184); |
| evalcond[0]=(((cj5*new_r10))+((new_r00*sj5))+x184); |
| evalcond[1]=(((cj5*new_r11))+((new_r01*sj5))+(((-1.0)*x190))); |
| evalcond[2]=(x193+new_r10+((sj5*x185*x187))); |
| evalcond[3]=(x188+(((-1.0)*new_r10*x189))+(((-1.0)*x185*x187))); |
| evalcond[4]=(x186+(((-1.0)*new_r11*x189))+(((-1.0)*x184*x187))); |
| evalcond[5]=(x191+(((-1.0)*x187*x192))+new_r00); |
| evalcond[6]=(((x187*x191))+(((-1.0)*cj5*x190))+new_r11); |
| evalcond[7]=((((-1.0)*x187*x193))+(((-1.0)*x185*x189))+new_r01); |
| evalcond[8]=((((-1.0)*new_r10*sj5*x187))+((x187*x188))+(((-1.0)*x190))); |
| evalcond[9]=(((x186*x187))+(((-1.0)*x184))+(((-1.0)*new_r11*sj5*x187))); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[2]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[3]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[4]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[5]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[6]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[7]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[8]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[9]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| } |
| |
| } |
| |
| } |
| |
| } |
| } while(0); |
| if( bgotonextstatement ) |
| { |
| bool bgotonextstatement = true; |
| do |
| { |
| evalcond[0]=((-3.14159265358979)+(IKfmod(((3.14159265358979)+(IKabs(((3.14155265358981)+j4)))), 6.28318530717959))); |
| evalcond[1]=new_r02; |
| evalcond[2]=new_r12; |
| evalcond[3]=new_r20; |
| evalcond[4]=new_r21; |
| if( IKabs(evalcond[0]) < 0.0000050000000000 && IKabs(evalcond[1]) < 0.0000050000000000 && IKabs(evalcond[2]) < 0.0000050000000000 && IKabs(evalcond[3]) < 0.0000050000000000 && IKabs(evalcond[4]) < 0.0000050000000000 ) |
| { |
| bgotonextstatement=false; |
| { |
| IkReal j5eval[1]; |
| sj4=-4.0e-5; |
| cj4=-1.0; |
| j4=-3.14155264453703; |
| j5eval[0]=((((5.12e-8)*(IKabs(new_r10))))+(IKabs(((((8.0000000064)*new_r11))+(((8.0)*new_r00)))))+(IKabs(((((16.0000000128)*new_r11))+(((16.0000000512)*new_r00)))))+(IKabs(((((-8.0000000064)*new_r10))+(((8.0)*new_r01)))))+(((2.0)*(IKabs(((((16.0000000128)*new_r00))+(((16.0)*new_r11)))))))); |
| if( IKabs(j5eval[0]) < 0.0000000100000000 ) |
| { |
| continue; // no branches [j3, j5] |
| |
| } else |
| { |
| IkReal op[4+1], zeror[4]; |
| int numroots; |
| IkReal j5evalpoly[1]; |
| IkReal x194=((((8.0000000064)*new_r11))+(((8.0)*new_r00))); |
| op[0]=x194; |
| op[1]=((-2.56e-8)*new_r10); |
| op[2]=((((16.0000000128)*new_r11))+(((16.0000000512)*new_r00))); |
| op[3]=((2.56e-8)*new_r10); |
| op[4]=x194; |
| polyroots4(op,zeror,numroots); |
| IkReal j5array[4], cj5array[4], sj5array[4], tempj5array[1]; |
| int numsolutions = 0; |
| for(int ij5 = 0; ij5 < numroots; ++ij5) |
| { |
| IkReal htj5 = zeror[ij5]; |
| tempj5array[0]=((2.0)*(atan(htj5))); |
| for(int kj5 = 0; kj5 < 1; ++kj5) |
| { |
| j5array[numsolutions] = tempj5array[kj5]; |
| if( j5array[numsolutions] > IKPI ) |
| { |
| j5array[numsolutions]-=IK2PI; |
| } |
| else if( j5array[numsolutions] < -IKPI ) |
| { |
| j5array[numsolutions]+=IK2PI; |
| } |
| sj5array[numsolutions] = IKsin(j5array[numsolutions]); |
| cj5array[numsolutions] = IKcos(j5array[numsolutions]); |
| numsolutions++; |
| } |
| } |
| bool j5valid[4]={true,true,true,true}; |
| _nj5 = 4; |
| for(int ij5 = 0; ij5 < numsolutions; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| htj5 = IKtan(j5/2); |
| |
| IkReal x195=((8.0000000064)*new_r10); |
| IkReal x196=((8.0)*new_r01); |
| IkReal x197=((((16.0000000128)*new_r00))+(((16.0)*new_r11))); |
| j5evalpoly[0]=((((htj5*htj5*htj5*htj5)*(((((-1.0)*x195))+x196))))+(((-1.0)*x196))+x195+((htj5*x197))+((x197*(htj5*htj5*htj5)))); |
| if( IKabs(j5evalpoly[0]) > 0.0000001000000000 ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < numsolutions; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| { |
| IkReal j3array[1], cj3array[1], sj3array[1]; |
| bool j3valid[1]={false}; |
| _nj3 = 1; |
| if( IKabs(((((-1.0)*new_r00*sj5))+(((-1.0)*cj5*new_r10)))) < IKFAST_ATAN2_MAGTHRESH && IKabs((((cj5*new_r11))+((new_r01*sj5)))) < IKFAST_ATAN2_MAGTHRESH && IKabs(IKsqr(((((-1.0)*new_r00*sj5))+(((-1.0)*cj5*new_r10))))+IKsqr((((cj5*new_r11))+((new_r01*sj5))))-1) <= IKFAST_SINCOS_THRESH ) |
| continue; |
| j3array[0]=IKatan2(((((-1.0)*new_r00*sj5))+(((-1.0)*cj5*new_r10))), (((cj5*new_r11))+((new_r01*sj5)))); |
| sj3array[0]=IKsin(j3array[0]); |
| cj3array[0]=IKcos(j3array[0]); |
| if( j3array[0] > IKPI ) |
| { |
| j3array[0]-=IK2PI; |
| } |
| else if( j3array[0] < -IKPI ) |
| { j3array[0]+=IK2PI; |
| } |
| j3valid[0] = true; |
| for(int ij3 = 0; ij3 < 1; ++ij3) |
| { |
| if( !j3valid[ij3] ) |
| { |
| continue; |
| } |
| _ij3[0] = ij3; _ij3[1] = -1; |
| for(int iij3 = ij3+1; iij3 < 1; ++iij3) |
| { |
| if( j3valid[iij3] && IKabs(cj3array[ij3]-cj3array[iij3]) < IKFAST_SOLUTION_THRESH && IKabs(sj3array[ij3]-sj3array[iij3]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j3valid[iij3]=false; _ij3[1] = iij3; break; |
| } |
| } |
| j3 = j3array[ij3]; cj3 = cj3array[ij3]; sj3 = sj3array[ij3]; |
| { |
| IkReal evalcond[10]; |
| IkReal x198=IKcos(j3); |
| IkReal x199=IKsin(j3); |
| IkReal x200=((1.0000000008)*sj5); |
| IkReal x201=(cj5*new_r01); |
| IkReal x202=((1.0)*sj5); |
| IkReal x203=(cj5*new_r00); |
| IkReal x204=((1.0)*x198); |
| IkReal x205=((1.0000000008)*x199); |
| IkReal x206=((1.0000000008)*x198); |
| evalcond[0]=(((cj5*new_r10))+((new_r00*sj5))+x199); |
| evalcond[1]=(((cj5*new_r11))+((new_r01*sj5))+(((-1.0)*x204))); |
| evalcond[2]=(x206+x203+(((-1.0)*new_r10*x202))); |
| evalcond[3]=(x205+x201+(((-1.0)*new_r11*x202))); |
| evalcond[4]=(((cj5*x206))+new_r00+((sj5*x199))); |
| evalcond[5]=(((cj5*x199))+(((-1.0)*x198*x200))+new_r10); |
| evalcond[6]=(((cj5*x205))+(((-1.0)*x198*x202))+new_r01); |
| evalcond[7]=((((-1.0)*cj5*x204))+(((-1.0)*x199*x200))+new_r11); |
| evalcond[8]=(((new_r10*x200))+(((-1.0000000008)*x203))+(((-1.0)*x204))); |
| evalcond[9]=(((new_r11*x200))+(((-1.0)*x199))+(((-1.0000000008)*x201))); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[2]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[3]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[4]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[5]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[6]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[7]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[8]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[9]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| } |
| |
| } |
| |
| } |
| |
| } |
| } while(0); |
| if( bgotonextstatement ) |
| { |
| bool bgotonextstatement = true; |
| do |
| { |
| evalcond[0]=((-3.14159265358979)+(IKfmod(((3.14159265358979)+(IKabs(((-3.99999999786682e-5)+j4)))), 6.28318530717959))); |
| evalcond[1]=new_r02; |
| evalcond[2]=new_r12; |
| evalcond[3]=new_r20; |
| evalcond[4]=new_r21; |
| if( IKabs(evalcond[0]) < 0.0000050000000000 && IKabs(evalcond[1]) < 0.0000050000000000 && IKabs(evalcond[2]) < 0.0000050000000000 && IKabs(evalcond[3]) < 0.0000050000000000 && IKabs(evalcond[4]) < 0.0000050000000000 ) |
| { |
| bgotonextstatement=false; |
| { |
| IkReal j5eval[1]; |
| sj4=4.0e-5; |
| cj4=1.0; |
| j4=4.0e-5; |
| j5eval[0]=((((5.12e-8)*(IKabs(new_r10))))+(IKabs(((((8.0000000064)*new_r10))+(((8.0)*new_r01)))))+(((2.0)*(IKabs(((((-16.0000000128)*new_r00))+(((16.0)*new_r11)))))))+(IKabs(((((-8.0000000064)*new_r11))+(((8.0)*new_r00)))))+(IKabs(((((16.0000000512)*new_r00))+(((-16.0000000128)*new_r11)))))); |
| if( IKabs(j5eval[0]) < 0.0000000100000000 ) |
| { |
| continue; // no branches [j3, j5] |
| |
| } else |
| { |
| IkReal op[4+1], zeror[4]; |
| int numroots; |
| IkReal j5evalpoly[1]; |
| IkReal x207=((((-8.0000000064)*new_r11))+(((8.0)*new_r00))); |
| op[0]=x207; |
| op[1]=((-2.56e-8)*new_r10); |
| op[2]=((((16.0000000512)*new_r00))+(((-16.0000000128)*new_r11))); |
| op[3]=((2.56e-8)*new_r10); |
| op[4]=x207; |
| polyroots4(op,zeror,numroots); |
| IkReal j5array[4], cj5array[4], sj5array[4], tempj5array[1]; |
| int numsolutions = 0; |
| for(int ij5 = 0; ij5 < numroots; ++ij5) |
| { |
| IkReal htj5 = zeror[ij5]; |
| tempj5array[0]=((2.0)*(atan(htj5))); |
| for(int kj5 = 0; kj5 < 1; ++kj5) |
| { |
| j5array[numsolutions] = tempj5array[kj5]; |
| if( j5array[numsolutions] > IKPI ) |
| { |
| j5array[numsolutions]-=IK2PI; |
| } |
| else if( j5array[numsolutions] < -IKPI ) |
| { |
| j5array[numsolutions]+=IK2PI; |
| } |
| sj5array[numsolutions] = IKsin(j5array[numsolutions]); |
| cj5array[numsolutions] = IKcos(j5array[numsolutions]); |
| numsolutions++; |
| } |
| } |
| bool j5valid[4]={true,true,true,true}; |
| _nj5 = 4; |
| for(int ij5 = 0; ij5 < numsolutions; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| htj5 = IKtan(j5/2); |
| |
| IkReal x208=((((-16.0000000128)*new_r00))+(((16.0)*new_r11))); |
| IkReal x209=((((8.0000000064)*new_r10))+(((8.0)*new_r01))); |
| j5evalpoly[0]=(((x208*(htj5*htj5*htj5)))+((htj5*x208))+(((-1.0)*x209))+((x209*(htj5*htj5*htj5*htj5)))); |
| if( IKabs(j5evalpoly[0]) > 0.0000001000000000 ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < numsolutions; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| { |
| IkReal j3array[1], cj3array[1], sj3array[1]; |
| bool j3valid[1]={false}; |
| _nj3 = 1; |
| if( IKabs(((((-1.0)*new_r00*sj5))+(((-1.0)*cj5*new_r10)))) < IKFAST_ATAN2_MAGTHRESH && IKabs((((cj5*new_r11))+((new_r01*sj5)))) < IKFAST_ATAN2_MAGTHRESH && IKabs(IKsqr(((((-1.0)*new_r00*sj5))+(((-1.0)*cj5*new_r10))))+IKsqr((((cj5*new_r11))+((new_r01*sj5))))-1) <= IKFAST_SINCOS_THRESH ) |
| continue; |
| j3array[0]=IKatan2(((((-1.0)*new_r00*sj5))+(((-1.0)*cj5*new_r10))), (((cj5*new_r11))+((new_r01*sj5)))); |
| sj3array[0]=IKsin(j3array[0]); |
| cj3array[0]=IKcos(j3array[0]); |
| if( j3array[0] > IKPI ) |
| { |
| j3array[0]-=IK2PI; |
| } |
| else if( j3array[0] < -IKPI ) |
| { j3array[0]+=IK2PI; |
| } |
| j3valid[0] = true; |
| for(int ij3 = 0; ij3 < 1; ++ij3) |
| { |
| if( !j3valid[ij3] ) |
| { |
| continue; |
| } |
| _ij3[0] = ij3; _ij3[1] = -1; |
| for(int iij3 = ij3+1; iij3 < 1; ++iij3) |
| { |
| if( j3valid[iij3] && IKabs(cj3array[ij3]-cj3array[iij3]) < IKFAST_SOLUTION_THRESH && IKabs(sj3array[ij3]-sj3array[iij3]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j3valid[iij3]=false; _ij3[1] = iij3; break; |
| } |
| } |
| j3 = j3array[ij3]; cj3 = cj3array[ij3]; sj3 = sj3array[ij3]; |
| { |
| IkReal evalcond[10]; |
| IkReal x210=IKcos(j3); |
| IkReal x211=IKsin(j3); |
| IkReal x212=((1.0000000008)*sj5); |
| IkReal x213=(cj5*new_r01); |
| IkReal x214=((1.0)*sj5); |
| IkReal x215=(cj5*new_r00); |
| IkReal x216=((1.0)*x210); |
| IkReal x217=((1.0000000008)*x211); |
| IkReal x218=((1.0000000008)*x210); |
| evalcond[0]=(((cj5*new_r10))+((new_r00*sj5))+x211); |
| evalcond[1]=(((cj5*new_r11))+((new_r01*sj5))+(((-1.0)*x216))); |
| evalcond[2]=((((-1.0)*new_r10*x214))+x215+(((-1.0)*x218))); |
| evalcond[3]=((((-1.0)*new_r11*x214))+x213+(((-1.0)*x217))); |
| evalcond[4]=(((sj5*x211))+(((-1.0)*cj5*x218))+new_r00); |
| evalcond[5]=(((x210*x212))+((cj5*x211))+new_r10); |
| evalcond[6]=((((-1.0)*x210*x214))+(((-1.0)*cj5*x217))+new_r01); |
| evalcond[7]=(((x211*x212))+(((-1.0)*cj5*x216))+new_r11); |
| evalcond[8]=((((1.0000000008)*x215))+(((-1.0)*new_r10*x212))+(((-1.0)*x216))); |
| evalcond[9]=((((1.0000000008)*x213))+(((-1.0)*new_r11*x212))+(((-1.0)*x211))); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[2]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[3]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[4]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[5]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[6]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[7]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[8]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[9]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| } |
| |
| } |
| |
| } |
| |
| } |
| } while(0); |
| if( bgotonextstatement ) |
| { |
| bool bgotonextstatement = true; |
| do |
| { |
| evalcond[0]=((-3.14159265358979)+(IKfmod(((3.14159265358979)+(IKabs(((-3.99999999786667e-5)+j4)))), 6.28318530717959))); |
| evalcond[1]=new_r02; |
| evalcond[2]=new_r12; |
| evalcond[3]=new_r20; |
| evalcond[4]=new_r21; |
| if( IKabs(evalcond[0]) < 0.0000050000000000 && IKabs(evalcond[1]) < 0.0000050000000000 && IKabs(evalcond[2]) < 0.0000050000000000 && IKabs(evalcond[3]) < 0.0000050000000000 && IKabs(evalcond[4]) < 0.0000050000000000 ) |
| { |
| bgotonextstatement=false; |
| { |
| IkReal j5eval[1]; |
| sj4=4.0e-5; |
| cj4=1.0; |
| j4=4.0e-5; |
| j5eval[0]=((((5.12e-8)*(IKabs(new_r10))))+(IKabs(((((8.0000000064)*new_r10))+(((8.0)*new_r01)))))+(((2.0)*(IKabs(((((-16.0000000128)*new_r00))+(((16.0)*new_r11)))))))+(IKabs(((((-8.0000000064)*new_r11))+(((8.0)*new_r00)))))+(IKabs(((((16.0000000512)*new_r00))+(((-16.0000000128)*new_r11)))))); |
| if( IKabs(j5eval[0]) < 0.0000000100000000 ) |
| { |
| continue; // no branches [j3, j5] |
| |
| } else |
| { |
| IkReal op[4+1], zeror[4]; |
| int numroots; |
| IkReal j5evalpoly[1]; |
| IkReal x219=((((-8.0000000064)*new_r11))+(((8.0)*new_r00))); |
| op[0]=x219; |
| op[1]=((-2.56e-8)*new_r10); |
| op[2]=((((16.0000000512)*new_r00))+(((-16.0000000128)*new_r11))); |
| op[3]=((2.56e-8)*new_r10); |
| op[4]=x219; |
| polyroots4(op,zeror,numroots); |
| IkReal j5array[4], cj5array[4], sj5array[4], tempj5array[1]; |
| int numsolutions = 0; |
| for(int ij5 = 0; ij5 < numroots; ++ij5) |
| { |
| IkReal htj5 = zeror[ij5]; |
| tempj5array[0]=((2.0)*(atan(htj5))); |
| for(int kj5 = 0; kj5 < 1; ++kj5) |
| { |
| j5array[numsolutions] = tempj5array[kj5]; |
| if( j5array[numsolutions] > IKPI ) |
| { |
| j5array[numsolutions]-=IK2PI; |
| } |
| else if( j5array[numsolutions] < -IKPI ) |
| { |
| j5array[numsolutions]+=IK2PI; |
| } |
| sj5array[numsolutions] = IKsin(j5array[numsolutions]); |
| cj5array[numsolutions] = IKcos(j5array[numsolutions]); |
| numsolutions++; |
| } |
| } |
| bool j5valid[4]={true,true,true,true}; |
| _nj5 = 4; |
| for(int ij5 = 0; ij5 < numsolutions; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| htj5 = IKtan(j5/2); |
| |
| IkReal x220=((((-16.0000000128)*new_r00))+(((16.0)*new_r11))); |
| IkReal x221=((((8.0000000064)*new_r10))+(((8.0)*new_r01))); |
| j5evalpoly[0]=(((x220*(htj5*htj5*htj5)))+((x221*(htj5*htj5*htj5*htj5)))+(((-1.0)*x221))+((htj5*x220))); |
| if( IKabs(j5evalpoly[0]) > 0.0000001000000000 ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < numsolutions; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| { |
| IkReal j3array[1], cj3array[1], sj3array[1]; |
| bool j3valid[1]={false}; |
| _nj3 = 1; |
| if( IKabs(((((-1.0)*new_r00*sj5))+(((-1.0)*cj5*new_r10)))) < IKFAST_ATAN2_MAGTHRESH && IKabs((((cj5*new_r11))+((new_r01*sj5)))) < IKFAST_ATAN2_MAGTHRESH && IKabs(IKsqr(((((-1.0)*new_r00*sj5))+(((-1.0)*cj5*new_r10))))+IKsqr((((cj5*new_r11))+((new_r01*sj5))))-1) <= IKFAST_SINCOS_THRESH ) |
| continue; |
| j3array[0]=IKatan2(((((-1.0)*new_r00*sj5))+(((-1.0)*cj5*new_r10))), (((cj5*new_r11))+((new_r01*sj5)))); |
| sj3array[0]=IKsin(j3array[0]); |
| cj3array[0]=IKcos(j3array[0]); |
| if( j3array[0] > IKPI ) |
| { |
| j3array[0]-=IK2PI; |
| } |
| else if( j3array[0] < -IKPI ) |
| { j3array[0]+=IK2PI; |
| } |
| j3valid[0] = true; |
| for(int ij3 = 0; ij3 < 1; ++ij3) |
| { |
| if( !j3valid[ij3] ) |
| { |
| continue; |
| } |
| _ij3[0] = ij3; _ij3[1] = -1; |
| for(int iij3 = ij3+1; iij3 < 1; ++iij3) |
| { |
| if( j3valid[iij3] && IKabs(cj3array[ij3]-cj3array[iij3]) < IKFAST_SOLUTION_THRESH && IKabs(sj3array[ij3]-sj3array[iij3]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j3valid[iij3]=false; _ij3[1] = iij3; break; |
| } |
| } |
| j3 = j3array[ij3]; cj3 = cj3array[ij3]; sj3 = sj3array[ij3]; |
| { |
| IkReal evalcond[10]; |
| IkReal x222=IKcos(j3); |
| IkReal x223=IKsin(j3); |
| IkReal x224=((1.0000000008)*sj5); |
| IkReal x225=(cj5*new_r01); |
| IkReal x226=((1.0)*sj5); |
| IkReal x227=(cj5*new_r00); |
| IkReal x228=((1.0)*x222); |
| IkReal x229=((1.0000000008)*x223); |
| IkReal x230=((1.0000000008)*x222); |
| evalcond[0]=(((cj5*new_r10))+((new_r00*sj5))+x223); |
| evalcond[1]=(((cj5*new_r11))+((new_r01*sj5))+(((-1.0)*x228))); |
| evalcond[2]=((((-1.0)*new_r10*x226))+(((-1.0)*x230))+x227); |
| evalcond[3]=((((-1.0)*new_r11*x226))+x225+(((-1.0)*x229))); |
| evalcond[4]=((((-1.0)*cj5*x230))+((sj5*x223))+new_r00); |
| evalcond[5]=(((x222*x224))+((cj5*x223))+new_r10); |
| evalcond[6]=((((-1.0)*cj5*x229))+(((-1.0)*x222*x226))+new_r01); |
| evalcond[7]=((((-1.0)*cj5*x228))+((x223*x224))+new_r11); |
| evalcond[8]=((((-1.0)*new_r10*x224))+(((1.0000000008)*x227))+(((-1.0)*x228))); |
| evalcond[9]=((((-1.0)*new_r11*x224))+(((1.0000000008)*x225))+(((-1.0)*x223))); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[2]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[3]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[4]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[5]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[6]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[7]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[8]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[9]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| } |
| |
| } |
| |
| } |
| |
| } |
| } while(0); |
| if( bgotonextstatement ) |
| { |
| bool bgotonextstatement = true; |
| do |
| { |
| evalcond[0]=((-3.14159265358979)+(IKfmod(((3.14159265358979)+(IKabs(((-3.14163265358977)+j4)))), 6.28318530717959))); |
| evalcond[1]=new_r02; |
| evalcond[2]=new_r12; |
| evalcond[3]=new_r20; |
| evalcond[4]=new_r21; |
| if( IKabs(evalcond[0]) < 0.0000050000000000 && IKabs(evalcond[1]) < 0.0000050000000000 && IKabs(evalcond[2]) < 0.0000050000000000 && IKabs(evalcond[3]) < 0.0000050000000000 && IKabs(evalcond[4]) < 0.0000050000000000 ) |
| { |
| bgotonextstatement=false; |
| { |
| IkReal j5eval[1]; |
| sj4=-4.0e-5; |
| cj4=-1.0; |
| j4=3.14163265; |
| j5eval[0]=((((5.12e-8)*(IKabs(new_r10))))+(IKabs(((((8.0000000064)*new_r11))+(((8.0)*new_r00)))))+(IKabs(((((16.0000000128)*new_r11))+(((16.0000000512)*new_r00)))))+(IKabs(((((-8.0000000064)*new_r10))+(((8.0)*new_r01)))))+(((2.0)*(IKabs(((((16.0000000128)*new_r00))+(((16.0)*new_r11)))))))); |
| if( IKabs(j5eval[0]) < 0.0000000100000000 ) |
| { |
| continue; // no branches [j3, j5] |
| |
| } else |
| { |
| IkReal op[4+1], zeror[4]; |
| int numroots; |
| IkReal j5evalpoly[1]; |
| IkReal x231=((((8.0000000064)*new_r11))+(((8.0)*new_r00))); |
| op[0]=x231; |
| op[1]=((-2.56e-8)*new_r10); |
| op[2]=((((16.0000000128)*new_r11))+(((16.0000000512)*new_r00))); |
| op[3]=((2.56e-8)*new_r10); |
| op[4]=x231; |
| polyroots4(op,zeror,numroots); |
| IkReal j5array[4], cj5array[4], sj5array[4], tempj5array[1]; |
| int numsolutions = 0; |
| for(int ij5 = 0; ij5 < numroots; ++ij5) |
| { |
| IkReal htj5 = zeror[ij5]; |
| tempj5array[0]=((2.0)*(atan(htj5))); |
| for(int kj5 = 0; kj5 < 1; ++kj5) |
| { |
| j5array[numsolutions] = tempj5array[kj5]; |
| if( j5array[numsolutions] > IKPI ) |
| { |
| j5array[numsolutions]-=IK2PI; |
| } |
| else if( j5array[numsolutions] < -IKPI ) |
| { |
| j5array[numsolutions]+=IK2PI; |
| } |
| sj5array[numsolutions] = IKsin(j5array[numsolutions]); |
| cj5array[numsolutions] = IKcos(j5array[numsolutions]); |
| numsolutions++; |
| } |
| } |
| bool j5valid[4]={true,true,true,true}; |
| _nj5 = 4; |
| for(int ij5 = 0; ij5 < numsolutions; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| htj5 = IKtan(j5/2); |
| |
| IkReal x232=((8.0000000064)*new_r10); |
| IkReal x233=((8.0)*new_r01); |
| IkReal x234=((((16.0000000128)*new_r00))+(((16.0)*new_r11))); |
| j5evalpoly[0]=((((htj5*htj5*htj5*htj5)*(((((-1.0)*x232))+x233))))+((htj5*x234))+(((-1.0)*x233))+x232+((x234*(htj5*htj5*htj5)))); |
| if( IKabs(j5evalpoly[0]) > 0.0000001000000000 ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < numsolutions; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| { |
| IkReal j3array[1], cj3array[1], sj3array[1]; |
| bool j3valid[1]={false}; |
| _nj3 = 1; |
| if( IKabs(((((-1.0)*new_r00*sj5))+(((-1.0)*cj5*new_r10)))) < IKFAST_ATAN2_MAGTHRESH && IKabs((((cj5*new_r11))+((new_r01*sj5)))) < IKFAST_ATAN2_MAGTHRESH && IKabs(IKsqr(((((-1.0)*new_r00*sj5))+(((-1.0)*cj5*new_r10))))+IKsqr((((cj5*new_r11))+((new_r01*sj5))))-1) <= IKFAST_SINCOS_THRESH ) |
| continue; |
| j3array[0]=IKatan2(((((-1.0)*new_r00*sj5))+(((-1.0)*cj5*new_r10))), (((cj5*new_r11))+((new_r01*sj5)))); |
| sj3array[0]=IKsin(j3array[0]); |
| cj3array[0]=IKcos(j3array[0]); |
| if( j3array[0] > IKPI ) |
| { |
| j3array[0]-=IK2PI; |
| } |
| else if( j3array[0] < -IKPI ) |
| { j3array[0]+=IK2PI; |
| } |
| j3valid[0] = true; |
| for(int ij3 = 0; ij3 < 1; ++ij3) |
| { |
| if( !j3valid[ij3] ) |
| { |
| continue; |
| } |
| _ij3[0] = ij3; _ij3[1] = -1; |
| for(int iij3 = ij3+1; iij3 < 1; ++iij3) |
| { |
| if( j3valid[iij3] && IKabs(cj3array[ij3]-cj3array[iij3]) < IKFAST_SOLUTION_THRESH && IKabs(sj3array[ij3]-sj3array[iij3]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j3valid[iij3]=false; _ij3[1] = iij3; break; |
| } |
| } |
| j3 = j3array[ij3]; cj3 = cj3array[ij3]; sj3 = sj3array[ij3]; |
| { |
| IkReal evalcond[10]; |
| IkReal x235=IKcos(j3); |
| IkReal x236=IKsin(j3); |
| IkReal x237=((1.0000000008)*sj5); |
| IkReal x238=(cj5*new_r01); |
| IkReal x239=((1.0)*sj5); |
| IkReal x240=(cj5*new_r00); |
| IkReal x241=((1.0)*x235); |
| IkReal x242=((1.0000000008)*x236); |
| IkReal x243=((1.0000000008)*x235); |
| evalcond[0]=(((cj5*new_r10))+((new_r00*sj5))+x236); |
| evalcond[1]=(((cj5*new_r11))+((new_r01*sj5))+(((-1.0)*x241))); |
| evalcond[2]=(x243+x240+(((-1.0)*new_r10*x239))); |
| evalcond[3]=(x238+x242+(((-1.0)*new_r11*x239))); |
| evalcond[4]=(((cj5*x243))+new_r00+((sj5*x236))); |
| evalcond[5]=((((-1.0)*x235*x237))+((cj5*x236))+new_r10); |
| evalcond[6]=((((-1.0)*x235*x239))+((cj5*x242))+new_r01); |
| evalcond[7]=((((-1.0)*cj5*x241))+(((-1.0)*x236*x237))+new_r11); |
| evalcond[8]=(((new_r10*x237))+(((-1.0000000008)*x240))+(((-1.0)*x241))); |
| evalcond[9]=(((new_r11*x237))+(((-1.0000000008)*x238))+(((-1.0)*x236))); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[2]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[3]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[4]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[5]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[6]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[7]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[8]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[9]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| } |
| |
| } |
| |
| } |
| |
| } |
| } while(0); |
| if( bgotonextstatement ) |
| { |
| bool bgotonextstatement = true; |
| do |
| { |
| evalcond[0]=((IKabs(new_r12))+(IKabs(new_r02))); |
| if( IKabs(evalcond[0]) < 0.0000050000000000 ) |
| { |
| bgotonextstatement=false; |
| { |
| IkReal j3eval[1]; |
| new_r02=0; |
| new_r12=0; |
| new_r20=0; |
| new_r21=0; |
| j3eval[0]=IKabs(((((-3.9999999968e-5)*cj4))+(((0.9999999992)*sj4)))); |
| if( IKabs(j3eval[0]) < 0.0000000100000000 ) |
| { |
| { |
| IkReal j5eval[1]; |
| new_r02=0; |
| new_r12=0; |
| new_r20=0; |
| new_r21=0; |
| IkReal x244=((625000000.5)*sj4); |
| IkReal x245=((25000.00002)*cj4); |
| j5eval[0]=((IKabs(((((-1.0)*new_r00*x244))+((new_r00*x245)))))+(IKabs(((((-1.0)*new_r10*x245))+((new_r10*x244)))))); |
| if( IKabs(j5eval[0]) < 0.0000010000000000 ) |
| { |
| { |
| IkReal j5eval[1]; |
| new_r02=0; |
| new_r12=0; |
| new_r20=0; |
| new_r21=0; |
| IkReal x246=((625000000.5)*sj4); |
| IkReal x247=((25000.00002)*cj4); |
| j5eval[0]=((IKabs(((((-1.0)*new_r01*x246))+((new_r01*x247)))))+(IKabs(((((-1.0)*new_r11*x247))+((new_r11*x246)))))); |
| if( IKabs(j5eval[0]) < 0.0000010000000000 ) |
| { |
| continue; // no branches [j3, j5] |
| |
| } else |
| { |
| { |
| IkReal j5array[2], cj5array[2], sj5array[2]; |
| bool j5valid[2]={false}; |
| _nj5 = 2; |
| IkReal x248=((3.9999999968e-5)*cj4); |
| IkReal x249=((0.9999999992)*sj4); |
| CheckValue<IkReal> x251 = IKatan2WithCheck(IkReal(((((-1.0)*new_r01*x249))+((new_r01*x248)))),IkReal(((((-1.0)*new_r11*x248))+((new_r11*x249)))),IKFAST_ATAN2_MAGTHRESH); |
| if(!x251.valid){ |
| continue; |
| } |
| IkReal x250=x251.value; |
| j5array[0]=((-1.0)*x250); |
| sj5array[0]=IKsin(j5array[0]); |
| cj5array[0]=IKcos(j5array[0]); |
| j5array[1]=((3.14159265358979)+(((-1.0)*x250))); |
| sj5array[1]=IKsin(j5array[1]); |
| cj5array[1]=IKcos(j5array[1]); |
| if( j5array[0] > IKPI ) |
| { |
| j5array[0]-=IK2PI; |
| } |
| else if( j5array[0] < -IKPI ) |
| { j5array[0]+=IK2PI; |
| } |
| j5valid[0] = true; |
| if( j5array[1] > IKPI ) |
| { |
| j5array[1]-=IK2PI; |
| } |
| else if( j5array[1] < -IKPI ) |
| { j5array[1]+=IK2PI; |
| } |
| j5valid[1] = true; |
| for(int ij5 = 0; ij5 < 2; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < 2; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| { |
| IkReal evalcond[3]; |
| IkReal x252=IKcos(j5); |
| IkReal x253=IKsin(j5); |
| IkReal x254=((0.9999999992)*sj4); |
| IkReal x255=((3.9999999968e-5)*cj4); |
| IkReal x256=(new_r00*x252); |
| IkReal x257=(x253*x255); |
| evalcond[0]=((((-1.0)*x252*x255))+((x252*x254))); |
| evalcond[1]=(x257+(((-1.0)*x253*x254))); |
| evalcond[2]=((((-1.0)*new_r10*x257))+(((-1.0)*x254*x256))+((new_r10*x253*x254))+((x255*x256))); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[2]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| IkReal j3array[1], cj3array[1], sj3array[1]; |
| bool j3valid[1]={false}; |
| _nj3 = 1; |
| if( IKabs(((((-1.0)*new_r00*sj5))+(((-1.0)*cj5*new_r10)))) < IKFAST_ATAN2_MAGTHRESH && IKabs((((cj5*new_r11))+((new_r01*sj5)))) < IKFAST_ATAN2_MAGTHRESH && IKabs(IKsqr(((((-1.0)*new_r00*sj5))+(((-1.0)*cj5*new_r10))))+IKsqr((((cj5*new_r11))+((new_r01*sj5))))-1) <= IKFAST_SINCOS_THRESH ) |
| continue; |
| j3array[0]=IKatan2(((((-1.0)*new_r00*sj5))+(((-1.0)*cj5*new_r10))), (((cj5*new_r11))+((new_r01*sj5)))); |
| sj3array[0]=IKsin(j3array[0]); |
| cj3array[0]=IKcos(j3array[0]); |
| if( j3array[0] > IKPI ) |
| { |
| j3array[0]-=IK2PI; |
| } |
| else if( j3array[0] < -IKPI ) |
| { j3array[0]+=IK2PI; |
| } |
| j3valid[0] = true; |
| for(int ij3 = 0; ij3 < 1; ++ij3) |
| { |
| if( !j3valid[ij3] ) |
| { |
| continue; |
| } |
| _ij3[0] = ij3; _ij3[1] = -1; |
| for(int iij3 = ij3+1; iij3 < 1; ++iij3) |
| { |
| if( j3valid[iij3] && IKabs(cj3array[ij3]-cj3array[iij3]) < IKFAST_SOLUTION_THRESH && IKabs(sj3array[ij3]-sj3array[iij3]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j3valid[iij3]=false; _ij3[1] = iij3; break; |
| } |
| } |
| j3 = j3array[ij3]; cj3 = cj3array[ij3]; sj3 = sj3array[ij3]; |
| { |
| IkReal evalcond[12]; |
| IkReal x258=IKsin(j3); |
| IkReal x259=IKcos(j3); |
| IkReal x260=(cj5*new_r01); |
| IkReal x261=((25000.00002)*sj4); |
| IkReal x262=((3.9999999968e-5)*cj4); |
| IkReal x263=((0.9999999992)*sj4); |
| IkReal x264=(cj5*new_r00); |
| IkReal x265=((1.0)*sj5); |
| IkReal x266=((1.0)*x259); |
| IkReal x267=(sj5*x258); |
| IkReal x268=(cj5*x259); |
| IkReal x269=(cj5*x258); |
| evalcond[0]=(((cj5*new_r10))+((new_r00*sj5))+x258); |
| evalcond[1]=(((cj5*new_r11))+((new_r01*sj5))+(((-1.0)*x266))); |
| evalcond[2]=(x269+new_r10+((sj5*x259*x261))); |
| evalcond[3]=((((-1.0)*x259*x261))+x264+(((-1.0)*new_r10*x265))); |
| evalcond[4]=((((-1.0)*x258*x261))+x260+(((-1.0)*new_r11*x265))); |
| evalcond[5]=(x267+(((-1.0)*x261*x268))+new_r00); |
| evalcond[6]=((((-1.0)*cj5*x266))+((x261*x267))+new_r11); |
| evalcond[7]=((((-1.0)*x259*x265))+(((-1.0)*x261*x269))+new_r01); |
| evalcond[8]=(((x259*x262))+(((-1.0)*x259*x263))); |
| evalcond[9]=(((x258*x262))+(((-1.0)*x258*x263))); |
| evalcond[10]=((((-1.0)*new_r10*sj5*x261))+((x261*x264))+(((-1.0)*x266))); |
| evalcond[11]=(((x260*x261))+(((-1.0)*new_r11*sj5*x261))+(((-1.0)*x258))); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[2]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[3]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[4]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[5]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[6]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[7]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[8]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[9]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[10]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[11]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| } |
| } |
| |
| } |
| |
| } |
| |
| } else |
| { |
| { |
| IkReal j5array[2], cj5array[2], sj5array[2]; |
| bool j5valid[2]={false}; |
| _nj5 = 2; |
| IkReal x270=((3.9999999968e-5)*cj4); |
| IkReal x271=((0.9999999992)*sj4); |
| CheckValue<IkReal> x273 = IKatan2WithCheck(IkReal(((((-1.0)*new_r00*x271))+((new_r00*x270)))),IkReal(((((-1.0)*new_r10*x270))+((new_r10*x271)))),IKFAST_ATAN2_MAGTHRESH); |
| if(!x273.valid){ |
| continue; |
| } |
| IkReal x272=x273.value; |
| j5array[0]=((-1.0)*x272); |
| sj5array[0]=IKsin(j5array[0]); |
| cj5array[0]=IKcos(j5array[0]); |
| j5array[1]=((3.14159265358979)+(((-1.0)*x272))); |
| sj5array[1]=IKsin(j5array[1]); |
| cj5array[1]=IKcos(j5array[1]); |
| if( j5array[0] > IKPI ) |
| { |
| j5array[0]-=IK2PI; |
| } |
| else if( j5array[0] < -IKPI ) |
| { j5array[0]+=IK2PI; |
| } |
| j5valid[0] = true; |
| if( j5array[1] > IKPI ) |
| { |
| j5array[1]-=IK2PI; |
| } |
| else if( j5array[1] < -IKPI ) |
| { j5array[1]+=IK2PI; |
| } |
| j5valid[1] = true; |
| for(int ij5 = 0; ij5 < 2; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < 2; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| { |
| IkReal evalcond[3]; |
| IkReal x274=IKcos(j5); |
| IkReal x275=IKsin(j5); |
| IkReal x276=((0.9999999992)*sj4); |
| IkReal x277=((3.9999999968e-5)*cj4); |
| IkReal x278=(new_r11*x275); |
| IkReal x279=(new_r01*x274); |
| evalcond[0]=((((-1.0)*x274*x277))+((x274*x276))); |
| evalcond[1]=(((x275*x277))+(((-1.0)*x275*x276))); |
| evalcond[2]=((((-1.0)*x277*x278))+((x277*x279))+((x276*x278))+(((-1.0)*x276*x279))); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[2]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| IkReal j3array[1], cj3array[1], sj3array[1]; |
| bool j3valid[1]={false}; |
| _nj3 = 1; |
| if( IKabs(((((-1.0)*new_r00*sj5))+(((-1.0)*cj5*new_r10)))) < IKFAST_ATAN2_MAGTHRESH && IKabs((((cj5*new_r11))+((new_r01*sj5)))) < IKFAST_ATAN2_MAGTHRESH && IKabs(IKsqr(((((-1.0)*new_r00*sj5))+(((-1.0)*cj5*new_r10))))+IKsqr((((cj5*new_r11))+((new_r01*sj5))))-1) <= IKFAST_SINCOS_THRESH ) |
| continue; |
| j3array[0]=IKatan2(((((-1.0)*new_r00*sj5))+(((-1.0)*cj5*new_r10))), (((cj5*new_r11))+((new_r01*sj5)))); |
| sj3array[0]=IKsin(j3array[0]); |
| cj3array[0]=IKcos(j3array[0]); |
| if( j3array[0] > IKPI ) |
| { |
| j3array[0]-=IK2PI; |
| } |
| else if( j3array[0] < -IKPI ) |
| { j3array[0]+=IK2PI; |
| } |
| j3valid[0] = true; |
| for(int ij3 = 0; ij3 < 1; ++ij3) |
| { |
| if( !j3valid[ij3] ) |
| { |
| continue; |
| } |
| _ij3[0] = ij3; _ij3[1] = -1; |
| for(int iij3 = ij3+1; iij3 < 1; ++iij3) |
| { |
| if( j3valid[iij3] && IKabs(cj3array[ij3]-cj3array[iij3]) < IKFAST_SOLUTION_THRESH && IKabs(sj3array[ij3]-sj3array[iij3]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j3valid[iij3]=false; _ij3[1] = iij3; break; |
| } |
| } |
| j3 = j3array[ij3]; cj3 = cj3array[ij3]; sj3 = sj3array[ij3]; |
| { |
| IkReal evalcond[12]; |
| IkReal x280=IKsin(j3); |
| IkReal x281=IKcos(j3); |
| IkReal x282=(cj5*new_r01); |
| IkReal x283=((25000.00002)*sj4); |
| IkReal x284=((3.9999999968e-5)*cj4); |
| IkReal x285=((0.9999999992)*sj4); |
| IkReal x286=(cj5*new_r00); |
| IkReal x287=((1.0)*sj5); |
| IkReal x288=((1.0)*x281); |
| IkReal x289=(sj5*x280); |
| IkReal x290=(cj5*x281); |
| IkReal x291=(cj5*x280); |
| evalcond[0]=(((cj5*new_r10))+((new_r00*sj5))+x280); |
| evalcond[1]=(((cj5*new_r11))+((new_r01*sj5))+(((-1.0)*x288))); |
| evalcond[2]=(x291+((sj5*x281*x283))+new_r10); |
| evalcond[3]=((((-1.0)*x281*x283))+x286+(((-1.0)*new_r10*x287))); |
| evalcond[4]=((((-1.0)*x280*x283))+x282+(((-1.0)*new_r11*x287))); |
| evalcond[5]=(x289+(((-1.0)*x283*x290))+new_r00); |
| evalcond[6]=((((-1.0)*cj5*x288))+new_r11+((x283*x289))); |
| evalcond[7]=((((-1.0)*x281*x287))+(((-1.0)*x283*x291))+new_r01); |
| evalcond[8]=((((-1.0)*x281*x285))+((x281*x284))); |
| evalcond[9]=((((-1.0)*x280*x285))+((x280*x284))); |
| evalcond[10]=((((-1.0)*new_r10*sj5*x283))+(((-1.0)*x288))+((x283*x286))); |
| evalcond[11]=((((-1.0)*x280))+(((-1.0)*new_r11*sj5*x283))+((x282*x283))); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[2]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[3]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[4]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[5]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[6]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[7]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[8]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[9]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[10]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[11]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| } |
| } |
| |
| } |
| |
| } |
| |
| } else |
| { |
| IkReal op[2+1], zeror[2]; |
| int numroots; |
| IkReal x292=((3.9999999968e-5)*cj4); |
| IkReal x293=((0.9999999992)*sj4); |
| op[0]=((((-1.0)*x292))+x293); |
| op[1]=0; |
| op[2]=((((-1.0)*x293))+x292); |
| polyroots2(op,zeror,numroots); |
| IkReal j3array[2], cj3array[2], sj3array[2], tempj3array[1]; |
| int numsolutions = 0; |
| for(int ij3 = 0; ij3 < numroots; ++ij3) |
| { |
| IkReal htj3 = zeror[ij3]; |
| tempj3array[0]=((2.0)*(atan(htj3))); |
| for(int kj3 = 0; kj3 < 1; ++kj3) |
| { |
| j3array[numsolutions] = tempj3array[kj3]; |
| if( j3array[numsolutions] > IKPI ) |
| { |
| j3array[numsolutions]-=IK2PI; |
| } |
| else if( j3array[numsolutions] < -IKPI ) |
| { |
| j3array[numsolutions]+=IK2PI; |
| } |
| sj3array[numsolutions] = IKsin(j3array[numsolutions]); |
| cj3array[numsolutions] = IKcos(j3array[numsolutions]); |
| numsolutions++; |
| } |
| } |
| bool j3valid[2]={true,true}; |
| _nj3 = 2; |
| for(int ij3 = 0; ij3 < numsolutions; ++ij3) |
| { |
| if( !j3valid[ij3] ) |
| { |
| continue; |
| } |
| j3 = j3array[ij3]; cj3 = cj3array[ij3]; sj3 = sj3array[ij3]; |
| htj3 = IKtan(j3/2); |
| |
| _ij3[0] = ij3; _ij3[1] = -1; |
| for(int iij3 = ij3+1; iij3 < numsolutions; ++iij3) |
| { |
| if( j3valid[iij3] && IKabs(cj3array[ij3]-cj3array[iij3]) < IKFAST_SOLUTION_THRESH && IKabs(sj3array[ij3]-sj3array[iij3]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j3valid[iij3]=false; _ij3[1] = iij3; break; |
| } |
| } |
| { |
| IkReal j5eval[3]; |
| new_r02=0; |
| new_r12=0; |
| new_r20=0; |
| new_r21=0; |
| IkReal x294=((1.0)*new_r00); |
| IkReal x295=((((-1.0)*new_r11*x294))+((new_r01*new_r10))); |
| j5eval[0]=x295; |
| j5eval[1]=IKsign(x295); |
| j5eval[2]=((IKabs((((new_r11*sj3))+((cj3*new_r10)))))+(IKabs(((((-1.0)*new_r01*sj3))+(((-1.0)*cj3*x294)))))); |
| if( IKabs(j5eval[0]) < 0.0000010000000000 || IKabs(j5eval[1]) < 0.0000010000000000 || IKabs(j5eval[2]) < 0.0000010000000000 ) |
| { |
| { |
| IkReal j5eval[2]; |
| new_r02=0; |
| new_r12=0; |
| new_r20=0; |
| new_r21=0; |
| IkReal x296=cj3*cj3; |
| IkReal x297=new_r00*new_r00; |
| IkReal x298=cj4*cj4; |
| IkReal x299=((625000001.0)*x296*x298); |
| j5eval[0]=((((-1.0)*x297*x299))+x299+x297+(((-625000001.0)*x296))+(((625000000.0)*x296*x297))); |
| j5eval[1]=((((-25000.00002)*cj3*new_r10*sj4))+((new_r00*sj3))); |
| if( IKabs(j5eval[0]) < 0.0000010000000000 || IKabs(j5eval[1]) < 0.0000010000000000 ) |
| { |
| { |
| IkReal j5eval[2]; |
| new_r02=0; |
| new_r12=0; |
| new_r20=0; |
| new_r21=0; |
| j5eval[0]=(((new_r10*sj3))+(((25000.00002)*cj3*new_r00*sj4))); |
| j5eval[1]=new_r00; |
| if( IKabs(j5eval[0]) < 0.0000010000000000 || IKabs(j5eval[1]) < 0.0000010000000000 ) |
| { |
| { |
| IkReal evalcond[3]; |
| bool bgotonextstatement = true; |
| do |
| { |
| evalcond[0]=((IKabs(((-3.14159265358979)+(IKfmod(((3.14159265358979)+j4), 6.28318530717959)))))+(IKabs(((-3.14159265358979)+(IKfmod(((3.14159265358979)+j3), 6.28318530717959)))))); |
| evalcond[1]=new_r00; |
| evalcond[2]=new_r10; |
| if( IKabs(evalcond[0]) < 0.0000050000000000 && IKabs(evalcond[1]) < 0.0000050000000000 && IKabs(evalcond[2]) < 0.0000050000000000 ) |
| { |
| bgotonextstatement=false; |
| { |
| IkReal j5array[1], cj5array[1], sj5array[1]; |
| bool j5valid[1]={false}; |
| _nj5 = 1; |
| if( IKabs(new_r01) < IKFAST_ATAN2_MAGTHRESH && IKabs(new_r11) < IKFAST_ATAN2_MAGTHRESH && IKabs(IKsqr(new_r01)+IKsqr(new_r11)-1) <= IKFAST_SINCOS_THRESH ) |
| continue; |
| j5array[0]=IKatan2(new_r01, new_r11); |
| sj5array[0]=IKsin(j5array[0]); |
| cj5array[0]=IKcos(j5array[0]); |
| if( j5array[0] > IKPI ) |
| { |
| j5array[0]-=IK2PI; |
| } |
| else if( j5array[0] < -IKPI ) |
| { j5array[0]+=IK2PI; |
| } |
| j5valid[0] = true; |
| for(int ij5 = 0; ij5 < 1; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < 1; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| { |
| IkReal evalcond[7]; |
| IkReal x300=IKcos(j5); |
| IkReal x301=IKsin(j5); |
| IkReal x302=(new_r01*x300); |
| IkReal x303=((3.9999999968e-5)*x301); |
| IkReal x304=((1.0)*x301); |
| evalcond[0]=(new_r01+(((-1.0)*x304))); |
| evalcond[1]=((((-1.0)*x300))+new_r11); |
| evalcond[2]=((-3.9999999968e-5)*x300); |
| evalcond[3]=x303; |
| evalcond[4]=((-1.0)+((new_r01*x301))+((new_r11*x300))); |
| evalcond[5]=(x302+(((-1.0)*new_r11*x304))); |
| evalcond[6]=((((3.9999999968e-5)*x302))+(((-1.0)*new_r11*x303))); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[2]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[3]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[4]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[5]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[6]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| |
| } |
| } while(0); |
| if( bgotonextstatement ) |
| { |
| bool bgotonextstatement = true; |
| do |
| { |
| evalcond[0]=((IKabs(((-3.14159265358979)+(IKfmod(j3, 6.28318530717959)))))+(IKabs(((-3.14159265358979)+(IKfmod(((3.14159265358979)+j4), 6.28318530717959)))))); |
| evalcond[1]=new_r00; |
| evalcond[2]=new_r10; |
| if( IKabs(evalcond[0]) < 0.0000050000000000 && IKabs(evalcond[1]) < 0.0000050000000000 && IKabs(evalcond[2]) < 0.0000050000000000 ) |
| { |
| bgotonextstatement=false; |
| { |
| IkReal j5array[1], cj5array[1], sj5array[1]; |
| bool j5valid[1]={false}; |
| _nj5 = 1; |
| if( IKabs(((-1.0)*new_r01)) < IKFAST_ATAN2_MAGTHRESH && IKabs(((-1.0)*new_r11)) < IKFAST_ATAN2_MAGTHRESH && IKabs(IKsqr(((-1.0)*new_r01))+IKsqr(((-1.0)*new_r11))-1) <= IKFAST_SINCOS_THRESH ) |
| continue; |
| j5array[0]=IKatan2(((-1.0)*new_r01), ((-1.0)*new_r11)); |
| sj5array[0]=IKsin(j5array[0]); |
| cj5array[0]=IKcos(j5array[0]); |
| if( j5array[0] > IKPI ) |
| { |
| j5array[0]-=IK2PI; |
| } |
| else if( j5array[0] < -IKPI ) |
| { j5array[0]+=IK2PI; |
| } |
| j5valid[0] = true; |
| for(int ij5 = 0; ij5 < 1; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < 1; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| { |
| IkReal evalcond[7]; |
| IkReal x305=IKcos(j5); |
| IkReal x306=IKsin(j5); |
| IkReal x307=(new_r01*x305); |
| IkReal x308=((3.9999999968e-5)*x306); |
| evalcond[0]=(x306+new_r01); |
| evalcond[1]=(x305+new_r11); |
| evalcond[2]=((-3.9999999968e-5)*x305); |
| evalcond[3]=x308; |
| evalcond[4]=((1.0)+((new_r01*x306))+((new_r11*x305))); |
| evalcond[5]=(x307+(((-1.0)*new_r11*x306))); |
| evalcond[6]=((((3.9999999968e-5)*x307))+(((-1.0)*new_r11*x308))); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[2]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[3]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[4]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[5]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[6]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| |
| } |
| } while(0); |
| if( bgotonextstatement ) |
| { |
| bool bgotonextstatement = true; |
| do |
| { |
| evalcond[0]=((IKabs(((-3.14159265358979)+(IKfmod(j4, 6.28318530717959)))))+(IKabs(((-3.14159265358979)+(IKfmod(((3.14159265358979)+j3), 6.28318530717959)))))); |
| evalcond[1]=new_r00; |
| evalcond[2]=new_r10; |
| if( IKabs(evalcond[0]) < 0.0000050000000000 && IKabs(evalcond[1]) < 0.0000050000000000 && IKabs(evalcond[2]) < 0.0000050000000000 ) |
| { |
| bgotonextstatement=false; |
| { |
| IkReal j5array[1], cj5array[1], sj5array[1]; |
| bool j5valid[1]={false}; |
| _nj5 = 1; |
| if( IKabs(new_r01) < IKFAST_ATAN2_MAGTHRESH && IKabs(new_r11) < IKFAST_ATAN2_MAGTHRESH && IKabs(IKsqr(new_r01)+IKsqr(new_r11)-1) <= IKFAST_SINCOS_THRESH ) |
| continue; |
| j5array[0]=IKatan2(new_r01, new_r11); |
| sj5array[0]=IKsin(j5array[0]); |
| cj5array[0]=IKcos(j5array[0]); |
| if( j5array[0] > IKPI ) |
| { |
| j5array[0]-=IK2PI; |
| } |
| else if( j5array[0] < -IKPI ) |
| { j5array[0]+=IK2PI; |
| } |
| j5valid[0] = true; |
| for(int ij5 = 0; ij5 < 1; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < 1; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| { |
| IkReal evalcond[7]; |
| IkReal x309=IKcos(j5); |
| IkReal x310=IKsin(j5); |
| IkReal x311=((3.9999999968e-5)*x309); |
| IkReal x312=(new_r11*x310); |
| evalcond[0]=((((-1.0)*x310))+new_r01); |
| evalcond[1]=((((-1.0)*x309))+new_r11); |
| evalcond[2]=x311; |
| evalcond[3]=((-3.9999999968e-5)*x310); |
| evalcond[4]=((-1.0)+((new_r11*x309))+((new_r01*x310))); |
| evalcond[5]=(((new_r01*x309))+(((-1.0)*x312))); |
| evalcond[6]=((((3.9999999968e-5)*x312))+(((-1.0)*new_r01*x311))); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[2]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[3]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[4]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[5]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[6]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| |
| } |
| } while(0); |
| if( bgotonextstatement ) |
| { |
| bool bgotonextstatement = true; |
| do |
| { |
| evalcond[0]=((IKabs(((-3.14159265358979)+(IKfmod(j3, 6.28318530717959)))))+(IKabs(((-3.14159265358979)+(IKfmod(j4, 6.28318530717959)))))); |
| evalcond[1]=new_r00; |
| evalcond[2]=new_r10; |
| if( IKabs(evalcond[0]) < 0.0000050000000000 && IKabs(evalcond[1]) < 0.0000050000000000 && IKabs(evalcond[2]) < 0.0000050000000000 ) |
| { |
| bgotonextstatement=false; |
| { |
| IkReal j5array[1], cj5array[1], sj5array[1]; |
| bool j5valid[1]={false}; |
| _nj5 = 1; |
| if( IKabs(((-1.0)*new_r01)) < IKFAST_ATAN2_MAGTHRESH && IKabs(((-1.0)*new_r11)) < IKFAST_ATAN2_MAGTHRESH && IKabs(IKsqr(((-1.0)*new_r01))+IKsqr(((-1.0)*new_r11))-1) <= IKFAST_SINCOS_THRESH ) |
| continue; |
| j5array[0]=IKatan2(((-1.0)*new_r01), ((-1.0)*new_r11)); |
| sj5array[0]=IKsin(j5array[0]); |
| cj5array[0]=IKcos(j5array[0]); |
| if( j5array[0] > IKPI ) |
| { |
| j5array[0]-=IK2PI; |
| } |
| else if( j5array[0] < -IKPI ) |
| { j5array[0]+=IK2PI; |
| } |
| j5valid[0] = true; |
| for(int ij5 = 0; ij5 < 1; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < 1; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| { |
| IkReal evalcond[7]; |
| IkReal x313=IKcos(j5); |
| IkReal x314=IKsin(j5); |
| IkReal x315=((3.9999999968e-5)*x313); |
| IkReal x316=(new_r11*x314); |
| evalcond[0]=(x314+new_r01); |
| evalcond[1]=(x313+new_r11); |
| evalcond[2]=x315; |
| evalcond[3]=((-3.9999999968e-5)*x314); |
| evalcond[4]=((1.0)+((new_r01*x314))+((new_r11*x313))); |
| evalcond[5]=(((new_r01*x313))+(((-1.0)*x316))); |
| evalcond[6]=((((3.9999999968e-5)*x316))+(((-1.0)*new_r01*x315))); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[2]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[3]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[4]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[5]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[6]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| |
| } |
| } while(0); |
| if( bgotonextstatement ) |
| { |
| bool bgotonextstatement = true; |
| do |
| { |
| if( 1 ) |
| { |
| bgotonextstatement=false; |
| continue; // branch miss [j5] |
| |
| } |
| } while(0); |
| if( bgotonextstatement ) |
| { |
| } |
| } |
| } |
| } |
| } |
| } |
| |
| } else |
| { |
| { |
| IkReal j5array[1], cj5array[1], sj5array[1]; |
| bool j5valid[1]={false}; |
| _nj5 = 1; |
| CheckValue<IkReal> x321=IKPowWithIntegerCheck(new_r00,-1); |
| if(!x321.valid){ |
| continue; |
| } |
| IkReal x317=x321.value; |
| IkReal x318=cj3*cj3; |
| CheckValue<IkReal> x322=IKPowWithIntegerCheck((((new_r10*sj3))+(((25000.00002)*cj3*new_r00*sj4))),-1); |
| if(!x322.valid){ |
| continue; |
| } |
| IkReal x319=x322.value; |
| IkReal x320=((1.0)*new_r10*x319); |
| CheckValue<IkReal> x323=IKPowWithIntegerCheck(x317,-2); |
| if(!x323.valid){ |
| continue; |
| } |
| if( IKabs(((((-1.0)*x317*x318*x320))+(((-1.0)*new_r00*x320))+(((-1.0)*sj3*x317))+((new_r10*x317*x319)))) < IKFAST_ATAN2_MAGTHRESH && IKabs((x319*(((-1.0)+x318+(x323.value))))) < IKFAST_ATAN2_MAGTHRESH && IKabs(IKsqr(((((-1.0)*x317*x318*x320))+(((-1.0)*new_r00*x320))+(((-1.0)*sj3*x317))+((new_r10*x317*x319))))+IKsqr((x319*(((-1.0)+x318+(x323.value)))))-1) <= IKFAST_SINCOS_THRESH ) |
| continue; |
| j5array[0]=IKatan2(((((-1.0)*x317*x318*x320))+(((-1.0)*new_r00*x320))+(((-1.0)*sj3*x317))+((new_r10*x317*x319))), (x319*(((-1.0)+x318+(x323.value))))); |
| sj5array[0]=IKsin(j5array[0]); |
| cj5array[0]=IKcos(j5array[0]); |
| if( j5array[0] > IKPI ) |
| { |
| j5array[0]-=IK2PI; |
| } |
| else if( j5array[0] < -IKPI ) |
| { j5array[0]+=IK2PI; |
| } |
| j5valid[0] = true; |
| for(int ij5 = 0; ij5 < 1; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < 1; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| { |
| IkReal evalcond[14]; |
| IkReal x324=IKcos(j5); |
| IkReal x325=IKsin(j5); |
| IkReal x326=((1.0)*cj3); |
| IkReal x327=((25000.00002)*sj4); |
| IkReal x328=((3.9999999968e-5)*cj4); |
| IkReal x329=((0.9999999992)*sj4); |
| IkReal x330=(new_r11*x325); |
| IkReal x331=(new_r01*x324); |
| IkReal x332=(new_r00*x324); |
| IkReal x333=(sj3*x325); |
| IkReal x334=(new_r10*x325); |
| IkReal x335=(sj3*x324); |
| evalcond[0]=(((new_r00*x325))+sj3+((new_r10*x324))); |
| evalcond[1]=(((new_r01*x325))+(((-1.0)*x326))+((new_r11*x324))); |
| evalcond[2]=(((cj3*x325*x327))+x335+new_r10); |
| evalcond[3]=((((-1.0)*cj3*x324*x327))+x333+new_r00); |
| evalcond[4]=(((x327*x333))+new_r11+(((-1.0)*x324*x326))); |
| evalcond[5]=((((-1.0)*x325*x326))+new_r01+(((-1.0)*x327*x335))); |
| evalcond[6]=(((x324*x329))+(((-1.0)*x324*x328))); |
| evalcond[7]=(((x325*x328))+(((-1.0)*x325*x329))); |
| evalcond[8]=((((-1.0)*cj3*x327))+x332+(((-1.0)*x334))); |
| evalcond[9]=(x331+(((-1.0)*x330))+(((-1.0)*sj3*x327))); |
| evalcond[10]=((((-1.0)*x326))+((x327*x332))+(((-1.0)*x327*x334))); |
| evalcond[11]=((((-1.0)*sj3))+((x327*x331))+(((-1.0)*x327*x330))); |
| evalcond[12]=((((-1.0)*x329*x332))+(((-1.0)*x328*x334))+((x329*x334))+((x328*x332))); |
| evalcond[13]=((((-1.0)*x329*x331))+(((-1.0)*x328*x330))+((x329*x330))+((x328*x331))); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[2]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[3]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[4]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[5]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[6]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[7]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[8]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[9]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[10]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[11]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[12]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[13]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| |
| } |
| |
| } |
| |
| } else |
| { |
| { |
| IkReal j5array[1], cj5array[1], sj5array[1]; |
| bool j5valid[1]={false}; |
| _nj5 = 1; |
| IkReal x336=new_r10*new_r10; |
| IkReal x337=cj3*cj3; |
| IkReal x338=new_r00*new_r00; |
| IkReal x339=(new_r00*sj3); |
| IkReal x340=((1.0)*new_r00); |
| IkReal x341=((25000.00002)*cj3*sj4); |
| IkReal x342=(new_r10*x341); |
| IkReal x343=((625000001.0)*x336*x337); |
| CheckValue<IkReal> x344=IKPowWithIntegerCheck((x338+(((-1.0)*x337*x338))+(((-1.0)*x343))+((x343*(cj4*cj4)))),-1); |
| if(!x344.valid){ |
| continue; |
| } |
| CheckValue<IkReal> x345=IKPowWithIntegerCheck((x339+(((-1.0)*x342))),-1); |
| if(!x345.valid){ |
| continue; |
| } |
| if( IKabs(((x344.value)*((((x342*(new_r10*new_r10)))+(((-1.0)*x339*(sj3*sj3)))+((x336*x339))+(((-1.0)*x342))+((x342*(cj3*cj3))))))) < IKFAST_ATAN2_MAGTHRESH && IKabs(((x345.value)*(((((-1.0)*new_r10*x340))+((sj3*x341)))))) < IKFAST_ATAN2_MAGTHRESH && IKabs(IKsqr(((x344.value)*((((x342*(new_r10*new_r10)))+(((-1.0)*x339*(sj3*sj3)))+((x336*x339))+(((-1.0)*x342))+((x342*(cj3*cj3)))))))+IKsqr(((x345.value)*(((((-1.0)*new_r10*x340))+((sj3*x341))))))-1) <= IKFAST_SINCOS_THRESH ) |
| continue; |
| j5array[0]=IKatan2(((x344.value)*((((x342*(new_r10*new_r10)))+(((-1.0)*x339*(sj3*sj3)))+((x336*x339))+(((-1.0)*x342))+((x342*(cj3*cj3)))))), ((x345.value)*(((((-1.0)*new_r10*x340))+((sj3*x341)))))); |
| sj5array[0]=IKsin(j5array[0]); |
| cj5array[0]=IKcos(j5array[0]); |
| if( j5array[0] > IKPI ) |
| { |
| j5array[0]-=IK2PI; |
| } |
| else if( j5array[0] < -IKPI ) |
| { j5array[0]+=IK2PI; |
| } |
| j5valid[0] = true; |
| for(int ij5 = 0; ij5 < 1; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < 1; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| { |
| IkReal evalcond[14]; |
| IkReal x346=IKcos(j5); |
| IkReal x347=IKsin(j5); |
| IkReal x348=((1.0)*cj3); |
| IkReal x349=((25000.00002)*sj4); |
| IkReal x350=((3.9999999968e-5)*cj4); |
| IkReal x351=((0.9999999992)*sj4); |
| IkReal x352=(new_r11*x347); |
| IkReal x353=(new_r01*x346); |
| IkReal x354=(new_r00*x346); |
| IkReal x355=(sj3*x347); |
| IkReal x356=(new_r10*x347); |
| IkReal x357=(sj3*x346); |
| evalcond[0]=(sj3+((new_r00*x347))+((new_r10*x346))); |
| evalcond[1]=(((new_r11*x346))+((new_r01*x347))+(((-1.0)*x348))); |
| evalcond[2]=(x357+new_r10+((cj3*x347*x349))); |
| evalcond[3]=((((-1.0)*cj3*x346*x349))+x355+new_r00); |
| evalcond[4]=(((x349*x355))+(((-1.0)*x346*x348))+new_r11); |
| evalcond[5]=((((-1.0)*x349*x357))+(((-1.0)*x347*x348))+new_r01); |
| evalcond[6]=(((x346*x351))+(((-1.0)*x346*x350))); |
| evalcond[7]=(((x347*x350))+(((-1.0)*x347*x351))); |
| evalcond[8]=((((-1.0)*cj3*x349))+(((-1.0)*x356))+x354); |
| evalcond[9]=((((-1.0)*x352))+x353+(((-1.0)*sj3*x349))); |
| evalcond[10]=((((-1.0)*x349*x356))+((x349*x354))+(((-1.0)*x348))); |
| evalcond[11]=((((-1.0)*sj3))+(((-1.0)*x349*x352))+((x349*x353))); |
| evalcond[12]=(((x351*x356))+((x350*x354))+(((-1.0)*x351*x354))+(((-1.0)*x350*x356))); |
| evalcond[13]=(((x351*x352))+((x350*x353))+(((-1.0)*x351*x353))+(((-1.0)*x350*x352))); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[2]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[3]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[4]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[5]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[6]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[7]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[8]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[9]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[10]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[11]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[12]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[13]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| |
| } |
| |
| } |
| |
| } else |
| { |
| { |
| IkReal j5array[1], cj5array[1], sj5array[1]; |
| bool j5valid[1]={false}; |
| _nj5 = 1; |
| IkReal x358=((1.0)*new_r00); |
| CheckValue<IkReal> x359 = IKatan2WithCheck(IkReal((((new_r11*sj3))+((cj3*new_r10)))),IkReal(((((-1.0)*new_r01*sj3))+(((-1.0)*cj3*x358)))),IKFAST_ATAN2_MAGTHRESH); |
| if(!x359.valid){ |
| continue; |
| } |
| CheckValue<IkReal> x360=IKPowWithIntegerCheck(IKsign((((new_r01*new_r10))+(((-1.0)*new_r11*x358)))),-1); |
| if(!x360.valid){ |
| continue; |
| } |
| j5array[0]=((-1.5707963267949)+(x359.value)+(((1.5707963267949)*(x360.value)))); |
| sj5array[0]=IKsin(j5array[0]); |
| cj5array[0]=IKcos(j5array[0]); |
| if( j5array[0] > IKPI ) |
| { |
| j5array[0]-=IK2PI; |
| } |
| else if( j5array[0] < -IKPI ) |
| { j5array[0]+=IK2PI; |
| } |
| j5valid[0] = true; |
| for(int ij5 = 0; ij5 < 1; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < 1; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| { |
| IkReal evalcond[14]; |
| IkReal x361=IKcos(j5); |
| IkReal x362=IKsin(j5); |
| IkReal x363=((1.0)*cj3); |
| IkReal x364=((25000.00002)*sj4); |
| IkReal x365=((3.9999999968e-5)*cj4); |
| IkReal x366=((0.9999999992)*sj4); |
| IkReal x367=(new_r11*x362); |
| IkReal x368=(new_r01*x361); |
| IkReal x369=(new_r00*x361); |
| IkReal x370=(sj3*x362); |
| IkReal x371=(new_r10*x362); |
| IkReal x372=(sj3*x361); |
| evalcond[0]=(sj3+((new_r00*x362))+((new_r10*x361))); |
| evalcond[1]=((((-1.0)*x363))+((new_r01*x362))+((new_r11*x361))); |
| evalcond[2]=(((cj3*x362*x364))+x372+new_r10); |
| evalcond[3]=(x370+(((-1.0)*cj3*x361*x364))+new_r00); |
| evalcond[4]=((((-1.0)*x361*x363))+((x364*x370))+new_r11); |
| evalcond[5]=((((-1.0)*x362*x363))+new_r01+(((-1.0)*x364*x372))); |
| evalcond[6]=(((x361*x366))+(((-1.0)*x361*x365))); |
| evalcond[7]=((((-1.0)*x362*x366))+((x362*x365))); |
| evalcond[8]=((((-1.0)*x371))+x369+(((-1.0)*cj3*x364))); |
| evalcond[9]=((((-1.0)*x367))+(((-1.0)*sj3*x364))+x368); |
| evalcond[10]=(((x364*x369))+(((-1.0)*x363))+(((-1.0)*x364*x371))); |
| evalcond[11]=((((-1.0)*sj3))+((x364*x368))+(((-1.0)*x364*x367))); |
| evalcond[12]=(((x365*x369))+((x366*x371))+(((-1.0)*x366*x369))+(((-1.0)*x365*x371))); |
| evalcond[13]=(((x366*x367))+((x365*x368))+(((-1.0)*x366*x368))+(((-1.0)*x365*x367))); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[2]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[3]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[4]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[5]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[6]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[7]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[8]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[9]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[10]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[11]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[12]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[13]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| |
| } |
| |
| } |
| } |
| |
| } |
| |
| } |
| |
| } |
| } while(0); |
| if( bgotonextstatement ) |
| { |
| bool bgotonextstatement = true; |
| do |
| { |
| if( 1 ) |
| { |
| bgotonextstatement=false; |
| continue; // branch miss [j3, j5] |
| |
| } |
| } while(0); |
| if( bgotonextstatement ) |
| { |
| } |
| } |
| } |
| } |
| } |
| } |
| } |
| } |
| |
| } else |
| { |
| { |
| IkReal j5array[1], cj5array[1], sj5array[1]; |
| bool j5valid[1]={false}; |
| _nj5 = 1; |
| IkReal x373=((0.9999999992)*sj4); |
| IkReal x374=((3.9999999968e-5)*cj4); |
| CheckValue<IkReal> x375=IKPowWithIntegerCheck(IKsign(((new_r12*new_r12)+(new_r02*new_r02))),-1); |
| if(!x375.valid){ |
| continue; |
| } |
| CheckValue<IkReal> x376 = IKatan2WithCheck(IkReal((((new_r12*x373))+(((-1.0)*new_r12*x374)))),IkReal((((new_r02*x374))+(((-1.0)*new_r02*x373)))),IKFAST_ATAN2_MAGTHRESH); |
| if(!x376.valid){ |
| continue; |
| } |
| j5array[0]=((-1.5707963267949)+(((1.5707963267949)*(x375.value)))+(x376.value)); |
| sj5array[0]=IKsin(j5array[0]); |
| cj5array[0]=IKcos(j5array[0]); |
| if( j5array[0] > IKPI ) |
| { |
| j5array[0]-=IK2PI; |
| } |
| else if( j5array[0] < -IKPI ) |
| { j5array[0]+=IK2PI; |
| } |
| j5valid[0] = true; |
| for(int ij5 = 0; ij5 < 1; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < 1; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| { |
| IkReal evalcond[8]; |
| IkReal x377=IKcos(j5); |
| IkReal x378=IKsin(j5); |
| IkReal x379=((0.9999999992)*cj4); |
| IkReal x380=((3.9999999968e-5)*cj4); |
| IkReal x381=((0.9999999992)*sj4); |
| IkReal x382=((3.9999999968e-5)*sj4); |
| IkReal x383=(new_r12*x378); |
| IkReal x384=(new_r02*x377); |
| IkReal x385=(new_r01*x377); |
| IkReal x386=(new_r11*x378); |
| IkReal x387=(new_r00*x377); |
| IkReal x388=(new_r10*x378); |
| evalcond[0]=(((new_r12*x377))+((new_r02*x378))); |
| evalcond[1]=(((x377*x381))+new_r02+(((-1.0)*x377*x380))); |
| evalcond[2]=(((x378*x380))+(((-1.0)*x378*x381))+new_r12); |
| evalcond[3]=(x384+x381+(((-1.0)*x383))+(((-1.0)*x380))); |
| evalcond[4]=((((-1.0)*x380*x388))+((new_r20*x379))+(((-1.0)*x381*x387))+((new_r20*x382))+((x380*x387))+((x381*x388))); |
| evalcond[5]=((((-1.0)*x380*x386))+(((-1.0)*x381*x385))+((new_r21*x379))+((x380*x385))+((x381*x386))+((new_r21*x382))); |
| evalcond[6]=((((-1.0)*x379*x383))+((new_r22*x381))+((x382*x384))+((x379*x384))+(((-1.0)*new_r22*x380))+(((-1.0)*x382*x383))); |
| evalcond[7]=((-1.0)+(((-1.0)*x380*x383))+(((-1.0)*x381*x384))+((new_r22*x382))+((x380*x384))+((x381*x383))+((new_r22*x379))); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[2]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[3]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[4]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[5]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[6]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[7]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| IkReal j3array[1], cj3array[1], sj3array[1]; |
| bool j3valid[1]={false}; |
| _nj3 = 1; |
| if( IKabs(((((-1.0)*new_r00*sj5))+(((-1.0)*cj5*new_r10)))) < IKFAST_ATAN2_MAGTHRESH && IKabs((((cj5*new_r11))+((new_r01*sj5)))) < IKFAST_ATAN2_MAGTHRESH && IKabs(IKsqr(((((-1.0)*new_r00*sj5))+(((-1.0)*cj5*new_r10))))+IKsqr((((cj5*new_r11))+((new_r01*sj5))))-1) <= IKFAST_SINCOS_THRESH ) |
| continue; |
| j3array[0]=IKatan2(((((-1.0)*new_r00*sj5))+(((-1.0)*cj5*new_r10))), (((cj5*new_r11))+((new_r01*sj5)))); |
| sj3array[0]=IKsin(j3array[0]); |
| cj3array[0]=IKcos(j3array[0]); |
| if( j3array[0] > IKPI ) |
| { |
| j3array[0]-=IK2PI; |
| } |
| else if( j3array[0] < -IKPI ) |
| { j3array[0]+=IK2PI; |
| } |
| j3valid[0] = true; |
| for(int ij3 = 0; ij3 < 1; ++ij3) |
| { |
| if( !j3valid[ij3] ) |
| { |
| continue; |
| } |
| _ij3[0] = ij3; _ij3[1] = -1; |
| for(int iij3 = ij3+1; iij3 < 1; ++iij3) |
| { |
| if( j3valid[iij3] && IKabs(cj3array[ij3]-cj3array[iij3]) < IKFAST_SOLUTION_THRESH && IKabs(sj3array[ij3]-sj3array[iij3]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j3valid[iij3]=false; _ij3[1] = iij3; break; |
| } |
| } |
| j3 = j3array[ij3]; cj3 = cj3array[ij3]; sj3 = sj3array[ij3]; |
| { |
| IkReal evalcond[12]; |
| IkReal x389=IKcos(j3); |
| IkReal x390=IKsin(j3); |
| IkReal x391=((0.9999999992)*cj4); |
| IkReal x392=((3.9999999968e-5)*cj4); |
| IkReal x393=(cj5*new_r01); |
| IkReal x394=((0.9999999992)*sj4); |
| IkReal x395=(cj5*new_r00); |
| IkReal x396=((3.9999999968e-5)*sj4); |
| IkReal x397=(new_r10*sj5); |
| IkReal x398=(new_r11*sj5); |
| IkReal x399=((1.0)*x389); |
| IkReal x400=(cj5*x390); |
| IkReal x401=(sj5*x389); |
| IkReal x402=(sj5*x390); |
| IkReal x403=(cj5*x389); |
| IkReal x404=(x389*x396); |
| evalcond[0]=(((cj5*new_r10))+((new_r00*sj5))+x390); |
| evalcond[1]=((((-1.0)*x399))+((cj5*new_r11))+((new_r01*sj5))); |
| evalcond[2]=((((-1.0)*x389*x394))+new_r20+((x389*x392))); |
| evalcond[3]=((((-1.0)*x390*x394))+new_r21+((x390*x392))); |
| evalcond[4]=((((-1.0)*x397))+(((-1.0)*x389*x391))+x395+(((-1.0)*x404))); |
| evalcond[5]=((((-1.0)*x398))+x393+(((-1.0)*x390*x396))+(((-1.0)*x390*x391))); |
| evalcond[6]=((((-1.0)*x391*x403))+x402+new_r00+(((-1.0)*x396*x403))); |
| evalcond[7]=(x400+new_r10+((x396*x401))+((x391*x401))); |
| evalcond[8]=((((-1.0)*sj5*x399))+(((-1.0)*x391*x400))+new_r01+(((-1.0)*x396*x400))); |
| evalcond[9]=((((-1.0)*cj5*x399))+new_r11+((x396*x402))+((x391*x402))); |
| evalcond[10]=((((-1.0)*x399))+((x395*x396))+((new_r20*x394))+(((-1.0)*x391*x397))+((x391*x395))+(((-1.0)*x396*x397))+(((-1.0)*new_r20*x392))); |
| evalcond[11]=((((-1.0)*x390))+(((-1.0)*new_r21*x392))+(((-1.0)*x391*x398))+((x391*x393))+((new_r21*x394))+(((-1.0)*x396*x398))+((x393*x396))); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[2]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[3]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[4]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[5]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[6]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[7]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[8]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[9]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[10]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[11]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| } |
| } |
| |
| } |
| |
| } |
| |
| } else |
| { |
| { |
| IkReal j3array[1], cj3array[1], sj3array[1]; |
| bool j3valid[1]={false}; |
| _nj3 = 1; |
| CheckValue<IkReal> x405 = IKatan2WithCheck(IkReal(((-1.0)*new_r21)),IkReal(((-1.0)*new_r20)),IKFAST_ATAN2_MAGTHRESH); |
| if(!x405.valid){ |
| continue; |
| } |
| CheckValue<IkReal> x406=IKPowWithIntegerCheck(IKsign(((((-0.9999999992)*sj4))+(((3.9999999968e-5)*cj4)))),-1); |
| if(!x406.valid){ |
| continue; |
| } |
| j3array[0]=((-1.5707963267949)+(x405.value)+(((1.5707963267949)*(x406.value)))); |
| sj3array[0]=IKsin(j3array[0]); |
| cj3array[0]=IKcos(j3array[0]); |
| if( j3array[0] > IKPI ) |
| { |
| j3array[0]-=IK2PI; |
| } |
| else if( j3array[0] < -IKPI ) |
| { j3array[0]+=IK2PI; |
| } |
| j3valid[0] = true; |
| for(int ij3 = 0; ij3 < 1; ++ij3) |
| { |
| if( !j3valid[ij3] ) |
| { |
| continue; |
| } |
| _ij3[0] = ij3; _ij3[1] = -1; |
| for(int iij3 = ij3+1; iij3 < 1; ++iij3) |
| { |
| if( j3valid[iij3] && IKabs(cj3array[ij3]-cj3array[iij3]) < IKFAST_SOLUTION_THRESH && IKabs(sj3array[ij3]-sj3array[iij3]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j3valid[iij3]=false; _ij3[1] = iij3; break; |
| } |
| } |
| j3 = j3array[ij3]; cj3 = cj3array[ij3]; sj3 = sj3array[ij3]; |
| { |
| IkReal evalcond[2]; |
| IkReal x407=IKcos(j3); |
| IkReal x408=IKsin(j3); |
| IkReal x409=((0.9999999992)*sj4); |
| IkReal x410=((3.9999999968e-5)*cj4); |
| evalcond[0]=(((x407*x410))+(((-1.0)*x407*x409))+new_r20); |
| evalcond[1]=(((x408*x410))+new_r21+(((-1.0)*x408*x409))); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| IkReal j5eval[3]; |
| IkReal x411=((((-1.0)*new_r00*new_r12))+((new_r02*new_r10))); |
| j5eval[0]=x411; |
| j5eval[1]=((IKabs((new_r12*sj3)))+(IKabs((new_r02*sj3)))); |
| j5eval[2]=IKsign(x411); |
| if( IKabs(j5eval[0]) < 0.0000010000000000 || IKabs(j5eval[1]) < 0.0000010000000000 || IKabs(j5eval[2]) < 0.0000010000000000 ) |
| { |
| { |
| IkReal j5eval[3]; |
| IkReal x412=(((new_r01*new_r12))+(((-1.0)*new_r02*new_r11))); |
| j5eval[0]=x412; |
| j5eval[1]=IKsign(x412); |
| j5eval[2]=((IKabs((cj3*new_r02)))+(IKabs((cj3*new_r12)))); |
| if( IKabs(j5eval[0]) < 0.0000010000000000 || IKabs(j5eval[1]) < 0.0000010000000000 || IKabs(j5eval[2]) < 0.0000010000000000 ) |
| { |
| { |
| IkReal j5eval[3]; |
| j5eval[0]=((((25000.0)*sj4))+(((-1.0)*cj4))); |
| j5eval[1]=((IKabs(new_r12))+(IKabs(new_r02))); |
| j5eval[2]=IKsign(((((-3.9999999968e-5)*cj4))+(((0.9999999992)*sj4)))); |
| if( IKabs(j5eval[0]) < 0.0000010000000000 || IKabs(j5eval[1]) < 0.0000010000000000 || IKabs(j5eval[2]) < 0.0000010000000000 ) |
| { |
| { |
| IkReal evalcond[5]; |
| bool bgotonextstatement = true; |
| do |
| { |
| evalcond[0]=((-3.14159265358979)+(IKfmod(((3.14159265358979)+(IKabs(((-3.99999999786667e-5)+j4)))), 6.28318530717959))); |
| evalcond[1]=new_r02; |
| evalcond[2]=new_r12; |
| evalcond[3]=new_r20; |
| evalcond[4]=new_r21; |
| if( IKabs(evalcond[0]) < 0.0000050000000000 && IKabs(evalcond[1]) < 0.0000050000000000 && IKabs(evalcond[2]) < 0.0000050000000000 && IKabs(evalcond[3]) < 0.0000050000000000 && IKabs(evalcond[4]) < 0.0000050000000000 ) |
| { |
| bgotonextstatement=false; |
| { |
| IkReal j5eval[3]; |
| sj4=4.0e-5; |
| cj4=1.0; |
| j4=4.0e-5; |
| IkReal x413=((1.0)*new_r00); |
| IkReal x414=(((new_r01*new_r10))+(((-1.0)*new_r11*x413))); |
| j5eval[0]=x414; |
| j5eval[1]=IKsign(x414); |
| j5eval[2]=((IKabs((((new_r11*sj3))+((cj3*new_r10)))))+(IKabs(((((-1.0)*new_r01*sj3))+(((-1.0)*cj3*x413)))))); |
| if( IKabs(j5eval[0]) < 0.0000010000000000 || IKabs(j5eval[1]) < 0.0000010000000000 || IKabs(j5eval[2]) < 0.0000010000000000 ) |
| { |
| { |
| IkReal j5eval[2]; |
| sj4=4.0e-5; |
| cj4=1.0; |
| j4=4.0e-5; |
| IkReal x415=new_r00*new_r00; |
| IkReal x416=cj3*cj3; |
| j5eval[0]=((((-1.0)*x415*x416))+x415+(((-1.0000000016)*x416*(new_r10*new_r10)))); |
| j5eval[1]=((((-1.0000000008)*cj3*new_r10))+((new_r00*sj3))); |
| if( IKabs(j5eval[0]) < 0.0000010000000000 || IKabs(j5eval[1]) < 0.0000010000000000 ) |
| { |
| { |
| IkReal j5eval[2]; |
| sj4=4.0e-5; |
| cj4=1.0; |
| j4=4.0e-5; |
| j5eval[0]=new_r00; |
| j5eval[1]=((((-1.0000000008)*new_r00*sj3))+((cj3*new_r10))); |
| if( IKabs(j5eval[0]) < 0.0000010000000000 || IKabs(j5eval[1]) < 0.0000010000000000 ) |
| { |
| { |
| IkReal evalcond[1]; |
| bool bgotonextstatement = true; |
| do |
| { |
| IkReal x417=((-1.0000000008)*new_r00); |
| IkReal x419 = ((((1.0000000016)*(new_r00*new_r00)))+(new_r10*new_r10)); |
| if(IKabs(x419)==0){ |
| continue; |
| } |
| IkReal x418=pow(x419,-0.5); |
| CheckValue<IkReal> x420 = IKatan2WithCheck(IkReal(new_r10),IkReal(x417),IKFAST_ATAN2_MAGTHRESH); |
| if(!x420.valid){ |
| continue; |
| } |
| IkReal gconst6=((-1.0)*(x420.value)); |
| IkReal gconst7=((-1.0)*new_r10*x418); |
| IkReal gconst8=(x417*x418); |
| CheckValue<IkReal> x421 = IKatan2WithCheck(IkReal(new_r10),IkReal(((-1.0000000008)*new_r00)),IKFAST_ATAN2_MAGTHRESH); |
| if(!x421.valid){ |
| continue; |
| } |
| evalcond[0]=((-3.14159265358979)+(IKfmod(((3.14159265358979)+(IKabs(((x421.value)+j3)))), 6.28318530717959))); |
| if( IKabs(evalcond[0]) < 0.0000050000000000 ) |
| { |
| bgotonextstatement=false; |
| { |
| IkReal j5eval[3]; |
| IkReal x422=((-1.0000000008)*new_r00); |
| IkReal x423=x418; |
| sj4=4.0e-5; |
| cj4=1.0; |
| j4=4.0e-5; |
| sj3=gconst7; |
| cj3=gconst8; |
| CheckValue<IkReal> x424 = IKatan2WithCheck(IkReal(new_r10),IkReal(((-1.0)*new_r00)),IKFAST_ATAN2_MAGTHRESH); |
| if(!x424.valid){ |
| continue; |
| } |
| j3=((-1.0)*(x424.value)); |
| CheckValue<IkReal> x425 = IKatan2WithCheck(IkReal(new_r10),IkReal(x422),IKFAST_ATAN2_MAGTHRESH); |
| if(!x425.valid){ |
| continue; |
| } |
| IkReal gconst6=((-1.0)*(x425.value)); |
| IkReal gconst7=((-1.0)*new_r10*x423); |
| IkReal gconst8=(x422*x423); |
| IkReal x426=new_r00*new_r00; |
| IkReal x427=(new_r01*new_r10); |
| IkReal x428=(x427+(((-1.0)*new_r00*new_r11))); |
| IkReal x431 = ((((625000000.0)*(new_r10*new_r10)))+(((625000001.0)*x426))); |
| if(IKabs(x431)==0){ |
| continue; |
| } |
| IkReal x429=pow(x431,-0.5); |
| IkReal x430=(new_r10*x429); |
| j5eval[0]=x428; |
| j5eval[1]=IKsign(x428); |
| j5eval[2]=((IKabs(((((-25000.00002)*new_r00*x430))+(((-25000.0)*new_r11*x430)))))+(IKabs(((((25000.00002)*x426*x429))+(((25000.0)*x427*x429)))))); |
| if( IKabs(j5eval[0]) < 0.0000010000000000 || IKabs(j5eval[1]) < 0.0000010000000000 || IKabs(j5eval[2]) < 0.0000010000000000 ) |
| { |
| { |
| IkReal j5eval[2]; |
| IkReal x432=((-1.0000000008)*new_r00); |
| IkReal x433=x418; |
| sj4=4.0e-5; |
| cj4=1.0; |
| j4=4.0e-5; |
| sj3=gconst7; |
| cj3=gconst8; |
| CheckValue<IkReal> x434 = IKatan2WithCheck(IkReal(new_r10),IkReal(((-1.0)*new_r00)),IKFAST_ATAN2_MAGTHRESH); |
| if(!x434.valid){ |
| continue; |
| } |
| j3=((-1.0)*(x434.value)); |
| CheckValue<IkReal> x435 = IKatan2WithCheck(IkReal(new_r10),IkReal(x432),IKFAST_ATAN2_MAGTHRESH); |
| if(!x435.valid){ |
| continue; |
| } |
| IkReal gconst6=((-1.0)*(x435.value)); |
| IkReal gconst7=((-1.0)*new_r10*x433); |
| IkReal gconst8=(x432*x433); |
| IkReal x436=new_r00*new_r00; |
| IkReal x437=new_r10*new_r10; |
| IkReal x438=((((1.0000000016)*x436))+x437); |
| CheckValue<IkReal> x439=IKPowWithIntegerCheck(x438,-1); |
| if(!x439.valid){ |
| continue; |
| } |
| j5eval[0]=((-3.20000000256e-9)*x436*x437*(x439.value)); |
| IkReal x440 = x438; |
| if(IKabs(x440)==0){ |
| continue; |
| } |
| j5eval[1]=((1.6e-9)*new_r00*new_r10*(pow(x440,-0.5))); |
| if( IKabs(j5eval[0]) < 0.0000010000000000 || IKabs(j5eval[1]) < 0.0000010000000000 ) |
| { |
| { |
| IkReal j5eval[1]; |
| IkReal x441=((-1.0000000008)*new_r00); |
| IkReal x442=x418; |
| sj4=4.0e-5; |
| cj4=1.0; |
| j4=4.0e-5; |
| sj3=gconst7; |
| cj3=gconst8; |
| CheckValue<IkReal> x443 = IKatan2WithCheck(IkReal(new_r10),IkReal(((-1.0)*new_r00)),IKFAST_ATAN2_MAGTHRESH); |
| if(!x443.valid){ |
| continue; |
| } |
| j3=((-1.0)*(x443.value)); |
| CheckValue<IkReal> x444 = IKatan2WithCheck(IkReal(new_r10),IkReal(x441),IKFAST_ATAN2_MAGTHRESH); |
| if(!x444.valid){ |
| continue; |
| } |
| IkReal gconst6=((-1.0)*(x444.value)); |
| IkReal gconst7=((-1.0)*new_r10*x442); |
| IkReal gconst8=(x441*x442); |
| j5eval[0]=new_r00; |
| if( IKabs(j5eval[0]) < 0.0000010000000000 ) |
| { |
| { |
| IkReal evalcond[1]; |
| bool bgotonextstatement = true; |
| do |
| { |
| evalcond[0]=IKabs(new_r00); |
| if( IKabs(evalcond[0]) < 0.0000050000000000 ) |
| { |
| bgotonextstatement=false; |
| { |
| IkReal j5eval[1]; |
| CheckValue<IkReal> x446 = IKatan2WithCheck(IkReal(new_r10),IkReal(0),IKFAST_ATAN2_MAGTHRESH); |
| if(!x446.valid){ |
| continue; |
| } |
| IkReal x445=((-1.0)*(x446.value)); |
| sj4=4.0e-5; |
| cj4=1.0; |
| j4=4.0e-5; |
| sj3=gconst7; |
| cj3=gconst8; |
| j3=x445; |
| new_r00=0; |
| IkReal gconst6=x445; |
| IkReal x447 = new_r10*new_r10; |
| if(IKabs(x447)==0){ |
| continue; |
| } |
| IkReal gconst7=((-1.0)*new_r10*(pow(x447,-0.5))); |
| IkReal gconst8=0; |
| j5eval[0]=new_r10; |
| if( IKabs(j5eval[0]) < 0.0000010000000000 ) |
| { |
| { |
| IkReal j5array[1], cj5array[1], sj5array[1]; |
| bool j5valid[1]={false}; |
| _nj5 = 1; |
| CheckValue<IkReal> x449=IKPowWithIntegerCheck(gconst7,-1); |
| if(!x449.valid){ |
| continue; |
| } |
| IkReal x448=x449.value; |
| if( IKabs(((-0.9999999992)*new_r11*x448)) < IKFAST_ATAN2_MAGTHRESH && IKabs(((-1.0)*new_r10*x448)) < IKFAST_ATAN2_MAGTHRESH && IKabs(IKsqr(((-0.9999999992)*new_r11*x448))+IKsqr(((-1.0)*new_r10*x448))-1) <= IKFAST_SINCOS_THRESH ) |
| continue; |
| j5array[0]=IKatan2(((-0.9999999992)*new_r11*x448), ((-1.0)*new_r10*x448)); |
| sj5array[0]=IKsin(j5array[0]); |
| cj5array[0]=IKcos(j5array[0]); |
| if( j5array[0] > IKPI ) |
| { |
| j5array[0]-=IK2PI; |
| } |
| else if( j5array[0] < -IKPI ) |
| { j5array[0]+=IK2PI; |
| } |
| j5valid[0] = true; |
| for(int ij5 = 0; ij5 < 1; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < 1; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| { |
| IkReal evalcond[10]; |
| IkReal x450=IKsin(j5); |
| IkReal x451=IKcos(j5); |
| IkReal x452=((1.0000000008)*gconst7); |
| IkReal x453=(new_r11*x450); |
| IkReal x454=(new_r10*x450); |
| IkReal x455=(new_r01*x451); |
| evalcond[0]=(gconst7*x450); |
| evalcond[1]=((-1.0)*x454); |
| evalcond[2]=(((new_r10*x451))+gconst7); |
| evalcond[3]=(((gconst7*x451))+new_r10); |
| evalcond[4]=((-1.0000000008)*x454); |
| evalcond[5]=(((new_r11*x451))+((new_r01*x450))); |
| evalcond[6]=((((-1.0)*x451*x452))+new_r01); |
| evalcond[7]=(((x450*x452))+new_r11); |
| evalcond[8]=((((-1.0)*x453))+(((-1.0)*x452))+x455); |
| evalcond[9]=((((-1.0)*gconst7))+(((1.0000000008)*x455))+(((-1.0000000008)*x453))); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[2]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[3]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[4]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[5]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[6]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[7]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[8]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[9]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| |
| } else |
| { |
| { |
| IkReal j5array[1], cj5array[1], sj5array[1]; |
| bool j5valid[1]={false}; |
| _nj5 = 1; |
| CheckValue<IkReal> x456=IKPowWithIntegerCheck(gconst7,-1); |
| if(!x456.valid){ |
| continue; |
| } |
| CheckValue<IkReal> x457=IKPowWithIntegerCheck(new_r10,-1); |
| if(!x457.valid){ |
| continue; |
| } |
| if( IKabs(((-0.9999999992)*new_r11*(x456.value))) < IKFAST_ATAN2_MAGTHRESH && IKabs(((-1.0)*gconst7*(x457.value))) < IKFAST_ATAN2_MAGTHRESH && IKabs(IKsqr(((-0.9999999992)*new_r11*(x456.value)))+IKsqr(((-1.0)*gconst7*(x457.value)))-1) <= IKFAST_SINCOS_THRESH ) |
| continue; |
| j5array[0]=IKatan2(((-0.9999999992)*new_r11*(x456.value)), ((-1.0)*gconst7*(x457.value))); |
| sj5array[0]=IKsin(j5array[0]); |
| cj5array[0]=IKcos(j5array[0]); |
| if( j5array[0] > IKPI ) |
| { |
| j5array[0]-=IK2PI; |
| } |
| else if( j5array[0] < -IKPI ) |
| { j5array[0]+=IK2PI; |
| } |
| j5valid[0] = true; |
| for(int ij5 = 0; ij5 < 1; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < 1; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| { |
| IkReal evalcond[10]; |
| IkReal x458=IKsin(j5); |
| IkReal x459=IKcos(j5); |
| IkReal x460=((1.0000000008)*gconst7); |
| IkReal x461=(new_r11*x458); |
| IkReal x462=(new_r10*x458); |
| IkReal x463=(new_r01*x459); |
| evalcond[0]=(gconst7*x458); |
| evalcond[1]=((-1.0)*x462); |
| evalcond[2]=(((new_r10*x459))+gconst7); |
| evalcond[3]=(((gconst7*x459))+new_r10); |
| evalcond[4]=((-1.0000000008)*x462); |
| evalcond[5]=(((new_r11*x459))+((new_r01*x458))); |
| evalcond[6]=((((-1.0)*x459*x460))+new_r01); |
| evalcond[7]=(new_r11+((x458*x460))); |
| evalcond[8]=((((-1.0)*x461))+(((-1.0)*x460))+x463); |
| evalcond[9]=((((-1.0)*gconst7))+(((1.0000000008)*x463))+(((-1.0000000008)*x461))); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[2]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[3]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[4]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[5]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[6]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[7]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[8]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[9]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| |
| } |
| |
| } |
| |
| } |
| } while(0); |
| if( bgotonextstatement ) |
| { |
| bool bgotonextstatement = true; |
| do |
| { |
| evalcond[0]=((IKabs(new_r11))+(IKabs(new_r01))); |
| if( IKabs(evalcond[0]) < 0.0000050000000000 ) |
| { |
| bgotonextstatement=false; |
| { |
| IkReal j5eval[3]; |
| IkReal x464=((-1.0000000008)*new_r00); |
| IkReal x466 = ((1.0000000016)+(((-1.6e-9)*(new_r10*new_r10)))); |
| if(IKabs(x466)==0){ |
| continue; |
| } |
| IkReal x465=pow(x466,-0.5); |
| sj4=4.0e-5; |
| cj4=1.0; |
| j4=4.0e-5; |
| sj3=gconst7; |
| cj3=gconst8; |
| CheckValue<IkReal> x467 = IKatan2WithCheck(IkReal(new_r10),IkReal(((-1.0)*new_r00)),IKFAST_ATAN2_MAGTHRESH); |
| if(!x467.valid){ |
| continue; |
| } |
| j3=((-1.0)*(x467.value)); |
| new_r11=0; |
| new_r01=0; |
| new_r22=0; |
| new_r20=0; |
| CheckValue<IkReal> x468 = IKatan2WithCheck(IkReal(new_r10),IkReal(x464),IKFAST_ATAN2_MAGTHRESH); |
| if(!x468.valid){ |
| continue; |
| } |
| IkReal gconst6=((-1.0)*(x468.value)); |
| IkReal gconst7=((-1.0)*new_r10*x465); |
| IkReal gconst8=(x464*x465); |
| IkReal x469=new_r10*new_r10; |
| CheckValue<IkReal> x473=IKPowWithIntegerCheck(((-625000001.0)+x469),-1); |
| if(!x473.valid){ |
| continue; |
| } |
| IkReal x470=x473.value; |
| if((((625000001.0)+(((-1.0)*x469)))) < -0.00001) |
| continue; |
| IkReal x471=IKsqrt(((625000001.0)+(((-1.0)*x469)))); |
| IkReal x472=(x470*x471); |
| j5eval[0]=-1.0; |
| j5eval[1]=-1.0; |
| IkReal x474 = ((1.0000000016)+(((-1.6e-9)*x469))); |
| if(IKabs(x474)==0){ |
| continue; |
| } |
| j5eval[2]=((IKabs(((((-625000001.0)*x472))+(((1250000001.0)*x469*x472)))))+(((50000.00004)*(IKabs((new_r00*new_r10*(pow(x474,-0.5)))))))); |
| if( IKabs(j5eval[0]) < 0.0000010000000000 || IKabs(j5eval[1]) < 0.0000010000000000 || IKabs(j5eval[2]) < 0.0000010000000000 ) |
| { |
| { |
| IkReal j5eval[1]; |
| IkReal x475=((-1.0000000008)*new_r00); |
| IkReal x477 = ((1.0000000016)+(((-1.6e-9)*(new_r10*new_r10)))); |
| if(IKabs(x477)==0){ |
| continue; |
| } |
| IkReal x476=pow(x477,-0.5); |
| sj4=4.0e-5; |
| cj4=1.0; |
| j4=4.0e-5; |
| sj3=gconst7; |
| cj3=gconst8; |
| CheckValue<IkReal> x478 = IKatan2WithCheck(IkReal(new_r10),IkReal(((-1.0)*new_r00)),IKFAST_ATAN2_MAGTHRESH); |
| if(!x478.valid){ |
| continue; |
| } |
| j3=((-1.0)*(x478.value)); |
| new_r11=0; |
| new_r01=0; |
| new_r22=0; |
| new_r20=0; |
| CheckValue<IkReal> x479 = IKatan2WithCheck(IkReal(new_r10),IkReal(x475),IKFAST_ATAN2_MAGTHRESH); |
| if(!x479.valid){ |
| continue; |
| } |
| IkReal gconst6=((-1.0)*(x479.value)); |
| IkReal gconst7=((-1.0)*new_r10*x476); |
| IkReal gconst8=(x475*x476); |
| IkReal x480=new_r10*new_r10; |
| CheckValue<IkReal> x483=IKPowWithIntegerCheck(((1.0000000016)+(((-1.6e-9)*x480))),-1); |
| if(!x483.valid){ |
| continue; |
| } |
| IkReal x481=x483.value; |
| IkReal x482=((625000001.0)*x481); |
| IkReal x484=((1.0)+(((-1.0)*x480))); |
| j5eval[0]=IKsign((((x482*(x480*x480)))+(((-1.0)*x482*(x484*x484))))); |
| if( IKabs(j5eval[0]) < 0.0000010000000000 ) |
| { |
| { |
| IkReal j5eval[2]; |
| IkReal x485=((-1.0000000008)*new_r00); |
| IkReal x487 = ((1.0000000016)+(((-1.6e-9)*(new_r10*new_r10)))); |
| if(IKabs(x487)==0){ |
| continue; |
| } |
| IkReal x486=pow(x487,-0.5); |
| sj4=4.0e-5; |
| cj4=1.0; |
| j4=4.0e-5; |
| sj3=gconst7; |
| cj3=gconst8; |
| CheckValue<IkReal> x488 = IKatan2WithCheck(IkReal(new_r10),IkReal(((-1.0)*new_r00)),IKFAST_ATAN2_MAGTHRESH); |
| if(!x488.valid){ |
| continue; |
| } |
| j3=((-1.0)*(x488.value)); |
| new_r11=0; |
| new_r01=0; |
| new_r22=0; |
| new_r20=0; |
| CheckValue<IkReal> x489 = IKatan2WithCheck(IkReal(new_r10),IkReal(x485),IKFAST_ATAN2_MAGTHRESH); |
| if(!x489.valid){ |
| continue; |
| } |
| IkReal gconst6=((-1.0)*(x489.value)); |
| IkReal gconst7=((-1.0)*new_r10*x486); |
| IkReal gconst8=(x485*x486); |
| IkReal x490=new_r10*new_r10; |
| IkReal x491=((1.0000000016)+(((-1.6e-9)*x490))); |
| CheckValue<IkReal> x492=IKPowWithIntegerCheck(x491,-1); |
| if(!x492.valid){ |
| continue; |
| } |
| j5eval[0]=((-3.20000000256e-9)*x490*(x492.value)*(((1.0)+(((-1.0)*x490))))); |
| IkReal x493 = x491; |
| if(IKabs(x493)==0){ |
| continue; |
| } |
| j5eval[1]=((1.6e-9)*new_r00*new_r10*(pow(x493,-0.5))); |
| if( IKabs(j5eval[0]) < 0.0000010000000000 || IKabs(j5eval[1]) < 0.0000010000000000 ) |
| { |
| continue; // 3 cases reached |
| |
| } else |
| { |
| { |
| IkReal j5array[1], cj5array[1], sj5array[1]; |
| bool j5valid[1]={false}; |
| _nj5 = 1; |
| IkReal x494=gconst7*gconst7; |
| IkReal x495=new_r10*new_r10; |
| IkReal x496=((625000000.0)*new_r00); |
| IkReal x497=((625000000.5)*gconst8); |
| IkReal x498=((25000.00002)*gconst8); |
| IkReal x499=((25000.0)*new_r00); |
| CheckValue<IkReal> x500=IKPowWithIntegerCheck(((((-625000001.0)*x495*(gconst8*gconst8)))+((new_r00*x494*x496))),-1); |
| if(!x500.valid){ |
| continue; |
| } |
| CheckValue<IkReal> x501=IKPowWithIntegerCheck(((((-1.0)*new_r10*x498))+((gconst7*x499))),-1); |
| if(!x501.valid){ |
| continue; |
| } |
| if( IKabs(((x500.value)*(((((-1.0)*x496*(gconst7*gconst7*gconst7)))+(((-1.0)*new_r10*x494*x497))+((x497*(new_r10*new_r10*new_r10)))+((gconst7*x495*x496)))))) < IKFAST_ATAN2_MAGTHRESH && IKabs(((x501.value)*(((((-1.0)*new_r10*x499))+((gconst7*x498)))))) < IKFAST_ATAN2_MAGTHRESH && IKabs(IKsqr(((x500.value)*(((((-1.0)*x496*(gconst7*gconst7*gconst7)))+(((-1.0)*new_r10*x494*x497))+((x497*(new_r10*new_r10*new_r10)))+((gconst7*x495*x496))))))+IKsqr(((x501.value)*(((((-1.0)*new_r10*x499))+((gconst7*x498))))))-1) <= IKFAST_SINCOS_THRESH ) |
| continue; |
| j5array[0]=IKatan2(((x500.value)*(((((-1.0)*x496*(gconst7*gconst7*gconst7)))+(((-1.0)*new_r10*x494*x497))+((x497*(new_r10*new_r10*new_r10)))+((gconst7*x495*x496))))), ((x501.value)*(((((-1.0)*new_r10*x499))+((gconst7*x498)))))); |
| sj5array[0]=IKsin(j5array[0]); |
| cj5array[0]=IKcos(j5array[0]); |
| if( j5array[0] > IKPI ) |
| { |
| j5array[0]-=IK2PI; |
| } |
| else if( j5array[0] < -IKPI ) |
| { j5array[0]+=IK2PI; |
| } |
| j5valid[0] = true; |
| for(int ij5 = 0; ij5 < 1; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < 1; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| { |
| IkReal evalcond[7]; |
| IkReal x502=IKsin(j5); |
| IkReal x503=IKcos(j5); |
| IkReal x504=((1.0)*gconst8); |
| IkReal x505=((1.0000000008)*gconst8); |
| IkReal x506=(gconst7*x503); |
| IkReal x507=(new_r00*x503); |
| IkReal x508=((1.0000000008)*x502); |
| evalcond[0]=(gconst7+((new_r10*x503))+((new_r00*x502))); |
| evalcond[1]=(((gconst7*x502))+(((-1.0)*x503*x505))+new_r00); |
| evalcond[2]=(x506+((x502*x505))+new_r10); |
| evalcond[3]=((((-1.0)*x502*x504))+(((-1.0000000008)*x506))); |
| evalcond[4]=(((gconst7*x508))+(((-1.0)*x503*x504))); |
| evalcond[5]=((((-1.0)*new_r10*x502))+(((-1.0)*x505))+x507); |
| evalcond[6]=((((-1.0)*x504))+(((1.0000000008)*x507))+(((-1.0)*new_r10*x508))); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[2]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[3]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[4]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[5]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[6]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| |
| } |
| |
| } |
| |
| } else |
| { |
| { |
| IkReal j5array[1], cj5array[1], sj5array[1]; |
| bool j5valid[1]={false}; |
| _nj5 = 1; |
| IkReal x509=gconst8*gconst8; |
| IkReal x510=gconst7*gconst7; |
| IkReal x511=((625000000.0)*x509); |
| IkReal x512=((625000000.5)*gconst8*x510); |
| CheckValue<IkReal> x513 = IKatan2WithCheck(IkReal((((gconst7*new_r00*x511))+(((-1.0)*new_r10*x512)))),IkReal((((new_r00*x512))+(((-625000001.0)*new_r10*(gconst7*gconst7*gconst7))))),IKFAST_ATAN2_MAGTHRESH); |
| if(!x513.valid){ |
| continue; |
| } |
| CheckValue<IkReal> x514=IKPowWithIntegerCheck(IKsign(((((625000001.0)*x510*(new_r10*new_r10)))+(((-1.0)*x511*(new_r00*new_r00))))),-1); |
| if(!x514.valid){ |
| continue; |
| } |
| j5array[0]=((-1.5707963267949)+(x513.value)+(((1.5707963267949)*(x514.value)))); |
| sj5array[0]=IKsin(j5array[0]); |
| cj5array[0]=IKcos(j5array[0]); |
| if( j5array[0] > IKPI ) |
| { |
| j5array[0]-=IK2PI; |
| } |
| else if( j5array[0] < -IKPI ) |
| { j5array[0]+=IK2PI; |
| } |
| j5valid[0] = true; |
| for(int ij5 = 0; ij5 < 1; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < 1; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| { |
| IkReal evalcond[7]; |
| IkReal x515=IKsin(j5); |
| IkReal x516=IKcos(j5); |
| IkReal x517=((1.0)*gconst8); |
| IkReal x518=((1.0000000008)*gconst8); |
| IkReal x519=(gconst7*x516); |
| IkReal x520=(new_r00*x516); |
| IkReal x521=((1.0000000008)*x515); |
| evalcond[0]=(((new_r00*x515))+((new_r10*x516))+gconst7); |
| evalcond[1]=((((-1.0)*x516*x518))+((gconst7*x515))+new_r00); |
| evalcond[2]=(x519+((x515*x518))+new_r10); |
| evalcond[3]=((((-1.0000000008)*x519))+(((-1.0)*x515*x517))); |
| evalcond[4]=(((gconst7*x521))+(((-1.0)*x516*x517))); |
| evalcond[5]=((((-1.0)*new_r10*x515))+x520+(((-1.0)*x518))); |
| evalcond[6]=((((1.0000000008)*x520))+(((-1.0)*new_r10*x521))+(((-1.0)*x517))); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[2]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[3]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[4]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[5]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[6]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| |
| } |
| |
| } |
| |
| } else |
| { |
| { |
| IkReal j5array[1], cj5array[1], sj5array[1]; |
| bool j5valid[1]={false}; |
| _nj5 = 1; |
| IkReal x522=((25000.00002)*gconst8); |
| IkReal x523=((25000.0)*gconst7); |
| CheckValue<IkReal> x524=IKPowWithIntegerCheck(IKsign(((((-25000.0)*(new_r10*new_r10)))+(((-25000.0)*(new_r00*new_r00))))),-1); |
| if(!x524.valid){ |
| continue; |
| } |
| CheckValue<IkReal> x525 = IKatan2WithCheck(IkReal((((new_r10*x522))+((new_r00*x523)))),IkReal(((((-1.0)*new_r00*x522))+((new_r10*x523)))),IKFAST_ATAN2_MAGTHRESH); |
| if(!x525.valid){ |
| continue; |
| } |
| j5array[0]=((-1.5707963267949)+(((1.5707963267949)*(x524.value)))+(x525.value)); |
| sj5array[0]=IKsin(j5array[0]); |
| cj5array[0]=IKcos(j5array[0]); |
| if( j5array[0] > IKPI ) |
| { |
| j5array[0]-=IK2PI; |
| } |
| else if( j5array[0] < -IKPI ) |
| { j5array[0]+=IK2PI; |
| } |
| j5valid[0] = true; |
| for(int ij5 = 0; ij5 < 1; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < 1; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| { |
| IkReal evalcond[7]; |
| IkReal x526=IKsin(j5); |
| IkReal x527=IKcos(j5); |
| IkReal x528=((1.0)*gconst8); |
| IkReal x529=((1.0000000008)*gconst8); |
| IkReal x530=(gconst7*x527); |
| IkReal x531=(new_r00*x527); |
| IkReal x532=((1.0000000008)*x526); |
| evalcond[0]=(gconst7+((new_r10*x527))+((new_r00*x526))); |
| evalcond[1]=((((-1.0)*x527*x529))+((gconst7*x526))+new_r00); |
| evalcond[2]=(((x526*x529))+x530+new_r10); |
| evalcond[3]=((((-1.0)*x526*x528))+(((-1.0000000008)*x530))); |
| evalcond[4]=((((-1.0)*x527*x528))+((gconst7*x532))); |
| evalcond[5]=((((-1.0)*x529))+x531+(((-1.0)*new_r10*x526))); |
| evalcond[6]=((((1.0000000008)*x531))+(((-1.0)*x528))+(((-1.0)*new_r10*x532))); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[2]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[3]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[4]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[5]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[6]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| |
| } |
| |
| } |
| |
| } |
| } while(0); |
| if( bgotonextstatement ) |
| { |
| bool bgotonextstatement = true; |
| do |
| { |
| evalcond[0]=((IKabs(new_r11))+(IKabs(new_r10))); |
| if( IKabs(evalcond[0]) < 0.0000050000000000 ) |
| { |
| bgotonextstatement=false; |
| { |
| IkReal j5array[1], cj5array[1], sj5array[1]; |
| bool j5valid[1]={false}; |
| _nj5 = 1; |
| CheckValue<IkReal> x534=IKPowWithIntegerCheck(gconst8,-1); |
| if(!x534.valid){ |
| continue; |
| } |
| IkReal x533=x534.value; |
| if( IKabs((new_r01*x533)) < IKFAST_ATAN2_MAGTHRESH && IKabs(((0.9999999992)*new_r00*x533)) < IKFAST_ATAN2_MAGTHRESH && IKabs(IKsqr((new_r01*x533))+IKsqr(((0.9999999992)*new_r00*x533))-1) <= IKFAST_SINCOS_THRESH ) |
| continue; |
| j5array[0]=IKatan2((new_r01*x533), ((0.9999999992)*new_r00*x533)); |
| sj5array[0]=IKsin(j5array[0]); |
| cj5array[0]=IKcos(j5array[0]); |
| if( j5array[0] > IKPI ) |
| { |
| j5array[0]-=IK2PI; |
| } |
| else if( j5array[0] < -IKPI ) |
| { j5array[0]+=IK2PI; |
| } |
| j5valid[0] = true; |
| for(int ij5 = 0; ij5 < 1; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < 1; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| { |
| IkReal evalcond[10]; |
| IkReal x535=IKcos(j5); |
| IkReal x536=IKsin(j5); |
| IkReal x537=((1.0)*gconst8); |
| IkReal x538=((1.0000000008)*gconst8); |
| IkReal x539=(new_r00*x535); |
| IkReal x540=(gconst8*x535); |
| IkReal x541=(new_r01*x535); |
| evalcond[0]=(new_r00*x536); |
| evalcond[1]=x541; |
| evalcond[2]=((-1.0)*x540); |
| evalcond[3]=(new_r01+(((-1.0)*x536*x537))); |
| evalcond[4]=(((new_r01*x536))+(((-1.0)*x537))); |
| evalcond[5]=(x536*x538); |
| evalcond[6]=((1.0000000008)*x541); |
| evalcond[7]=((((-1.0)*x535*x538))+new_r00); |
| evalcond[8]=((((-1.0)*x538))+x539); |
| evalcond[9]=((((1.0000000008)*x539))+(((-1.0)*x537))); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[2]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[3]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[4]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[5]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[6]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[7]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[8]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[9]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| |
| } |
| } while(0); |
| if( bgotonextstatement ) |
| { |
| bool bgotonextstatement = true; |
| do |
| { |
| if( 1 ) |
| { |
| bgotonextstatement=false; |
| continue; // branch miss [j5] |
| |
| } |
| } while(0); |
| if( bgotonextstatement ) |
| { |
| } |
| } |
| } |
| } |
| } |
| |
| } else |
| { |
| { |
| IkReal j5array[1], cj5array[1], sj5array[1]; |
| bool j5valid[1]={false}; |
| _nj5 = 1; |
| CheckValue<IkReal> x546=IKPowWithIntegerCheck(new_r00,-1); |
| if(!x546.valid){ |
| continue; |
| } |
| IkReal x542=x546.value; |
| IkReal x543=gconst7*gconst7; |
| IkReal x544=((25000.0)*new_r10); |
| CheckValue<IkReal> x547=IKPowWithIntegerCheck(((((25000.00002)*gconst8*new_r00))+((gconst7*x544))),-1); |
| if(!x547.valid){ |
| continue; |
| } |
| IkReal x545=x547.value; |
| CheckValue<IkReal> x548=IKPowWithIntegerCheck(x542,-2); |
| if(!x548.valid){ |
| continue; |
| } |
| if( IKabs((((x542*x543*x544*x545))+(((-1.0)*gconst7*x542))+(((-1.0)*new_r00*x544*x545)))) < IKFAST_ATAN2_MAGTHRESH && IKabs((x545*(((((25000.0)*(x548.value)))+(((-25000.0)*x543)))))) < IKFAST_ATAN2_MAGTHRESH && IKabs(IKsqr((((x542*x543*x544*x545))+(((-1.0)*gconst7*x542))+(((-1.0)*new_r00*x544*x545))))+IKsqr((x545*(((((25000.0)*(x548.value)))+(((-25000.0)*x543))))))-1) <= IKFAST_SINCOS_THRESH ) |
| continue; |
| j5array[0]=IKatan2((((x542*x543*x544*x545))+(((-1.0)*gconst7*x542))+(((-1.0)*new_r00*x544*x545))), (x545*(((((25000.0)*(x548.value)))+(((-25000.0)*x543)))))); |
| sj5array[0]=IKsin(j5array[0]); |
| cj5array[0]=IKcos(j5array[0]); |
| if( j5array[0] > IKPI ) |
| { |
| j5array[0]-=IK2PI; |
| } |
| else if( j5array[0] < -IKPI ) |
| { j5array[0]+=IK2PI; |
| } |
| j5valid[0] = true; |
| for(int ij5 = 0; ij5 < 1; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < 1; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| { |
| IkReal evalcond[10]; |
| IkReal x549=IKcos(j5); |
| IkReal x550=IKsin(j5); |
| IkReal x551=((1.0)*gconst8); |
| IkReal x552=((1.0000000008)*gconst7); |
| IkReal x553=((1.0000000008)*gconst8); |
| IkReal x554=(new_r11*x550); |
| IkReal x555=(new_r01*x549); |
| IkReal x556=(new_r00*x549); |
| IkReal x557=(new_r10*x550); |
| evalcond[0]=(gconst7+((new_r10*x549))+((new_r00*x550))); |
| evalcond[1]=(((new_r11*x549))+(((-1.0)*x551))+((new_r01*x550))); |
| evalcond[2]=(((gconst7*x550))+(((-1.0)*x549*x553))+new_r00); |
| evalcond[3]=(((gconst7*x549))+((x550*x553))+new_r10); |
| evalcond[4]=((((-1.0)*x550*x551))+(((-1.0)*x549*x552))+new_r01); |
| evalcond[5]=(((x550*x552))+(((-1.0)*x549*x551))+new_r11); |
| evalcond[6]=((((-1.0)*x557))+(((-1.0)*x553))+x556); |
| evalcond[7]=((((-1.0)*x554))+(((-1.0)*x552))+x555); |
| evalcond[8]=((((-1.0000000008)*x557))+(((-1.0)*x551))+(((1.0000000008)*x556))); |
| evalcond[9]=((((-1.0)*gconst7))+(((-1.0000000008)*x554))+(((1.0000000008)*x555))); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[2]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[3]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[4]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[5]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[6]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[7]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[8]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[9]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| |
| } |
| |
| } |
| |
| } else |
| { |
| { |
| IkReal j5array[1], cj5array[1], sj5array[1]; |
| bool j5valid[1]={false}; |
| _nj5 = 1; |
| IkReal x558=gconst7*gconst7; |
| IkReal x559=new_r10*new_r10; |
| IkReal x560=((625000000.0)*new_r00); |
| IkReal x561=((625000000.5)*gconst8); |
| IkReal x562=((25000.00002)*gconst8); |
| IkReal x563=((25000.0)*new_r00); |
| CheckValue<IkReal> x564=IKPowWithIntegerCheck(((((-625000001.0)*x559*(gconst8*gconst8)))+((new_r00*x558*x560))),-1); |
| if(!x564.valid){ |
| continue; |
| } |
| CheckValue<IkReal> x565=IKPowWithIntegerCheck((((gconst7*x563))+(((-1.0)*new_r10*x562))),-1); |
| if(!x565.valid){ |
| continue; |
| } |
| if( IKabs(((x564.value)*((((x561*(new_r10*new_r10*new_r10)))+(((-1.0)*new_r10*x558*x561))+((gconst7*x559*x560))+(((-1.0)*x560*(gconst7*gconst7*gconst7))))))) < IKFAST_ATAN2_MAGTHRESH && IKabs(((x565.value)*((((gconst7*x562))+(((-1.0)*new_r10*x563)))))) < IKFAST_ATAN2_MAGTHRESH && IKabs(IKsqr(((x564.value)*((((x561*(new_r10*new_r10*new_r10)))+(((-1.0)*new_r10*x558*x561))+((gconst7*x559*x560))+(((-1.0)*x560*(gconst7*gconst7*gconst7)))))))+IKsqr(((x565.value)*((((gconst7*x562))+(((-1.0)*new_r10*x563))))))-1) <= IKFAST_SINCOS_THRESH ) |
| continue; |
| j5array[0]=IKatan2(((x564.value)*((((x561*(new_r10*new_r10*new_r10)))+(((-1.0)*new_r10*x558*x561))+((gconst7*x559*x560))+(((-1.0)*x560*(gconst7*gconst7*gconst7)))))), ((x565.value)*((((gconst7*x562))+(((-1.0)*new_r10*x563)))))); |
| sj5array[0]=IKsin(j5array[0]); |
| cj5array[0]=IKcos(j5array[0]); |
| if( j5array[0] > IKPI ) |
| { |
| j5array[0]-=IK2PI; |
| } |
| else if( j5array[0] < -IKPI ) |
| { j5array[0]+=IK2PI; |
| } |
| j5valid[0] = true; |
| for(int ij5 = 0; ij5 < 1; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < 1; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| { |
| IkReal evalcond[10]; |
| IkReal x566=IKcos(j5); |
| IkReal x567=IKsin(j5); |
| IkReal x568=((1.0)*gconst8); |
| IkReal x569=((1.0000000008)*gconst7); |
| IkReal x570=((1.0000000008)*gconst8); |
| IkReal x571=(new_r11*x567); |
| IkReal x572=(new_r01*x566); |
| IkReal x573=(new_r00*x566); |
| IkReal x574=(new_r10*x567); |
| evalcond[0]=(gconst7+((new_r00*x567))+((new_r10*x566))); |
| evalcond[1]=(((new_r01*x567))+((new_r11*x566))+(((-1.0)*x568))); |
| evalcond[2]=((((-1.0)*x566*x570))+new_r00+((gconst7*x567))); |
| evalcond[3]=(((x567*x570))+new_r10+((gconst7*x566))); |
| evalcond[4]=((((-1.0)*x566*x569))+(((-1.0)*x567*x568))+new_r01); |
| evalcond[5]=((((-1.0)*x566*x568))+((x567*x569))+new_r11); |
| evalcond[6]=((((-1.0)*x574))+(((-1.0)*x570))+x573); |
| evalcond[7]=((((-1.0)*x571))+x572+(((-1.0)*x569))); |
| evalcond[8]=((((-1.0000000008)*x574))+(((1.0000000008)*x573))+(((-1.0)*x568))); |
| evalcond[9]=((((-1.0000000008)*x571))+(((1.0000000008)*x572))+(((-1.0)*gconst7))); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[2]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[3]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[4]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[5]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[6]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[7]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[8]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[9]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| |
| } |
| |
| } |
| |
| } else |
| { |
| { |
| IkReal j5array[1], cj5array[1], sj5array[1]; |
| bool j5valid[1]={false}; |
| _nj5 = 1; |
| IkReal x575=((1.0)*new_r00); |
| CheckValue<IkReal> x576 = IKatan2WithCheck(IkReal((((gconst8*new_r10))+((gconst7*new_r11)))),IkReal(((((-1.0)*gconst7*new_r01))+(((-1.0)*gconst8*x575)))),IKFAST_ATAN2_MAGTHRESH); |
| if(!x576.valid){ |
| continue; |
| } |
| CheckValue<IkReal> x577=IKPowWithIntegerCheck(IKsign(((((-1.0)*new_r11*x575))+((new_r01*new_r10)))),-1); |
| if(!x577.valid){ |
| continue; |
| } |
| j5array[0]=((-1.5707963267949)+(x576.value)+(((1.5707963267949)*(x577.value)))); |
| sj5array[0]=IKsin(j5array[0]); |
| cj5array[0]=IKcos(j5array[0]); |
| if( j5array[0] > IKPI ) |
| { |
| j5array[0]-=IK2PI; |
| } |
| else if( j5array[0] < -IKPI ) |
| { j5array[0]+=IK2PI; |
| } |
| j5valid[0] = true; |
| for(int ij5 = 0; ij5 < 1; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < 1; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| { |
| IkReal evalcond[10]; |
| IkReal x578=IKcos(j5); |
| IkReal x579=IKsin(j5); |
| IkReal x580=((1.0)*gconst8); |
| IkReal x581=((1.0000000008)*gconst7); |
| IkReal x582=((1.0000000008)*gconst8); |
| IkReal x583=(new_r11*x579); |
| IkReal x584=(new_r01*x578); |
| IkReal x585=(new_r00*x578); |
| IkReal x586=(new_r10*x579); |
| evalcond[0]=(((new_r00*x579))+((new_r10*x578))+gconst7); |
| evalcond[1]=(((new_r11*x578))+((new_r01*x579))+(((-1.0)*x580))); |
| evalcond[2]=((((-1.0)*x578*x582))+((gconst7*x579))+new_r00); |
| evalcond[3]=(((x579*x582))+((gconst7*x578))+new_r10); |
| evalcond[4]=((((-1.0)*x578*x581))+(((-1.0)*x579*x580))+new_r01); |
| evalcond[5]=(((x579*x581))+(((-1.0)*x578*x580))+new_r11); |
| evalcond[6]=((((-1.0)*x586))+x585+(((-1.0)*x582))); |
| evalcond[7]=((((-1.0)*x583))+x584+(((-1.0)*x581))); |
| evalcond[8]=((((1.0000000008)*x585))+(((-1.0)*x580))+(((-1.0000000008)*x586))); |
| evalcond[9]=((((1.0000000008)*x584))+(((-1.0)*gconst7))+(((-1.0000000008)*x583))); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[2]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[3]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[4]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[5]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[6]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[7]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[8]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[9]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| |
| } |
| |
| } |
| |
| } |
| } while(0); |
| if( bgotonextstatement ) |
| { |
| bool bgotonextstatement = true; |
| do |
| { |
| IkReal x588 = ((((1.0000000016)*(new_r00*new_r00)))+(new_r10*new_r10)); |
| if(IKabs(x588)==0){ |
| continue; |
| } |
| IkReal x587=pow(x588,-0.5); |
| CheckValue<IkReal> x589 = IKatan2WithCheck(IkReal(new_r10),IkReal(((-1.0000000008)*new_r00)),IKFAST_ATAN2_MAGTHRESH); |
| if(!x589.valid){ |
| continue; |
| } |
| IkReal gconst9=((3.14159265358979)+(((-1.0)*(x589.value)))); |
| IkReal gconst10=((1.0)*new_r10*x587); |
| IkReal gconst11=((1.0000000008)*new_r00*x587); |
| CheckValue<IkReal> x590 = IKatan2WithCheck(IkReal(new_r10),IkReal(((-1.0000000008)*new_r00)),IKFAST_ATAN2_MAGTHRESH); |
| if(!x590.valid){ |
| continue; |
| } |
| evalcond[0]=((-3.14159265358979)+(IKfmod(((3.14159265358979)+(IKabs(((-3.14159265358979)+(x590.value)+j3)))), 6.28318530717959))); |
| if( IKabs(evalcond[0]) < 0.0000050000000000 ) |
| { |
| bgotonextstatement=false; |
| { |
| IkReal j5eval[2]; |
| IkReal x591=x587; |
| sj4=4.0e-5; |
| cj4=1.0; |
| j4=4.0e-5; |
| sj3=gconst10; |
| cj3=gconst11; |
| CheckValue<IkReal> x592 = IKatan2WithCheck(IkReal(new_r10),IkReal(((-1.0)*new_r00)),IKFAST_ATAN2_MAGTHRESH); |
| if(!x592.valid){ |
| continue; |
| } |
| j3=((3.14159265)+(((-1.0)*(x592.value)))); |
| CheckValue<IkReal> x593 = IKatan2WithCheck(IkReal(new_r10),IkReal(((-1.0000000008)*new_r00)),IKFAST_ATAN2_MAGTHRESH); |
| if(!x593.valid){ |
| continue; |
| } |
| IkReal gconst9=((3.14159265358979)+(((-1.0)*(x593.value)))); |
| IkReal gconst10=((1.0)*new_r10*x591); |
| IkReal gconst11=((1.0000000008)*new_r00*x591); |
| IkReal x594=(((new_r01*new_r10))+(((-1.0)*new_r00*new_r11))); |
| j5eval[0]=x594; |
| j5eval[1]=IKsign(x594); |
| if( IKabs(j5eval[0]) < 0.0000010000000000 || IKabs(j5eval[1]) < 0.0000010000000000 ) |
| { |
| { |
| IkReal j5eval[2]; |
| IkReal x595=x587; |
| sj4=4.0e-5; |
| cj4=1.0; |
| j4=4.0e-5; |
| sj3=gconst10; |
| cj3=gconst11; |
| CheckValue<IkReal> x596 = IKatan2WithCheck(IkReal(new_r10),IkReal(((-1.0)*new_r00)),IKFAST_ATAN2_MAGTHRESH); |
| if(!x596.valid){ |
| continue; |
| } |
| j3=((3.14159265)+(((-1.0)*(x596.value)))); |
| CheckValue<IkReal> x597 = IKatan2WithCheck(IkReal(new_r10),IkReal(((-1.0000000008)*new_r00)),IKFAST_ATAN2_MAGTHRESH); |
| if(!x597.valid){ |
| continue; |
| } |
| IkReal gconst9=((3.14159265358979)+(((-1.0)*(x597.value)))); |
| IkReal gconst10=((1.0)*new_r10*x595); |
| IkReal gconst11=((1.0000000008)*new_r00*x595); |
| IkReal x598=new_r00*new_r00; |
| IkReal x599=new_r10*new_r10; |
| IkReal x600=((((1.0000000016)*x598))+x599); |
| CheckValue<IkReal> x601=IKPowWithIntegerCheck(x600,-1); |
| if(!x601.valid){ |
| continue; |
| } |
| j5eval[0]=((-3.20000004272458e-9)*x598*x599*(x601.value)); |
| IkReal x602 = x600; |
| if(IKabs(x602)==0){ |
| continue; |
| } |
| j5eval[1]=((-1.60000013238459e-9)*new_r00*new_r10*(pow(x602,-0.5))); |
| if( IKabs(j5eval[0]) < 0.0000010000000000 || IKabs(j5eval[1]) < 0.0000010000000000 ) |
| { |
| { |
| IkReal j5eval[1]; |
| IkReal x603=x587; |
| sj4=4.0e-5; |
| cj4=1.0; |
| j4=4.0e-5; |
| sj3=gconst10; |
| cj3=gconst11; |
| CheckValue<IkReal> x604 = IKatan2WithCheck(IkReal(new_r10),IkReal(((-1.0)*new_r00)),IKFAST_ATAN2_MAGTHRESH); |
| if(!x604.valid){ |
| continue; |
| } |
| j3=((3.14159265)+(((-1.0)*(x604.value)))); |
| CheckValue<IkReal> x605 = IKatan2WithCheck(IkReal(new_r10),IkReal(((-1.0000000008)*new_r00)),IKFAST_ATAN2_MAGTHRESH); |
| if(!x605.valid){ |
| continue; |
| } |
| IkReal gconst9=((3.14159265358979)+(((-1.0)*(x605.value)))); |
| IkReal gconst10=((1.0)*new_r10*x603); |
| IkReal gconst11=((1.0000000008)*new_r00*x603); |
| j5eval[0]=new_r00; |
| if( IKabs(j5eval[0]) < 0.0000010000000000 ) |
| { |
| { |
| IkReal evalcond[1]; |
| bool bgotonextstatement = true; |
| do |
| { |
| evalcond[0]=IKabs(new_r00); |
| if( IKabs(evalcond[0]) < 0.0000050000000000 ) |
| { |
| bgotonextstatement=false; |
| { |
| IkReal j5eval[1]; |
| CheckValue<IkReal> x607 = IKatan2WithCheck(IkReal(new_r10),IkReal(0),IKFAST_ATAN2_MAGTHRESH); |
| if(!x607.valid){ |
| continue; |
| } |
| IkReal x606=((1.0)*(x607.value)); |
| sj4=4.0e-5; |
| cj4=1.0; |
| j4=4.0e-5; |
| sj3=gconst10; |
| cj3=gconst11; |
| j3=((3.14159265)+(((-1.0)*x606))); |
| new_r00=0; |
| IkReal gconst9=((3.14159265358979)+(((-1.0)*x606))); |
| IkReal x608 = new_r10*new_r10; |
| if(IKabs(x608)==0){ |
| continue; |
| } |
| IkReal gconst10=((1.0)*new_r10*(pow(x608,-0.5))); |
| IkReal gconst11=0; |
| j5eval[0]=new_r10; |
| if( IKabs(j5eval[0]) < 0.0000010000000000 ) |
| { |
| { |
| IkReal j5array[1], cj5array[1], sj5array[1]; |
| bool j5valid[1]={false}; |
| _nj5 = 1; |
| CheckValue<IkReal> x610=IKPowWithIntegerCheck(gconst10,-1); |
| if(!x610.valid){ |
| continue; |
| } |
| IkReal x609=x610.value; |
| if( IKabs(((-0.9999999992)*new_r11*x609)) < IKFAST_ATAN2_MAGTHRESH && IKabs(((-1.0)*new_r10*x609)) < IKFAST_ATAN2_MAGTHRESH && IKabs(IKsqr(((-0.9999999992)*new_r11*x609))+IKsqr(((-1.0)*new_r10*x609))-1) <= IKFAST_SINCOS_THRESH ) |
| continue; |
| j5array[0]=IKatan2(((-0.9999999992)*new_r11*x609), ((-1.0)*new_r10*x609)); |
| sj5array[0]=IKsin(j5array[0]); |
| cj5array[0]=IKcos(j5array[0]); |
| if( j5array[0] > IKPI ) |
| { |
| j5array[0]-=IK2PI; |
| } |
| else if( j5array[0] < -IKPI ) |
| { j5array[0]+=IK2PI; |
| } |
| j5valid[0] = true; |
| for(int ij5 = 0; ij5 < 1; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < 1; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| { |
| IkReal evalcond[10]; |
| IkReal x611=IKsin(j5); |
| IkReal x612=IKcos(j5); |
| IkReal x613=(gconst10*x612); |
| IkReal x614=(gconst10*x611); |
| IkReal x615=(new_r01*x612); |
| IkReal x616=(new_r11*x611); |
| IkReal x617=(new_r10*x611); |
| evalcond[0]=x614; |
| evalcond[1]=((-1.0)*x617); |
| evalcond[2]=(gconst10+((new_r10*x612))); |
| evalcond[3]=(x613+new_r10); |
| evalcond[4]=((-1.0000000008)*x617); |
| evalcond[5]=(((new_r11*x612))+((new_r01*x611))); |
| evalcond[6]=((((-1.0000000008)*x613))+new_r01); |
| evalcond[7]=(new_r11+(((1.0000000008)*x614))); |
| evalcond[8]=((((-1.0000000008)*gconst10))+(((-1.0)*x616))+x615); |
| evalcond[9]=((((-1.0000000008)*x616))+(((-1.0)*gconst10))+(((1.0000000008)*x615))); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[2]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[3]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[4]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[5]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[6]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[7]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[8]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[9]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| |
| } else |
| { |
| { |
| IkReal j5array[1], cj5array[1], sj5array[1]; |
| bool j5valid[1]={false}; |
| _nj5 = 1; |
| CheckValue<IkReal> x618=IKPowWithIntegerCheck(gconst10,-1); |
| if(!x618.valid){ |
| continue; |
| } |
| CheckValue<IkReal> x619=IKPowWithIntegerCheck(new_r10,-1); |
| if(!x619.valid){ |
| continue; |
| } |
| if( IKabs(((-0.9999999992)*new_r11*(x618.value))) < IKFAST_ATAN2_MAGTHRESH && IKabs(((-1.0)*gconst10*(x619.value))) < IKFAST_ATAN2_MAGTHRESH && IKabs(IKsqr(((-0.9999999992)*new_r11*(x618.value)))+IKsqr(((-1.0)*gconst10*(x619.value)))-1) <= IKFAST_SINCOS_THRESH ) |
| continue; |
| j5array[0]=IKatan2(((-0.9999999992)*new_r11*(x618.value)), ((-1.0)*gconst10*(x619.value))); |
| sj5array[0]=IKsin(j5array[0]); |
| cj5array[0]=IKcos(j5array[0]); |
| if( j5array[0] > IKPI ) |
| { |
| j5array[0]-=IK2PI; |
| } |
| else if( j5array[0] < -IKPI ) |
| { j5array[0]+=IK2PI; |
| } |
| j5valid[0] = true; |
| for(int ij5 = 0; ij5 < 1; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < 1; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| { |
| IkReal evalcond[10]; |
| IkReal x620=IKsin(j5); |
| IkReal x621=IKcos(j5); |
| IkReal x622=(gconst10*x621); |
| IkReal x623=(gconst10*x620); |
| IkReal x624=(new_r01*x621); |
| IkReal x625=(new_r11*x620); |
| IkReal x626=(new_r10*x620); |
| evalcond[0]=x623; |
| evalcond[1]=((-1.0)*x626); |
| evalcond[2]=(gconst10+((new_r10*x621))); |
| evalcond[3]=(x622+new_r10); |
| evalcond[4]=((-1.0000000008)*x626); |
| evalcond[5]=(((new_r01*x620))+((new_r11*x621))); |
| evalcond[6]=((((-1.0000000008)*x622))+new_r01); |
| evalcond[7]=((((1.0000000008)*x623))+new_r11); |
| evalcond[8]=((((-1.0000000008)*gconst10))+x624+(((-1.0)*x625))); |
| evalcond[9]=((((1.0000000008)*x624))+(((-1.0000000008)*x625))+(((-1.0)*gconst10))); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[2]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[3]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[4]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[5]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[6]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[7]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[8]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[9]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| |
| } |
| |
| } |
| |
| } |
| } while(0); |
| if( bgotonextstatement ) |
| { |
| bool bgotonextstatement = true; |
| do |
| { |
| evalcond[0]=((IKabs(new_r11))+(IKabs(new_r01))); |
| if( IKabs(evalcond[0]) < 0.0000050000000000 ) |
| { |
| bgotonextstatement=false; |
| { |
| IkReal j5eval[3]; |
| IkReal x628 = ((1.0000000016)+(((-1.6e-9)*(new_r10*new_r10)))); |
| if(IKabs(x628)==0){ |
| continue; |
| } |
| IkReal x627=pow(x628,-0.5); |
| sj4=4.0e-5; |
| cj4=1.0; |
| j4=4.0e-5; |
| sj3=gconst10; |
| cj3=gconst11; |
| CheckValue<IkReal> x629 = IKatan2WithCheck(IkReal(new_r10),IkReal(((-1.0)*new_r00)),IKFAST_ATAN2_MAGTHRESH); |
| if(!x629.valid){ |
| continue; |
| } |
| j3=((3.14159265)+(((-1.0)*(x629.value)))); |
| new_r11=0; |
| new_r01=0; |
| new_r22=0; |
| new_r20=0; |
| CheckValue<IkReal> x630 = IKatan2WithCheck(IkReal(new_r10),IkReal(((-1.0000000008)*new_r00)),IKFAST_ATAN2_MAGTHRESH); |
| if(!x630.valid){ |
| continue; |
| } |
| IkReal gconst9=((3.14159265358979)+(((-1.0)*(x630.value)))); |
| IkReal gconst10=((1.0)*new_r10*x627); |
| IkReal gconst11=((1.0000000008)*new_r00*x627); |
| IkReal x631=new_r10*new_r10; |
| CheckValue<IkReal> x635=IKPowWithIntegerCheck(((-3.90625000625e+17)+(((625000000.0)*x631))),-1); |
| if(!x635.valid){ |
| continue; |
| } |
| IkReal x632=x635.value; |
| if((((625000001.0)+(((-1.0)*x631)))) < -0.00001) |
| continue; |
| IkReal x633=IKsqrt(((625000001.0)+(((-1.0)*x631)))); |
| IkReal x634=(x632*x633); |
| j5eval[0]=-1.0; |
| j5eval[1]=-1.0; |
| IkReal x636 = ((1.0000000016)+(((-1.6e-9)*x631))); |
| if(IKabs(x636)==0){ |
| continue; |
| } |
| j5eval[2]=((IKabs(((((-7.81250000625e+17)*x631*x634))+(((3.90625000625e+17)*x634)))))+(IKabs(((50000.00004)*new_r00*new_r10*(pow(x636,-0.5)))))); |
| if( IKabs(j5eval[0]) < 0.0000010000000000 || IKabs(j5eval[1]) < 0.0000010000000000 || IKabs(j5eval[2]) < 0.0000010000000000 ) |
| { |
| { |
| IkReal j5eval[1]; |
| IkReal x638 = ((1.0000000016)+(((-1.6e-9)*(new_r10*new_r10)))); |
| if(IKabs(x638)==0){ |
| continue; |
| } |
| IkReal x637=pow(x638,-0.5); |
| sj4=4.0e-5; |
| cj4=1.0; |
| j4=4.0e-5; |
| sj3=gconst10; |
| cj3=gconst11; |
| CheckValue<IkReal> x639 = IKatan2WithCheck(IkReal(new_r10),IkReal(((-1.0)*new_r00)),IKFAST_ATAN2_MAGTHRESH); |
| if(!x639.valid){ |
| continue; |
| } |
| j3=((3.14159265)+(((-1.0)*(x639.value)))); |
| new_r11=0; |
| new_r01=0; |
| new_r22=0; |
| new_r20=0; |
| CheckValue<IkReal> x640 = IKatan2WithCheck(IkReal(new_r10),IkReal(((-1.0000000008)*new_r00)),IKFAST_ATAN2_MAGTHRESH); |
| if(!x640.valid){ |
| continue; |
| } |
| IkReal gconst9=((3.14159265358979)+(((-1.0)*(x640.value)))); |
| IkReal gconst10=((1.0)*new_r10*x637); |
| IkReal gconst11=((1.0000000008)*new_r00*x637); |
| IkReal x641=new_r10*new_r10; |
| CheckValue<IkReal> x643=IKPowWithIntegerCheck(((1.0000000016)+(((-1.6e-9)*x641))),-1); |
| if(!x643.valid){ |
| continue; |
| } |
| IkReal x642=x643.value; |
| IkReal x644=((1.0)+(((-1.0)*x641))); |
| j5eval[0]=IKsign(((((625000001.0)*x642*(x641*x641)))+(((-625000001.0)*x642*(x644*x644))))); |
| if( IKabs(j5eval[0]) < 0.0000010000000000 ) |
| { |
| { |
| IkReal j5eval[2]; |
| IkReal x646 = ((1.0000000016)+(((-1.6e-9)*(new_r10*new_r10)))); |
| if(IKabs(x646)==0){ |
| continue; |
| } |
| IkReal x645=pow(x646,-0.5); |
| sj4=4.0e-5; |
| cj4=1.0; |
| j4=4.0e-5; |
| sj3=gconst10; |
| cj3=gconst11; |
| CheckValue<IkReal> x647 = IKatan2WithCheck(IkReal(new_r10),IkReal(((-1.0)*new_r00)),IKFAST_ATAN2_MAGTHRESH); |
| if(!x647.valid){ |
| continue; |
| } |
| j3=((3.14159265)+(((-1.0)*(x647.value)))); |
| new_r11=0; |
| new_r01=0; |
| new_r22=0; |
| new_r20=0; |
| CheckValue<IkReal> x648 = IKatan2WithCheck(IkReal(new_r10),IkReal(((-1.0000000008)*new_r00)),IKFAST_ATAN2_MAGTHRESH); |
| if(!x648.valid){ |
| continue; |
| } |
| IkReal gconst9=((3.14159265358979)+(((-1.0)*(x648.value)))); |
| IkReal gconst10=((1.0)*new_r10*x645); |
| IkReal gconst11=((1.0000000008)*new_r00*x645); |
| IkReal x649=new_r10*new_r10; |
| IkReal x650=((1.0000000016)+(((-1.6e-9)*x649))); |
| CheckValue<IkReal> x651=IKPowWithIntegerCheck(x650,-1); |
| if(!x651.valid){ |
| continue; |
| } |
| j5eval[0]=((-3.20000004272458e-9)*x649*(x651.value)*(((1.0)+(((-1.0)*x649))))); |
| IkReal x652 = x650; |
| if(IKabs(x652)==0){ |
| continue; |
| } |
| j5eval[1]=((-1.60000013238459e-9)*new_r00*new_r10*(pow(x652,-0.5))); |
| if( IKabs(j5eval[0]) < 0.0000010000000000 || IKabs(j5eval[1]) < 0.0000010000000000 ) |
| { |
| continue; // 3 cases reached |
| |
| } else |
| { |
| { |
| IkReal j5array[1], cj5array[1], sj5array[1]; |
| bool j5valid[1]={false}; |
| _nj5 = 1; |
| IkReal x653=gconst10*gconst10; |
| IkReal x654=new_r10*new_r10; |
| IkReal x655=((25000.00002)*gconst11); |
| IkReal x656=(gconst10*new_r00); |
| IkReal x657=((625000000.5)*gconst11); |
| CheckValue<IkReal> x658=IKPowWithIntegerCheck(((((625000000.0)*x653*(new_r00*new_r00)))+(((-625000001.0)*x654*(gconst11*gconst11)))),-1); |
| if(!x658.valid){ |
| continue; |
| } |
| CheckValue<IkReal> x659=IKPowWithIntegerCheck(((((-1.0)*new_r10*x655))+(((25000.0)*x656))),-1); |
| if(!x659.valid){ |
| continue; |
| } |
| if( IKabs(((x658.value)*((((x657*(new_r10*new_r10*new_r10)))+(((625000000.0)*x654*x656))+(((-625000000.0)*x656*(gconst10*gconst10)))+(((-1.0)*new_r10*x653*x657)))))) < IKFAST_ATAN2_MAGTHRESH && IKabs(((x659.value)*(((((-25000.0)*new_r00*new_r10))+((gconst10*x655)))))) < IKFAST_ATAN2_MAGTHRESH && IKabs(IKsqr(((x658.value)*((((x657*(new_r10*new_r10*new_r10)))+(((625000000.0)*x654*x656))+(((-625000000.0)*x656*(gconst10*gconst10)))+(((-1.0)*new_r10*x653*x657))))))+IKsqr(((x659.value)*(((((-25000.0)*new_r00*new_r10))+((gconst10*x655))))))-1) <= IKFAST_SINCOS_THRESH ) |
| continue; |
| j5array[0]=IKatan2(((x658.value)*((((x657*(new_r10*new_r10*new_r10)))+(((625000000.0)*x654*x656))+(((-625000000.0)*x656*(gconst10*gconst10)))+(((-1.0)*new_r10*x653*x657))))), ((x659.value)*(((((-25000.0)*new_r00*new_r10))+((gconst10*x655)))))); |
| sj5array[0]=IKsin(j5array[0]); |
| cj5array[0]=IKcos(j5array[0]); |
| if( j5array[0] > IKPI ) |
| { |
| j5array[0]-=IK2PI; |
| } |
| else if( j5array[0] < -IKPI ) |
| { j5array[0]+=IK2PI; |
| } |
| j5valid[0] = true; |
| for(int ij5 = 0; ij5 < 1; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < 1; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| { |
| IkReal evalcond[7]; |
| IkReal x660=IKsin(j5); |
| IkReal x661=IKcos(j5); |
| IkReal x662=(gconst11*x661); |
| IkReal x663=((1.0000000008)*x660); |
| IkReal x664=(gconst10*x661); |
| IkReal x665=((1.0)*x660); |
| IkReal x666=(new_r00*x661); |
| evalcond[0]=(gconst10+((new_r10*x661))+((new_r00*x660))); |
| evalcond[1]=((((-1.0000000008)*x662))+new_r00+((gconst10*x660))); |
| evalcond[2]=(x664+new_r10+((gconst11*x663))); |
| evalcond[3]=((((-1.0000000008)*x664))+(((-1.0)*gconst11*x665))); |
| evalcond[4]=((((-1.0)*x662))+((gconst10*x663))); |
| evalcond[5]=((((-1.0)*new_r10*x665))+(((-1.0000000008)*gconst11))+x666); |
| evalcond[6]=((((1.0000000008)*x666))+(((-1.0)*new_r10*x663))+(((-1.0)*gconst11))); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[2]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[3]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[4]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[5]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[6]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| |
| } |
| |
| } |
| |
| } else |
| { |
| { |
| IkReal j5array[1], cj5array[1], sj5array[1]; |
| bool j5valid[1]={false}; |
| _nj5 = 1; |
| IkReal x667=gconst10*gconst10; |
| IkReal x668=gconst11*gconst11; |
| IkReal x669=((625000000.0)*x668); |
| IkReal x670=((625000000.5)*gconst11*x667); |
| CheckValue<IkReal> x671 = IKatan2WithCheck(IkReal((((gconst10*new_r00*x669))+(((-1.0)*new_r10*x670)))),IkReal((((new_r00*x670))+(((-625000001.0)*new_r10*(gconst10*gconst10*gconst10))))),IKFAST_ATAN2_MAGTHRESH); |
| if(!x671.valid){ |
| continue; |
| } |
| CheckValue<IkReal> x672=IKPowWithIntegerCheck(IKsign(((((625000001.0)*x667*(new_r10*new_r10)))+(((-1.0)*x669*(new_r00*new_r00))))),-1); |
| if(!x672.valid){ |
| continue; |
| } |
| j5array[0]=((-1.5707963267949)+(x671.value)+(((1.5707963267949)*(x672.value)))); |
| sj5array[0]=IKsin(j5array[0]); |
| cj5array[0]=IKcos(j5array[0]); |
| if( j5array[0] > IKPI ) |
| { |
| j5array[0]-=IK2PI; |
| } |
| else if( j5array[0] < -IKPI ) |
| { j5array[0]+=IK2PI; |
| } |
| j5valid[0] = true; |
| for(int ij5 = 0; ij5 < 1; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < 1; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| { |
| IkReal evalcond[7]; |
| IkReal x673=IKsin(j5); |
| IkReal x674=IKcos(j5); |
| IkReal x675=(gconst11*x674); |
| IkReal x676=((1.0000000008)*x673); |
| IkReal x677=(gconst10*x674); |
| IkReal x678=((1.0)*x673); |
| IkReal x679=(new_r00*x674); |
| evalcond[0]=(((new_r00*x673))+((new_r10*x674))+gconst10); |
| evalcond[1]=(((gconst10*x673))+new_r00+(((-1.0000000008)*x675))); |
| evalcond[2]=(((gconst11*x676))+x677+new_r10); |
| evalcond[3]=((((-1.0)*gconst11*x678))+(((-1.0000000008)*x677))); |
| evalcond[4]=(((gconst10*x676))+(((-1.0)*x675))); |
| evalcond[5]=((((-1.0000000008)*gconst11))+x679+(((-1.0)*new_r10*x678))); |
| evalcond[6]=((((1.0000000008)*x679))+(((-1.0)*gconst11))+(((-1.0)*new_r10*x676))); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[2]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[3]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[4]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[5]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[6]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| |
| } |
| |
| } |
| |
| } else |
| { |
| { |
| IkReal j5array[1], cj5array[1], sj5array[1]; |
| bool j5valid[1]={false}; |
| _nj5 = 1; |
| IkReal x680=((25000.00002)*gconst11); |
| IkReal x681=((25000.0)*gconst10); |
| CheckValue<IkReal> x682=IKPowWithIntegerCheck(IKsign(((((-25000.0)*(new_r10*new_r10)))+(((-25000.0)*(new_r00*new_r00))))),-1); |
| if(!x682.valid){ |
| continue; |
| } |
| CheckValue<IkReal> x683 = IKatan2WithCheck(IkReal((((new_r00*x681))+((new_r10*x680)))),IkReal((((new_r10*x681))+(((-1.0)*new_r00*x680)))),IKFAST_ATAN2_MAGTHRESH); |
| if(!x683.valid){ |
| continue; |
| } |
| j5array[0]=((-1.5707963267949)+(((1.5707963267949)*(x682.value)))+(x683.value)); |
| sj5array[0]=IKsin(j5array[0]); |
| cj5array[0]=IKcos(j5array[0]); |
| if( j5array[0] > IKPI ) |
| { |
| j5array[0]-=IK2PI; |
| } |
| else if( j5array[0] < -IKPI ) |
| { j5array[0]+=IK2PI; |
| } |
| j5valid[0] = true; |
| for(int ij5 = 0; ij5 < 1; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < 1; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| { |
| IkReal evalcond[7]; |
| IkReal x684=IKsin(j5); |
| IkReal x685=IKcos(j5); |
| IkReal x686=(gconst11*x685); |
| IkReal x687=((1.0000000008)*x684); |
| IkReal x688=(gconst10*x685); |
| IkReal x689=((1.0)*x684); |
| IkReal x690=(new_r00*x685); |
| evalcond[0]=(gconst10+((new_r00*x684))+((new_r10*x685))); |
| evalcond[1]=(((gconst10*x684))+(((-1.0000000008)*x686))+new_r00); |
| evalcond[2]=(((gconst11*x687))+x688+new_r10); |
| evalcond[3]=((((-1.0)*gconst11*x689))+(((-1.0000000008)*x688))); |
| evalcond[4]=(((gconst10*x687))+(((-1.0)*x686))); |
| evalcond[5]=((((-1.0)*new_r10*x689))+(((-1.0000000008)*gconst11))+x690); |
| evalcond[6]=((((-1.0)*new_r10*x687))+(((1.0000000008)*x690))+(((-1.0)*gconst11))); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[2]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[3]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[4]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[5]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[6]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| |
| } |
| |
| } |
| |
| } |
| } while(0); |
| if( bgotonextstatement ) |
| { |
| bool bgotonextstatement = true; |
| do |
| { |
| evalcond[0]=((IKabs(new_r11))+(IKabs(new_r10))); |
| if( IKabs(evalcond[0]) < 0.0000050000000000 ) |
| { |
| bgotonextstatement=false; |
| { |
| IkReal j5array[1], cj5array[1], sj5array[1]; |
| bool j5valid[1]={false}; |
| _nj5 = 1; |
| CheckValue<IkReal> x692=IKPowWithIntegerCheck(gconst11,-1); |
| if(!x692.valid){ |
| continue; |
| } |
| IkReal x691=x692.value; |
| if( IKabs((new_r01*x691)) < IKFAST_ATAN2_MAGTHRESH && IKabs(((0.9999999992)*new_r00*x691)) < IKFAST_ATAN2_MAGTHRESH && IKabs(IKsqr((new_r01*x691))+IKsqr(((0.9999999992)*new_r00*x691))-1) <= IKFAST_SINCOS_THRESH ) |
| continue; |
| j5array[0]=IKatan2((new_r01*x691), ((0.9999999992)*new_r00*x691)); |
| sj5array[0]=IKsin(j5array[0]); |
| cj5array[0]=IKcos(j5array[0]); |
| if( j5array[0] > IKPI ) |
| { |
| j5array[0]-=IK2PI; |
| } |
| else if( j5array[0] < -IKPI ) |
| { j5array[0]+=IK2PI; |
| } |
| j5valid[0] = true; |
| for(int ij5 = 0; ij5 < 1; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < 1; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| { |
| IkReal evalcond[10]; |
| IkReal x693=IKcos(j5); |
| IkReal x694=IKsin(j5); |
| IkReal x695=((1.0)*gconst11); |
| IkReal x696=((1.0000000008)*gconst11); |
| IkReal x697=(new_r00*x693); |
| IkReal x698=(new_r01*x693); |
| evalcond[0]=(new_r00*x694); |
| evalcond[1]=x698; |
| evalcond[2]=((-1.0)*gconst11*x693); |
| evalcond[3]=((((-1.0)*x694*x695))+new_r01); |
| evalcond[4]=((((-1.0)*x695))+((new_r01*x694))); |
| evalcond[5]=(x694*x696); |
| evalcond[6]=((1.0000000008)*x698); |
| evalcond[7]=((((-1.0)*x693*x696))+new_r00); |
| evalcond[8]=(x697+(((-1.0)*x696))); |
| evalcond[9]=((((-1.0)*x695))+(((1.0000000008)*x697))); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[2]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[3]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[4]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[5]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[6]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[7]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[8]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[9]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| |
| } |
| } while(0); |
| if( bgotonextstatement ) |
| { |
| bool bgotonextstatement = true; |
| do |
| { |
| if( 1 ) |
| { |
| bgotonextstatement=false; |
| continue; // branch miss [j5] |
| |
| } |
| } while(0); |
| if( bgotonextstatement ) |
| { |
| } |
| } |
| } |
| } |
| } |
| |
| } else |
| { |
| { |
| IkReal j5array[1], cj5array[1], sj5array[1]; |
| bool j5valid[1]={false}; |
| _nj5 = 1; |
| CheckValue<IkReal> x704=IKPowWithIntegerCheck(new_r00,-1); |
| if(!x704.valid){ |
| continue; |
| } |
| IkReal x699=x704.value; |
| IkReal x700=gconst10*gconst10; |
| IkReal x701=((25000.0)*new_r10); |
| IkReal x702=((25000.0)*x700); |
| CheckValue<IkReal> x705=IKPowWithIntegerCheck((((gconst10*x701))+(((25000.00002)*gconst11*new_r00))),-1); |
| if(!x705.valid){ |
| continue; |
| } |
| IkReal x703=x705.value; |
| CheckValue<IkReal> x706=IKPowWithIntegerCheck(x699,-2); |
| if(!x706.valid){ |
| continue; |
| } |
| if( IKabs((((x699*x700*x701*x703))+(((-1.0)*new_r00*x701*x703))+(((-1.0)*gconst10*x699)))) < IKFAST_ATAN2_MAGTHRESH && IKabs((x703*(((((25000.0)*(x706.value)))+(((-1.0)*x702)))))) < IKFAST_ATAN2_MAGTHRESH && IKabs(IKsqr((((x699*x700*x701*x703))+(((-1.0)*new_r00*x701*x703))+(((-1.0)*gconst10*x699))))+IKsqr((x703*(((((25000.0)*(x706.value)))+(((-1.0)*x702))))))-1) <= IKFAST_SINCOS_THRESH ) |
| continue; |
| j5array[0]=IKatan2((((x699*x700*x701*x703))+(((-1.0)*new_r00*x701*x703))+(((-1.0)*gconst10*x699))), (x703*(((((25000.0)*(x706.value)))+(((-1.0)*x702)))))); |
| sj5array[0]=IKsin(j5array[0]); |
| cj5array[0]=IKcos(j5array[0]); |
| if( j5array[0] > IKPI ) |
| { |
| j5array[0]-=IK2PI; |
| } |
| else if( j5array[0] < -IKPI ) |
| { j5array[0]+=IK2PI; |
| } |
| j5valid[0] = true; |
| for(int ij5 = 0; ij5 < 1; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < 1; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| { |
| IkReal evalcond[10]; |
| IkReal x707=IKcos(j5); |
| IkReal x708=IKsin(j5); |
| IkReal x709=((1.0)*gconst11); |
| IkReal x710=((1.0000000008)*gconst11); |
| IkReal x711=((1.0000000008)*gconst10); |
| IkReal x712=(new_r11*x708); |
| IkReal x713=(new_r01*x707); |
| IkReal x714=(new_r00*x707); |
| IkReal x715=(gconst10*x707); |
| IkReal x716=(new_r10*x708); |
| evalcond[0]=(((new_r00*x708))+gconst10+((new_r10*x707))); |
| evalcond[1]=(((new_r01*x708))+(((-1.0)*x709))+((new_r11*x707))); |
| evalcond[2]=((((-1.0)*x707*x710))+((gconst10*x708))+new_r00); |
| evalcond[3]=(x715+new_r10+((x708*x710))); |
| evalcond[4]=((((-1.0)*x707*x711))+new_r01+(((-1.0)*x708*x709))); |
| evalcond[5]=((((-1.0)*x707*x709))+new_r11+((x708*x711))); |
| evalcond[6]=((((-1.0)*x716))+(((-1.0)*x710))+x714); |
| evalcond[7]=((((-1.0)*x712))+(((-1.0)*x711))+x713); |
| evalcond[8]=((((1.0000000008)*x714))+(((-1.0)*x709))+(((-1.0000000008)*x716))); |
| evalcond[9]=((((1.0000000008)*x713))+(((-1.0000000008)*x712))+(((-1.0)*gconst10))); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[2]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[3]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[4]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[5]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[6]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[7]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[8]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[9]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| |
| } |
| |
| } |
| |
| } else |
| { |
| { |
| IkReal j5array[1], cj5array[1], sj5array[1]; |
| bool j5valid[1]={false}; |
| _nj5 = 1; |
| IkReal x717=gconst10*gconst10; |
| IkReal x718=new_r10*new_r10; |
| IkReal x719=((25000.00002)*gconst11); |
| IkReal x720=(gconst10*new_r00); |
| IkReal x721=((625000000.5)*gconst11); |
| CheckValue<IkReal> x722=IKPowWithIntegerCheck(((((625000000.0)*x717*(new_r00*new_r00)))+(((-625000001.0)*x718*(gconst11*gconst11)))),-1); |
| if(!x722.valid){ |
| continue; |
| } |
| CheckValue<IkReal> x723=IKPowWithIntegerCheck(((((25000.0)*x720))+(((-1.0)*new_r10*x719))),-1); |
| if(!x723.valid){ |
| continue; |
| } |
| if( IKabs(((x722.value)*(((((625000000.0)*x718*x720))+((x721*(new_r10*new_r10*new_r10)))+(((-1.0)*new_r10*x717*x721))+(((-625000000.0)*x720*(gconst10*gconst10))))))) < IKFAST_ATAN2_MAGTHRESH && IKabs(((x723.value)*(((((-25000.0)*new_r00*new_r10))+((gconst10*x719)))))) < IKFAST_ATAN2_MAGTHRESH && IKabs(IKsqr(((x722.value)*(((((625000000.0)*x718*x720))+((x721*(new_r10*new_r10*new_r10)))+(((-1.0)*new_r10*x717*x721))+(((-625000000.0)*x720*(gconst10*gconst10)))))))+IKsqr(((x723.value)*(((((-25000.0)*new_r00*new_r10))+((gconst10*x719))))))-1) <= IKFAST_SINCOS_THRESH ) |
| continue; |
| j5array[0]=IKatan2(((x722.value)*(((((625000000.0)*x718*x720))+((x721*(new_r10*new_r10*new_r10)))+(((-1.0)*new_r10*x717*x721))+(((-625000000.0)*x720*(gconst10*gconst10)))))), ((x723.value)*(((((-25000.0)*new_r00*new_r10))+((gconst10*x719)))))); |
| sj5array[0]=IKsin(j5array[0]); |
| cj5array[0]=IKcos(j5array[0]); |
| if( j5array[0] > IKPI ) |
| { |
| j5array[0]-=IK2PI; |
| } |
| else if( j5array[0] < -IKPI ) |
| { j5array[0]+=IK2PI; |
| } |
| j5valid[0] = true; |
| for(int ij5 = 0; ij5 < 1; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < 1; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| { |
| IkReal evalcond[10]; |
| IkReal x724=IKcos(j5); |
| IkReal x725=IKsin(j5); |
| IkReal x726=((1.0)*gconst11); |
| IkReal x727=((1.0000000008)*gconst11); |
| IkReal x728=((1.0000000008)*gconst10); |
| IkReal x729=(new_r11*x725); |
| IkReal x730=(new_r01*x724); |
| IkReal x731=(new_r00*x724); |
| IkReal x732=(gconst10*x724); |
| IkReal x733=(new_r10*x725); |
| evalcond[0]=(((new_r00*x725))+gconst10+((new_r10*x724))); |
| evalcond[1]=(((new_r01*x725))+(((-1.0)*x726))+((new_r11*x724))); |
| evalcond[2]=((((-1.0)*x724*x727))+((gconst10*x725))+new_r00); |
| evalcond[3]=(((x725*x727))+x732+new_r10); |
| evalcond[4]=((((-1.0)*x724*x728))+(((-1.0)*x725*x726))+new_r01); |
| evalcond[5]=((((-1.0)*x724*x726))+((x725*x728))+new_r11); |
| evalcond[6]=((((-1.0)*x733))+(((-1.0)*x727))+x731); |
| evalcond[7]=((((-1.0)*x728))+(((-1.0)*x729))+x730); |
| evalcond[8]=((((1.0000000008)*x731))+(((-1.0)*x726))+(((-1.0000000008)*x733))); |
| evalcond[9]=((((1.0000000008)*x730))+(((-1.0000000008)*x729))+(((-1.0)*gconst10))); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[2]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[3]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[4]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[5]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[6]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[7]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[8]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[9]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| |
| } |
| |
| } |
| |
| } else |
| { |
| { |
| IkReal j5array[1], cj5array[1], sj5array[1]; |
| bool j5valid[1]={false}; |
| _nj5 = 1; |
| IkReal x734=((1.0)*new_r00); |
| CheckValue<IkReal> x735=IKPowWithIntegerCheck(IKsign((((new_r01*new_r10))+(((-1.0)*new_r11*x734)))),-1); |
| if(!x735.valid){ |
| continue; |
| } |
| CheckValue<IkReal> x736 = IKatan2WithCheck(IkReal((((gconst10*new_r11))+((gconst11*new_r10)))),IkReal(((((-1.0)*gconst11*x734))+(((-1.0)*gconst10*new_r01)))),IKFAST_ATAN2_MAGTHRESH); |
| if(!x736.valid){ |
| continue; |
| } |
| j5array[0]=((-1.5707963267949)+(((1.5707963267949)*(x735.value)))+(x736.value)); |
| sj5array[0]=IKsin(j5array[0]); |
| cj5array[0]=IKcos(j5array[0]); |
| if( j5array[0] > IKPI ) |
| { |
| j5array[0]-=IK2PI; |
| } |
| else if( j5array[0] < -IKPI ) |
| { j5array[0]+=IK2PI; |
| } |
| j5valid[0] = true; |
| for(int ij5 = 0; ij5 < 1; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < 1; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| { |
| IkReal evalcond[10]; |
| IkReal x737=IKcos(j5); |
| IkReal x738=IKsin(j5); |
| IkReal x739=((1.0)*gconst11); |
| IkReal x740=((1.0000000008)*gconst11); |
| IkReal x741=((1.0000000008)*gconst10); |
| IkReal x742=(new_r11*x738); |
| IkReal x743=(new_r01*x737); |
| IkReal x744=(new_r00*x737); |
| IkReal x745=(gconst10*x737); |
| IkReal x746=(new_r10*x738); |
| evalcond[0]=(gconst10+((new_r00*x738))+((new_r10*x737))); |
| evalcond[1]=(((new_r01*x738))+(((-1.0)*x739))+((new_r11*x737))); |
| evalcond[2]=((((-1.0)*x737*x740))+((gconst10*x738))+new_r00); |
| evalcond[3]=(((x738*x740))+x745+new_r10); |
| evalcond[4]=((((-1.0)*x737*x741))+new_r01+(((-1.0)*x738*x739))); |
| evalcond[5]=(((x738*x741))+(((-1.0)*x737*x739))+new_r11); |
| evalcond[6]=((((-1.0)*x746))+x744+(((-1.0)*x740))); |
| evalcond[7]=((((-1.0)*x742))+x743+(((-1.0)*x741))); |
| evalcond[8]=((((-1.0000000008)*x746))+(((-1.0)*x739))+(((1.0000000008)*x744))); |
| evalcond[9]=((((-1.0000000008)*x742))+(((1.0000000008)*x743))+(((-1.0)*gconst10))); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[2]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[3]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[4]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[5]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[6]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[7]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[8]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[9]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| |
| } |
| |
| } |
| |
| } |
| } while(0); |
| if( bgotonextstatement ) |
| { |
| bool bgotonextstatement = true; |
| do |
| { |
| IkReal x747=new_r00*new_r00; |
| CheckValue<IkReal> x748=IKPowWithIntegerCheck(((((-1.0000000016)*(new_r10*new_r10)))+(((-1.0)*x747))),-1); |
| if(!x748.valid){ |
| continue; |
| } |
| if((((-1.0)*x747*(x748.value))) < -0.00001) |
| continue; |
| IkReal gconst12=IKsqrt(((-1.0)*x747*(x748.value))); |
| evalcond[0]=((-3.14159265358979)+(IKfmod(((3.14159265358979)+(IKabs(((-1.0)+(IKsign(sj3)))))+(IKabs((cj3+(((-1.0)*gconst12)))))), 6.28318530717959))); |
| if( IKabs(evalcond[0]) < 0.0000050000000000 ) |
| { |
| bgotonextstatement=false; |
| { |
| IkReal j5eval[2]; |
| IkReal x749=new_r00*new_r00; |
| sj4=4.0e-5; |
| cj4=1.0; |
| j4=4.0e-5; |
| if((((1.0)+(((-1.0)*(gconst12*gconst12))))) < -0.00001) |
| continue; |
| sj3=IKsqrt(((1.0)+(((-1.0)*(gconst12*gconst12))))); |
| cj3=gconst12; |
| if( (gconst12) < -1-IKFAST_SINCOS_THRESH || (gconst12) > 1+IKFAST_SINCOS_THRESH ) |
| continue; |
| j3=IKacos(gconst12); |
| CheckValue<IkReal> x750=IKPowWithIntegerCheck(((((-1.0000000016)*(new_r10*new_r10)))+(((-1.0)*x749))),-1); |
| if(!x750.valid){ |
| continue; |
| } |
| if((((-1.0)*x749*(x750.value))) < -0.00001) |
| continue; |
| IkReal gconst12=IKsqrt(((-1.0)*x749*(x750.value))); |
| IkReal x751=(new_r00*new_r01); |
| IkReal x752=(new_r10*new_r11); |
| j5eval[0]=(x751+x752); |
| j5eval[1]=IKsign(((((25000.0)*x752))+(((25000.0)*x751)))); |
| if( IKabs(j5eval[0]) < 0.0000010000000000 || IKabs(j5eval[1]) < 0.0000010000000000 ) |
| { |
| { |
| IkReal j5eval[2]; |
| IkReal x753=new_r00*new_r00; |
| sj4=4.0e-5; |
| cj4=1.0; |
| j4=4.0e-5; |
| if((((1.0)+(((-1.0)*(gconst12*gconst12))))) < -0.00001) |
| continue; |
| sj3=IKsqrt(((1.0)+(((-1.0)*(gconst12*gconst12))))); |
| cj3=gconst12; |
| if( (gconst12) < -1-IKFAST_SINCOS_THRESH || (gconst12) > 1+IKFAST_SINCOS_THRESH ) |
| continue; |
| j3=IKacos(gconst12); |
| CheckValue<IkReal> x754=IKPowWithIntegerCheck(((((-1.0000000016)*(new_r10*new_r10)))+(((-1.0)*x753))),-1); |
| if(!x754.valid){ |
| continue; |
| } |
| if((((-1.0)*x753*(x754.value))) < -0.00001) |
| continue; |
| IkReal gconst12=IKsqrt(((-1.0)*x753*(x754.value))); |
| IkReal x755=(((new_r01*new_r10))+(((-1.0)*new_r00*new_r11))); |
| j5eval[0]=x755; |
| j5eval[1]=IKsign(x755); |
| if( IKabs(j5eval[0]) < 0.0000010000000000 || IKabs(j5eval[1]) < 0.0000010000000000 ) |
| { |
| { |
| IkReal j5eval[1]; |
| IkReal x756=new_r00*new_r00; |
| sj4=4.0e-5; |
| cj4=1.0; |
| j4=4.0e-5; |
| if((((1.0)+(((-1.0)*(gconst12*gconst12))))) < -0.00001) |
| continue; |
| sj3=IKsqrt(((1.0)+(((-1.0)*(gconst12*gconst12))))); |
| cj3=gconst12; |
| if( (gconst12) < -1-IKFAST_SINCOS_THRESH || (gconst12) > 1+IKFAST_SINCOS_THRESH ) |
| continue; |
| j3=IKacos(gconst12); |
| CheckValue<IkReal> x757=IKPowWithIntegerCheck(((((-1.0000000016)*(new_r10*new_r10)))+(((-1.0)*x756))),-1); |
| if(!x757.valid){ |
| continue; |
| } |
| if((((-1.0)*x756*(x757.value))) < -0.00001) |
| continue; |
| IkReal gconst12=IKsqrt(((-1.0)*x756*(x757.value))); |
| j5eval[0]=new_r01; |
| if( IKabs(j5eval[0]) < 0.0000010000000000 ) |
| { |
| { |
| IkReal evalcond[1]; |
| bool bgotonextstatement = true; |
| do |
| { |
| evalcond[0]=((IKabs(new_r11))+(IKabs(new_r01))); |
| if( IKabs(evalcond[0]) < 0.0000050000000000 ) |
| { |
| bgotonextstatement=false; |
| { |
| IkReal j5eval[2]; |
| IkReal x758=new_r10*new_r10; |
| sj4=4.0e-5; |
| cj4=1.0; |
| j4=4.0e-5; |
| if((((1.0)+(((-1.0)*(gconst12*gconst12))))) < -0.00001) |
| continue; |
| sj3=IKsqrt(((1.0)+(((-1.0)*(gconst12*gconst12))))); |
| cj3=gconst12; |
| if( (gconst12) < -1-IKFAST_SINCOS_THRESH || (gconst12) > 1+IKFAST_SINCOS_THRESH ) |
| continue; |
| j3=IKacos(gconst12); |
| new_r11=0; |
| new_r01=0; |
| new_r22=0; |
| new_r20=0; |
| CheckValue<IkReal> x759=IKPowWithIntegerCheck(((-1.0)+(((-1.6e-9)*x758))),-1); |
| if(!x759.valid){ |
| continue; |
| } |
| if((((x759.value)*(((-1.0)+(((1.0)*x758)))))) < -0.00001) |
| continue; |
| IkReal gconst12=IKsqrt(((x759.value)*(((-1.0)+(((1.0)*x758)))))); |
| j5eval[0]=-1.0; |
| j5eval[1]=-1.0; |
| if( IKabs(j5eval[0]) < 0.0000010000000000 || IKabs(j5eval[1]) < 0.0000010000000000 ) |
| { |
| { |
| IkReal j5array[1], cj5array[1], sj5array[1]; |
| bool j5valid[1]={false}; |
| _nj5 = 1; |
| IkReal x760=gconst12*gconst12; |
| IkReal x761=new_r00*new_r00; |
| IkReal x762=(gconst12*new_r10); |
| IkReal x763=((1.0)+(((-1.0)*x760))); |
| IkReal x764=((3.90625000625e+17)*x760); |
| if((x763) < -0.00001) |
| continue; |
| IkReal x765=IKsqrt(x763); |
| IkReal x766=(new_r00*x765); |
| CheckValue<IkReal> x767=IKPowWithIntegerCheck(((((-1.0)*x764*(new_r10*new_r10)))+(((3.90625e+17)*x761*(pow(x763,1.0))))),-1); |
| if(!x767.valid){ |
| continue; |
| } |
| CheckValue<IkReal> x768=IKPowWithIntegerCheck(((((-25000.00002)*x762))+(((25000.0)*x766))),-1); |
| if(!x768.valid){ |
| continue; |
| } |
| if( IKabs(((x767.value)*(((((-3.906250003125e+17)*x761*x762))+(((3.906250009375e+17)*x762*(gconst12*gconst12)))+(((-3.90625e+17)*x766*(new_r00*new_r00)))+((x764*x766)))))) < IKFAST_ATAN2_MAGTHRESH && IKabs(((x768.value)*(((((-25000.0)*new_r00*new_r10))+(((25000.00002)*gconst12*x765)))))) < IKFAST_ATAN2_MAGTHRESH && IKabs(IKsqr(((x767.value)*(((((-3.906250003125e+17)*x761*x762))+(((3.906250009375e+17)*x762*(gconst12*gconst12)))+(((-3.90625e+17)*x766*(new_r00*new_r00)))+((x764*x766))))))+IKsqr(((x768.value)*(((((-25000.0)*new_r00*new_r10))+(((25000.00002)*gconst12*x765))))))-1) <= IKFAST_SINCOS_THRESH ) |
| continue; |
| j5array[0]=IKatan2(((x767.value)*(((((-3.906250003125e+17)*x761*x762))+(((3.906250009375e+17)*x762*(gconst12*gconst12)))+(((-3.90625e+17)*x766*(new_r00*new_r00)))+((x764*x766))))), ((x768.value)*(((((-25000.0)*new_r00*new_r10))+(((25000.00002)*gconst12*x765)))))); |
| sj5array[0]=IKsin(j5array[0]); |
| cj5array[0]=IKcos(j5array[0]); |
| if( j5array[0] > IKPI ) |
| { |
| j5array[0]-=IK2PI; |
| } |
| else if( j5array[0] < -IKPI ) |
| { j5array[0]+=IK2PI; |
| } |
| j5valid[0] = true; |
| for(int ij5 = 0; ij5 < 1; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < 1; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| { |
| IkReal evalcond[7]; |
| IkReal x769=IKcos(j5); |
| IkReal x770=IKsin(j5); |
| IkReal x771=((1.0)*gconst12); |
| IkReal x772=((1.0000000008)*gconst12); |
| IkReal x773=((1.0000000008)*x770); |
| IkReal x774=(new_r00*x769); |
| if((((1.0)+(((-1.0)*gconst12*x771)))) < -0.00001) |
| continue; |
| IkReal x775=IKsqrt(((1.0)+(((-1.0)*gconst12*x771)))); |
| IkReal x776=(x769*x775); |
| evalcond[0]=((((-1.0)*new_r10*x770))+x774+(((-1.0)*x772))); |
| evalcond[1]=(((new_r10*x769))+((new_r00*x770))+x775); |
| evalcond[2]=((((-1.0)*new_r10*x773))+(((1.0000000008)*x774))+(((-1.0)*x771))); |
| evalcond[3]=(((x770*x775))+(((-1.0)*x769*x772))+new_r00); |
| evalcond[4]=(((x770*x772))+x776+new_r10); |
| evalcond[5]=((((-1.0000000008)*x776))+(((-1.0)*x770*x771))); |
| evalcond[6]=(((x773*x775))+(((-1.0)*x769*x771))); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[2]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[3]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[4]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[5]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[6]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| |
| } else |
| { |
| { |
| IkReal j5array[1], cj5array[1], sj5array[1]; |
| bool j5valid[1]={false}; |
| _nj5 = 1; |
| if((((1.0)+(((-1.0)*(gconst12*gconst12))))) < -0.00001) |
| continue; |
| IkReal x777=IKsqrt(((1.0)+(((-1.0)*(gconst12*gconst12))))); |
| IkReal x778=((25000.0)*x777); |
| CheckValue<IkReal> x779=IKPowWithIntegerCheck(IKsign(((((-25000.0)*(new_r10*new_r10)))+(((-25000.0)*(new_r00*new_r00))))),-1); |
| if(!x779.valid){ |
| continue; |
| } |
| CheckValue<IkReal> x780 = IKatan2WithCheck(IkReal(((((25000.00002)*gconst12*new_r10))+((new_r00*x778)))),IkReal(((((-25000.00002)*gconst12*new_r00))+((new_r10*x778)))),IKFAST_ATAN2_MAGTHRESH); |
| if(!x780.valid){ |
| continue; |
| } |
| j5array[0]=((-1.5707963267949)+(((1.5707963267949)*(x779.value)))+(x780.value)); |
| sj5array[0]=IKsin(j5array[0]); |
| cj5array[0]=IKcos(j5array[0]); |
| if( j5array[0] > IKPI ) |
| { |
| j5array[0]-=IK2PI; |
| } |
| else if( j5array[0] < -IKPI ) |
| { j5array[0]+=IK2PI; |
| } |
| j5valid[0] = true; |
| for(int ij5 = 0; ij5 < 1; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < 1; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| { |
| IkReal evalcond[7]; |
| IkReal x781=IKcos(j5); |
| IkReal x782=IKsin(j5); |
| IkReal x783=((1.0)*gconst12); |
| IkReal x784=((1.0000000008)*gconst12); |
| IkReal x785=((1.0000000008)*x782); |
| IkReal x786=(new_r00*x781); |
| IkReal x787=x777; |
| IkReal x788=(x781*x787); |
| evalcond[0]=((((-1.0)*x784))+x786+(((-1.0)*new_r10*x782))); |
| evalcond[1]=(((new_r10*x781))+((new_r00*x782))+x787); |
| evalcond[2]=((((-1.0)*x783))+(((-1.0)*new_r10*x785))+(((1.0000000008)*x786))); |
| evalcond[3]=(((x782*x787))+(((-1.0)*x781*x784))+new_r00); |
| evalcond[4]=(((x782*x784))+x788+new_r10); |
| evalcond[5]=((((-1.0)*x782*x783))+(((-1.0000000008)*x788))); |
| evalcond[6]=(((x785*x787))+(((-1.0)*x781*x783))); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[2]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[3]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[4]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[5]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[6]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| |
| } |
| |
| } |
| |
| } |
| } while(0); |
| if( bgotonextstatement ) |
| { |
| bool bgotonextstatement = true; |
| do |
| { |
| evalcond[0]=IKabs(new_r01); |
| if( IKabs(evalcond[0]) < 0.0000050000000000 ) |
| { |
| bgotonextstatement=false; |
| { |
| IkReal j5eval[3]; |
| IkReal x789=new_r00*new_r00; |
| sj4=4.0e-5; |
| cj4=1.0; |
| j4=4.0e-5; |
| if((((1.0)+(((-1.0)*(gconst12*gconst12))))) < -0.00001) |
| continue; |
| sj3=IKsqrt(((1.0)+(((-1.0)*(gconst12*gconst12))))); |
| cj3=gconst12; |
| if( (gconst12) < -1-IKFAST_SINCOS_THRESH || (gconst12) > 1+IKFAST_SINCOS_THRESH ) |
| continue; |
| j3=IKacos(gconst12); |
| new_r01=0; |
| CheckValue<IkReal> x790=IKPowWithIntegerCheck(((((-1.0000000016)*(new_r10*new_r10)))+(((-1.0)*x789))),-1); |
| if(!x790.valid){ |
| continue; |
| } |
| if((((-1.0)*x789*(x790.value))) < -0.00001) |
| continue; |
| IkReal gconst12=IKsqrt(((-1.0)*x789*(x790.value))); |
| IkReal x791=new_r10*new_r10; |
| IkReal x792=new_r00*new_r00; |
| IkReal x793=((1.0)*x792); |
| j5eval[0]=new_r11; |
| j5eval[1]=IKsign(new_r11); |
| CheckValue<IkReal> x794=IKPowWithIntegerCheck(((((625000000.0)*x792))+(((625000001.0)*x791))),-1); |
| if(!x794.valid){ |
| continue; |
| } |
| CheckValue<IkReal> x795=IKPowWithIntegerCheck(((((-1.0000000016)*x791))+(((-1.0)*x792))),-1); |
| if(!x795.valid){ |
| continue; |
| } |
| j5eval[2]=((((625000002.0)*(pow(x791,1.0))*(pow(x794.value,1.0))))+(((-1.0)*x793*(x795.value)))); |
| if( IKabs(j5eval[0]) < 0.0000010000000000 || IKabs(j5eval[1]) < 0.0000010000000000 || IKabs(j5eval[2]) < 0.0000010000000000 ) |
| { |
| { |
| IkReal j5eval[2]; |
| IkReal x796=new_r00*new_r00; |
| sj4=4.0e-5; |
| cj4=1.0; |
| j4=4.0e-5; |
| if((((1.0)+(((-1.0)*(gconst12*gconst12))))) < -0.00001) |
| continue; |
| sj3=IKsqrt(((1.0)+(((-1.0)*(gconst12*gconst12))))); |
| cj3=gconst12; |
| if( (gconst12) < -1-IKFAST_SINCOS_THRESH || (gconst12) > 1+IKFAST_SINCOS_THRESH ) |
| continue; |
| j3=IKacos(gconst12); |
| new_r01=0; |
| CheckValue<IkReal> x797=IKPowWithIntegerCheck(((((-1.0000000016)*(new_r10*new_r10)))+(((-1.0)*x796))),-1); |
| if(!x797.valid){ |
| continue; |
| } |
| if((((-1.0)*x796*(x797.value))) < -0.00001) |
| continue; |
| IkReal gconst12=IKsqrt(((-1.0)*x796*(x797.value))); |
| j5eval[0]=new_r10; |
| j5eval[1]=new_r11; |
| if( IKabs(j5eval[0]) < 0.0000010000000000 || IKabs(j5eval[1]) < 0.0000010000000000 ) |
| { |
| { |
| IkReal j5eval[2]; |
| IkReal x798=new_r00*new_r00; |
| sj4=4.0e-5; |
| cj4=1.0; |
| j4=4.0e-5; |
| if((((1.0)+(((-1.0)*(gconst12*gconst12))))) < -0.00001) |
| continue; |
| sj3=IKsqrt(((1.0)+(((-1.0)*(gconst12*gconst12))))); |
| cj3=gconst12; |
| if( (gconst12) < -1-IKFAST_SINCOS_THRESH || (gconst12) > 1+IKFAST_SINCOS_THRESH ) |
| continue; |
| j3=IKacos(gconst12); |
| new_r01=0; |
| CheckValue<IkReal> x799=IKPowWithIntegerCheck(((((-1.0000000016)*(new_r10*new_r10)))+(((-1.0)*x798))),-1); |
| if(!x799.valid){ |
| continue; |
| } |
| if((((-1.0)*x798*(x799.value))) < -0.00001) |
| continue; |
| IkReal gconst12=IKsqrt(((-1.0)*x798*(x799.value))); |
| j5eval[0]=new_r00; |
| j5eval[1]=new_r11; |
| if( IKabs(j5eval[0]) < 0.0000010000000000 || IKabs(j5eval[1]) < 0.0000010000000000 ) |
| { |
| continue; // 3 cases reached |
| |
| } else |
| { |
| { |
| IkReal j5array[1], cj5array[1], sj5array[1]; |
| bool j5valid[1]={false}; |
| _nj5 = 1; |
| CheckValue<IkReal> x801=IKPowWithIntegerCheck(new_r11,-1); |
| if(!x801.valid){ |
| continue; |
| } |
| IkReal x800=x801.value; |
| CheckValue<IkReal> x802=IKPowWithIntegerCheck(new_r00,-1); |
| if(!x802.valid){ |
| continue; |
| } |
| if((((1.0)+(((-1.0)*(gconst12*gconst12))))) < -0.00001) |
| continue; |
| if( IKabs((x800*(x802.value)*(((((-1.0)*new_r11*(IKsqrt(((1.0)+(((-1.0)*(gconst12*gconst12))))))))+(((-1.0)*gconst12*new_r10)))))) < IKFAST_ATAN2_MAGTHRESH && IKabs((gconst12*x800)) < IKFAST_ATAN2_MAGTHRESH && IKabs(IKsqr((x800*(x802.value)*(((((-1.0)*new_r11*(IKsqrt(((1.0)+(((-1.0)*(gconst12*gconst12))))))))+(((-1.0)*gconst12*new_r10))))))+IKsqr((gconst12*x800))-1) <= IKFAST_SINCOS_THRESH ) |
| continue; |
| j5array[0]=IKatan2((x800*(x802.value)*(((((-1.0)*new_r11*(IKsqrt(((1.0)+(((-1.0)*(gconst12*gconst12))))))))+(((-1.0)*gconst12*new_r10))))), (gconst12*x800)); |
| sj5array[0]=IKsin(j5array[0]); |
| cj5array[0]=IKcos(j5array[0]); |
| if( j5array[0] > IKPI ) |
| { |
| j5array[0]-=IK2PI; |
| } |
| else if( j5array[0] < -IKPI ) |
| { j5array[0]+=IK2PI; |
| } |
| j5valid[0] = true; |
| for(int ij5 = 0; ij5 < 1; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < 1; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| { |
| IkReal evalcond[10]; |
| IkReal x803=IKcos(j5); |
| IkReal x804=IKsin(j5); |
| IkReal x805=((1.0)*gconst12); |
| IkReal x806=(gconst12*x803); |
| IkReal x807=(new_r11*x804); |
| IkReal x808=(new_r00*x803); |
| IkReal x809=(gconst12*x804); |
| IkReal x810=(new_r10*x804); |
| if((((1.0)+(((-1.0)*gconst12*x805)))) < -0.00001) |
| continue; |
| IkReal x811=IKsqrt(((1.0)+(((-1.0)*gconst12*x805)))); |
| IkReal x812=(x804*x811); |
| IkReal x813=(x803*x811); |
| evalcond[0]=(((new_r11*x803))+(((-1.0)*x805))); |
| evalcond[1]=((((-1.0000000008)*gconst12))+(((-1.0)*x810))+x808); |
| evalcond[2]=(((new_r00*x804))+((new_r10*x803))+x811); |
| evalcond[3]=((((-1.0)*x807))+(((-1.0000000008)*x811))); |
| evalcond[4]=((((-1.0000000008)*x807))+(((-1.0)*x811))); |
| evalcond[5]=((((1.0000000008)*x808))+(((-1.0)*x805))+(((-1.0000000008)*x810))); |
| evalcond[6]=((((-1.0000000008)*x806))+new_r00+x812); |
| evalcond[7]=((((1.0000000008)*x809))+new_r10+x813); |
| evalcond[8]=((((-1.0)*x804*x805))+(((-1.0000000008)*x813))); |
| evalcond[9]=((((1.0000000008)*x812))+(((-1.0)*x803*x805))+new_r11); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[2]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[3]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[4]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[5]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[6]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[7]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[8]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[9]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| |
| } |
| |
| } |
| |
| } else |
| { |
| { |
| IkReal j5array[1], cj5array[1], sj5array[1]; |
| bool j5valid[1]={false}; |
| _nj5 = 1; |
| CheckValue<IkReal> x815=IKPowWithIntegerCheck(new_r11,-1); |
| if(!x815.valid){ |
| continue; |
| } |
| IkReal x814=x815.value; |
| CheckValue<IkReal> x816=IKPowWithIntegerCheck(new_r10,-1); |
| if(!x816.valid){ |
| continue; |
| } |
| if( IKabs(((4.0e-5)*x814*(x816.value)*(((((25000.0)*gconst12*new_r00))+(((-25000.00002)*gconst12*new_r11)))))) < IKFAST_ATAN2_MAGTHRESH && IKabs((gconst12*x814)) < IKFAST_ATAN2_MAGTHRESH && IKabs(IKsqr(((4.0e-5)*x814*(x816.value)*(((((25000.0)*gconst12*new_r00))+(((-25000.00002)*gconst12*new_r11))))))+IKsqr((gconst12*x814))-1) <= IKFAST_SINCOS_THRESH ) |
| continue; |
| j5array[0]=IKatan2(((4.0e-5)*x814*(x816.value)*(((((25000.0)*gconst12*new_r00))+(((-25000.00002)*gconst12*new_r11))))), (gconst12*x814)); |
| sj5array[0]=IKsin(j5array[0]); |
| cj5array[0]=IKcos(j5array[0]); |
| if( j5array[0] > IKPI ) |
| { |
| j5array[0]-=IK2PI; |
| } |
| else if( j5array[0] < -IKPI ) |
| { j5array[0]+=IK2PI; |
| } |
| j5valid[0] = true; |
| for(int ij5 = 0; ij5 < 1; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < 1; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| { |
| IkReal evalcond[10]; |
| IkReal x817=IKcos(j5); |
| IkReal x818=IKsin(j5); |
| IkReal x819=((1.0)*gconst12); |
| IkReal x820=(gconst12*x817); |
| IkReal x821=(new_r11*x818); |
| IkReal x822=(new_r00*x817); |
| IkReal x823=(gconst12*x818); |
| IkReal x824=(new_r10*x818); |
| if((((1.0)+(((-1.0)*gconst12*x819)))) < -0.00001) |
| continue; |
| IkReal x825=IKsqrt(((1.0)+(((-1.0)*gconst12*x819)))); |
| IkReal x826=(x818*x825); |
| IkReal x827=(x817*x825); |
| evalcond[0]=(((new_r11*x817))+(((-1.0)*x819))); |
| evalcond[1]=((((-1.0000000008)*gconst12))+(((-1.0)*x824))+x822); |
| evalcond[2]=(((new_r00*x818))+((new_r10*x817))+x825); |
| evalcond[3]=((((-1.0)*x821))+(((-1.0000000008)*x825))); |
| evalcond[4]=((((-1.0)*x825))+(((-1.0000000008)*x821))); |
| evalcond[5]=((((1.0000000008)*x822))+(((-1.0)*x819))+(((-1.0000000008)*x824))); |
| evalcond[6]=(new_r00+x826+(((-1.0000000008)*x820))); |
| evalcond[7]=((((1.0000000008)*x823))+new_r10+x827); |
| evalcond[8]=((((-1.0)*x818*x819))+(((-1.0000000008)*x827))); |
| evalcond[9]=((((-1.0)*x817*x819))+(((1.0000000008)*x826))+new_r11); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[2]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[3]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[4]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[5]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[6]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[7]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[8]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[9]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| |
| } |
| |
| } |
| |
| } else |
| { |
| { |
| IkReal j5array[1], cj5array[1], sj5array[1]; |
| bool j5valid[1]={false}; |
| _nj5 = 1; |
| CheckValue<IkReal> x828=IKPowWithIntegerCheck(IKsign(new_r11),-1); |
| if(!x828.valid){ |
| continue; |
| } |
| if((((1.0)+(((-1.0)*(gconst12*gconst12))))) < -0.00001) |
| continue; |
| CheckValue<IkReal> x829 = IKatan2WithCheck(IkReal(((-1.0000000008)*(IKsqrt(((1.0)+(((-1.0)*(gconst12*gconst12)))))))),IkReal(gconst12),IKFAST_ATAN2_MAGTHRESH); |
| if(!x829.valid){ |
| continue; |
| } |
| j5array[0]=((-1.5707963267949)+(((1.5707963267949)*(x828.value)))+(x829.value)); |
| sj5array[0]=IKsin(j5array[0]); |
| cj5array[0]=IKcos(j5array[0]); |
| if( j5array[0] > IKPI ) |
| { |
| j5array[0]-=IK2PI; |
| } |
| else if( j5array[0] < -IKPI ) |
| { j5array[0]+=IK2PI; |
| } |
| j5valid[0] = true; |
| for(int ij5 = 0; ij5 < 1; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < 1; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| { |
| IkReal evalcond[10]; |
| IkReal x830=IKcos(j5); |
| IkReal x831=IKsin(j5); |
| IkReal x832=((1.0)*gconst12); |
| IkReal x833=(gconst12*x830); |
| IkReal x834=(new_r11*x831); |
| IkReal x835=(new_r00*x830); |
| IkReal x836=(gconst12*x831); |
| IkReal x837=(new_r10*x831); |
| if((((1.0)+(((-1.0)*gconst12*x832)))) < -0.00001) |
| continue; |
| IkReal x838=IKsqrt(((1.0)+(((-1.0)*gconst12*x832)))); |
| IkReal x839=(x831*x838); |
| IkReal x840=(x830*x838); |
| evalcond[0]=(((new_r11*x830))+(((-1.0)*x832))); |
| evalcond[1]=((((-1.0000000008)*gconst12))+(((-1.0)*x837))+x835); |
| evalcond[2]=(((new_r00*x831))+x838+((new_r10*x830))); |
| evalcond[3]=((((-1.0)*x834))+(((-1.0000000008)*x838))); |
| evalcond[4]=((((-1.0)*x838))+(((-1.0000000008)*x834))); |
| evalcond[5]=((((1.0000000008)*x835))+(((-1.0)*x832))+(((-1.0000000008)*x837))); |
| evalcond[6]=((((-1.0000000008)*x833))+new_r00+x839); |
| evalcond[7]=((((1.0000000008)*x836))+new_r10+x840); |
| evalcond[8]=((((-1.0000000008)*x840))+(((-1.0)*x831*x832))); |
| evalcond[9]=((((1.0000000008)*x839))+(((-1.0)*x830*x832))+new_r11); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[2]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[3]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[4]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[5]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[6]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[7]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[8]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[9]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| |
| } |
| |
| } |
| |
| } |
| } while(0); |
| if( bgotonextstatement ) |
| { |
| bool bgotonextstatement = true; |
| do |
| { |
| evalcond[0]=((IKabs(new_r11))+(IKabs(new_r00))); |
| if( IKabs(evalcond[0]) < 0.0000050000000000 ) |
| { |
| bgotonextstatement=false; |
| { |
| IkReal j5array[2], cj5array[2], sj5array[2]; |
| bool j5valid[2]={false}; |
| _nj5 = 2; |
| cj5array[0]=((-1.0)*new_r10); |
| if( cj5array[0] >= -1-IKFAST_SINCOS_THRESH && cj5array[0] <= 1+IKFAST_SINCOS_THRESH ) |
| { |
| j5valid[0] = j5valid[1] = true; |
| j5array[0] = IKacos(cj5array[0]); |
| sj5array[0] = IKsin(j5array[0]); |
| cj5array[1] = cj5array[0]; |
| j5array[1] = -j5array[0]; |
| sj5array[1] = -sj5array[0]; |
| } |
| else if( isnan(cj5array[0]) ) |
| { |
| // probably any value will work |
| j5valid[0] = true; |
| cj5array[0] = 1; sj5array[0] = 0; j5array[0] = 0; |
| } |
| for(int ij5 = 0; ij5 < 2; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < 2; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| { |
| IkReal evalcond[9]; |
| IkReal x841=IKsin(j5); |
| IkReal x842=IKcos(j5); |
| IkReal x843=(new_r10*x841); |
| IkReal x844=((1.0000000008)*x842); |
| evalcond[0]=x841; |
| evalcond[1]=(new_r01*x841); |
| evalcond[2]=((-1.0)*x843); |
| evalcond[3]=((1.0)+((new_r10*x842))); |
| evalcond[4]=((1.0000000008)*x841); |
| evalcond[5]=((-1.0000000008)*x843); |
| evalcond[6]=((((-1.0)*x844))+new_r01); |
| evalcond[7]=((-1.0000000008)+((new_r01*x842))); |
| evalcond[8]=((-1.0)+((new_r01*x844))); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[2]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[3]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[4]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[5]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[6]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[7]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[8]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| |
| } |
| } while(0); |
| if( bgotonextstatement ) |
| { |
| bool bgotonextstatement = true; |
| do |
| { |
| evalcond[0]=((IKabs(new_r10))+(IKabs(new_r00))); |
| if( IKabs(evalcond[0]) < 0.0000050000000000 ) |
| { |
| bgotonextstatement=false; |
| { |
| IkReal j5array[1], cj5array[1], sj5array[1]; |
| bool j5valid[1]={false}; |
| _nj5 = 1; |
| if( IKabs(((-0.9999999992)*new_r11)) < IKFAST_ATAN2_MAGTHRESH && IKabs(((0.9999999992)*new_r01)) < IKFAST_ATAN2_MAGTHRESH && IKabs(IKsqr(((-0.9999999992)*new_r11))+IKsqr(((0.9999999992)*new_r01))-1) <= IKFAST_SINCOS_THRESH ) |
| continue; |
| j5array[0]=IKatan2(((-0.9999999992)*new_r11), ((0.9999999992)*new_r01)); |
| sj5array[0]=IKsin(j5array[0]); |
| cj5array[0]=IKcos(j5array[0]); |
| if( j5array[0] > IKPI ) |
| { |
| j5array[0]-=IK2PI; |
| } |
| else if( j5array[0] < -IKPI ) |
| { j5array[0]+=IK2PI; |
| } |
| j5valid[0] = true; |
| for(int ij5 = 0; ij5 < 1; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < 1; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| { |
| IkReal evalcond[7]; |
| IkReal x845=IKcos(j5); |
| IkReal x846=IKsin(j5); |
| IkReal x847=((1.0000000008)*x846); |
| IkReal x848=((1.0000000008)*x845); |
| evalcond[0]=x846; |
| evalcond[1]=x845; |
| evalcond[2]=((((-1.0)*x848))+new_r01); |
| evalcond[3]=(new_r11+x847); |
| evalcond[4]=(((new_r01*x846))+((new_r11*x845))); |
| evalcond[5]=((-1.0000000008)+((new_r01*x845))+(((-1.0)*new_r11*x846))); |
| evalcond[6]=((-1.0)+(((-1.0)*new_r11*x847))+((new_r01*x848))); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[2]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[3]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[4]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[5]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[6]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| |
| } |
| } while(0); |
| if( bgotonextstatement ) |
| { |
| bool bgotonextstatement = true; |
| do |
| { |
| if( 1 ) |
| { |
| bgotonextstatement=false; |
| continue; // branch miss [j5] |
| |
| } |
| } while(0); |
| if( bgotonextstatement ) |
| { |
| } |
| } |
| } |
| } |
| } |
| } |
| |
| } else |
| { |
| { |
| IkReal j5array[1], cj5array[1], sj5array[1]; |
| bool j5valid[1]={false}; |
| _nj5 = 1; |
| CheckValue<IkReal> x855=IKPowWithIntegerCheck(new_r01,-1); |
| if(!x855.valid){ |
| continue; |
| } |
| IkReal x849=x855.value; |
| IkReal x850=(gconst12*x849); |
| if((((1.0)+(((-1.0)*(gconst12*gconst12))))) < -0.00001) |
| continue; |
| IkReal x851=IKsqrt(((1.0)+(((-1.0)*(gconst12*gconst12))))); |
| IkReal x852=((25000.0)*x851); |
| CheckValue<IkReal> x856=IKPowWithIntegerCheck(((((25000.00002)*gconst12*new_r01))+((new_r11*x852))),-1); |
| if(!x856.valid){ |
| continue; |
| } |
| IkReal x853=x856.value; |
| IkReal x854=((25000.0)*new_r11*x853); |
| if( IKabs(((((-1.0)*new_r00*x854))+x850+(((-1.0)*new_r11*x850*x852*x853)))) < IKFAST_ATAN2_MAGTHRESH && IKabs((x853*((((gconst12*x852))+(((25000.0)*new_r00*new_r01)))))) < IKFAST_ATAN2_MAGTHRESH && IKabs(IKsqr(((((-1.0)*new_r00*x854))+x850+(((-1.0)*new_r11*x850*x852*x853))))+IKsqr((x853*((((gconst12*x852))+(((25000.0)*new_r00*new_r01))))))-1) <= IKFAST_SINCOS_THRESH ) |
| continue; |
| j5array[0]=IKatan2(((((-1.0)*new_r00*x854))+x850+(((-1.0)*new_r11*x850*x852*x853))), (x853*((((gconst12*x852))+(((25000.0)*new_r00*new_r01)))))); |
| sj5array[0]=IKsin(j5array[0]); |
| cj5array[0]=IKcos(j5array[0]); |
| if( j5array[0] > IKPI ) |
| { |
| j5array[0]-=IK2PI; |
| } |
| else if( j5array[0] < -IKPI ) |
| { j5array[0]+=IK2PI; |
| } |
| j5valid[0] = true; |
| for(int ij5 = 0; ij5 < 1; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < 1; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| { |
| IkReal evalcond[10]; |
| IkReal x857=IKcos(j5); |
| IkReal x858=IKsin(j5); |
| IkReal x859=((1.0)*gconst12); |
| IkReal x860=(gconst12*x857); |
| IkReal x861=(new_r11*x858); |
| IkReal x862=(new_r01*x857); |
| IkReal x863=(new_r00*x857); |
| IkReal x864=(gconst12*x858); |
| IkReal x865=(new_r10*x858); |
| IkReal x866=x851; |
| IkReal x867=(x858*x866); |
| IkReal x868=(x857*x866); |
| evalcond[0]=((((-1.0)*x859))+((new_r11*x857))+((new_r01*x858))); |
| evalcond[1]=((((-1.0)*x865))+(((-1.0000000008)*gconst12))+x863); |
| evalcond[2]=(((new_r10*x857))+x866+((new_r00*x858))); |
| evalcond[3]=((((-1.0000000008)*x865))+(((1.0000000008)*x863))+(((-1.0)*x859))); |
| evalcond[4]=((((-1.0000000008)*x860))+new_r00+x867); |
| evalcond[5]=((((1.0000000008)*x864))+new_r10+x868); |
| evalcond[6]=((((-1.0000000008)*x868))+(((-1.0)*x858*x859))+new_r01); |
| evalcond[7]=((((1.0000000008)*x867))+new_r11+(((-1.0)*x857*x859))); |
| evalcond[8]=((((-1.0000000008)*x866))+(((-1.0)*x861))+x862); |
| evalcond[9]=((((-1.0000000008)*x861))+(((1.0000000008)*x862))+(((-1.0)*x866))); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[2]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[3]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[4]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[5]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[6]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[7]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[8]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[9]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| |
| } |
| |
| } |
| |
| } else |
| { |
| { |
| IkReal j5array[1], cj5array[1], sj5array[1]; |
| bool j5valid[1]={false}; |
| _nj5 = 1; |
| if((((1.0)+(((-1.0)*(gconst12*gconst12))))) < -0.00001) |
| continue; |
| IkReal x869=IKsqrt(((1.0)+(((-1.0)*(gconst12*gconst12))))); |
| CheckValue<IkReal> x870 = IKatan2WithCheck(IkReal((((new_r11*x869))+((gconst12*new_r10)))),IkReal(((((-1.0)*gconst12*new_r00))+(((-1.0)*new_r01*x869)))),IKFAST_ATAN2_MAGTHRESH); |
| if(!x870.valid){ |
| continue; |
| } |
| CheckValue<IkReal> x871=IKPowWithIntegerCheck(IKsign((((new_r01*new_r10))+(((-1.0)*new_r00*new_r11)))),-1); |
| if(!x871.valid){ |
| continue; |
| } |
| j5array[0]=((-1.5707963267949)+(x870.value)+(((1.5707963267949)*(x871.value)))); |
| sj5array[0]=IKsin(j5array[0]); |
| cj5array[0]=IKcos(j5array[0]); |
| if( j5array[0] > IKPI ) |
| { |
| j5array[0]-=IK2PI; |
| } |
| else if( j5array[0] < -IKPI ) |
| { j5array[0]+=IK2PI; |
| } |
| j5valid[0] = true; |
| for(int ij5 = 0; ij5 < 1; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < 1; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| { |
| IkReal evalcond[10]; |
| IkReal x872=IKcos(j5); |
| IkReal x873=IKsin(j5); |
| IkReal x874=((1.0)*gconst12); |
| IkReal x875=(gconst12*x872); |
| IkReal x876=(new_r11*x873); |
| IkReal x877=(new_r01*x872); |
| IkReal x878=(new_r00*x872); |
| IkReal x879=(gconst12*x873); |
| IkReal x880=(new_r10*x873); |
| IkReal x881=x869; |
| IkReal x882=(x873*x881); |
| IkReal x883=(x872*x881); |
| evalcond[0]=(((new_r01*x873))+((new_r11*x872))+(((-1.0)*x874))); |
| evalcond[1]=((((-1.0)*x880))+(((-1.0000000008)*gconst12))+x878); |
| evalcond[2]=(((new_r00*x873))+((new_r10*x872))+x881); |
| evalcond[3]=((((1.0000000008)*x878))+(((-1.0000000008)*x880))+(((-1.0)*x874))); |
| evalcond[4]=((((-1.0000000008)*x875))+new_r00+x882); |
| evalcond[5]=((((1.0000000008)*x879))+new_r10+x883); |
| evalcond[6]=((((-1.0)*x873*x874))+new_r01+(((-1.0000000008)*x883))); |
| evalcond[7]=((((-1.0)*x872*x874))+(((1.0000000008)*x882))+new_r11); |
| evalcond[8]=((((-1.0)*x876))+x877+(((-1.0000000008)*x881))); |
| evalcond[9]=((((-1.0000000008)*x876))+(((1.0000000008)*x877))+(((-1.0)*x881))); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[2]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[3]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[4]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[5]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[6]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[7]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[8]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[9]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| |
| } |
| |
| } |
| |
| } else |
| { |
| { |
| IkReal j5array[1], cj5array[1], sj5array[1]; |
| bool j5valid[1]={false}; |
| _nj5 = 1; |
| IkReal x884=((25000.00002)*gconst12); |
| IkReal x885=((25000.0)*new_r10); |
| IkReal x886=((25000.0)*new_r00); |
| CheckValue<IkReal> x887=IKPowWithIntegerCheck(IKsign((((new_r01*x886))+((new_r11*x885)))),-1); |
| if(!x887.valid){ |
| continue; |
| } |
| CheckValue<IkReal> x888 = IKatan2WithCheck(IkReal(((((-1.0)*new_r11*x884))+((gconst12*x886)))),IkReal((((new_r01*x884))+((gconst12*x885)))),IKFAST_ATAN2_MAGTHRESH); |
| if(!x888.valid){ |
| continue; |
| } |
| j5array[0]=((-1.5707963267949)+(((1.5707963267949)*(x887.value)))+(x888.value)); |
| sj5array[0]=IKsin(j5array[0]); |
| cj5array[0]=IKcos(j5array[0]); |
| if( j5array[0] > IKPI ) |
| { |
| j5array[0]-=IK2PI; |
| } |
| else if( j5array[0] < -IKPI ) |
| { j5array[0]+=IK2PI; |
| } |
| j5valid[0] = true; |
| for(int ij5 = 0; ij5 < 1; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < 1; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| { |
| IkReal evalcond[10]; |
| IkReal x889=IKcos(j5); |
| IkReal x890=IKsin(j5); |
| IkReal x891=((1.0)*gconst12); |
| IkReal x892=(gconst12*x889); |
| IkReal x893=(new_r11*x890); |
| IkReal x894=(new_r01*x889); |
| IkReal x895=(new_r00*x889); |
| IkReal x896=(gconst12*x890); |
| IkReal x897=(new_r10*x890); |
| if((((1.0)+(((-1.0)*gconst12*x891)))) < -0.00001) |
| continue; |
| IkReal x898=IKsqrt(((1.0)+(((-1.0)*gconst12*x891)))); |
| IkReal x899=(x890*x898); |
| IkReal x900=(x889*x898); |
| evalcond[0]=(((new_r11*x889))+((new_r01*x890))+(((-1.0)*x891))); |
| evalcond[1]=((((-1.0)*x897))+(((-1.0000000008)*gconst12))+x895); |
| evalcond[2]=(((new_r10*x889))+((new_r00*x890))+x898); |
| evalcond[3]=((((1.0000000008)*x895))+(((-1.0)*x891))+(((-1.0000000008)*x897))); |
| evalcond[4]=(new_r00+x899+(((-1.0000000008)*x892))); |
| evalcond[5]=((((1.0000000008)*x896))+new_r10+x900); |
| evalcond[6]=(new_r01+(((-1.0000000008)*x900))+(((-1.0)*x890*x891))); |
| evalcond[7]=((((1.0000000008)*x899))+(((-1.0)*x889*x891))+new_r11); |
| evalcond[8]=((((-1.0)*x893))+x894+(((-1.0000000008)*x898))); |
| evalcond[9]=((((1.0000000008)*x894))+(((-1.0)*x898))+(((-1.0000000008)*x893))); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[2]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[3]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[4]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[5]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[6]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[7]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[8]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[9]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| |
| } |
| |
| } |
| |
| } |
| } while(0); |
| if( bgotonextstatement ) |
| { |
| bool bgotonextstatement = true; |
| do |
| { |
| IkReal x901=new_r00*new_r00; |
| CheckValue<IkReal> x902=IKPowWithIntegerCheck(((((-1.0000000016)*(new_r10*new_r10)))+(((-1.0)*x901))),-1); |
| if(!x902.valid){ |
| continue; |
| } |
| if((((-1.0)*x901*(x902.value))) < -0.00001) |
| continue; |
| IkReal gconst12=IKsqrt(((-1.0)*x901*(x902.value))); |
| evalcond[0]=((-3.14159265358979)+(IKfmod(((3.14159265358979)+(IKabs(((1.0)+(IKsign(sj3)))))+(IKabs((cj3+(((-1.0)*gconst12)))))), 6.28318530717959))); |
| if( IKabs(evalcond[0]) < 0.0000050000000000 ) |
| { |
| bgotonextstatement=false; |
| { |
| IkReal j5eval[2]; |
| IkReal x903=new_r00*new_r00; |
| sj4=4.0e-5; |
| cj4=1.0; |
| j4=4.0e-5; |
| if((((1.0)+(((-1.0)*(gconst12*gconst12))))) < -0.00001) |
| continue; |
| sj3=((-1.0)*(IKsqrt(((1.0)+(((-1.0)*(gconst12*gconst12))))))); |
| cj3=gconst12; |
| if( (gconst12) < -1-IKFAST_SINCOS_THRESH || (gconst12) > 1+IKFAST_SINCOS_THRESH ) |
| continue; |
| j3=((-1.0)*(IKacos(gconst12))); |
| CheckValue<IkReal> x904=IKPowWithIntegerCheck(((((-1.0000000016)*(new_r10*new_r10)))+(((-1.0)*x903))),-1); |
| if(!x904.valid){ |
| continue; |
| } |
| if((((-1.0)*x903*(x904.value))) < -0.00001) |
| continue; |
| IkReal gconst12=IKsqrt(((-1.0)*x903*(x904.value))); |
| IkReal x905=(new_r00*new_r01); |
| IkReal x906=(new_r10*new_r11); |
| j5eval[0]=(x905+x906); |
| j5eval[1]=IKsign(((((25000.0)*x906))+(((25000.0)*x905)))); |
| if( IKabs(j5eval[0]) < 0.0000010000000000 || IKabs(j5eval[1]) < 0.0000010000000000 ) |
| { |
| { |
| IkReal j5eval[2]; |
| IkReal x907=new_r00*new_r00; |
| sj4=4.0e-5; |
| cj4=1.0; |
| j4=4.0e-5; |
| if((((1.0)+(((-1.0)*(gconst12*gconst12))))) < -0.00001) |
| continue; |
| sj3=((-1.0)*(IKsqrt(((1.0)+(((-1.0)*(gconst12*gconst12))))))); |
| cj3=gconst12; |
| if( (gconst12) < -1-IKFAST_SINCOS_THRESH || (gconst12) > 1+IKFAST_SINCOS_THRESH ) |
| continue; |
| j3=((-1.0)*(IKacos(gconst12))); |
| CheckValue<IkReal> x908=IKPowWithIntegerCheck(((((-1.0000000016)*(new_r10*new_r10)))+(((-1.0)*x907))),-1); |
| if(!x908.valid){ |
| continue; |
| } |
| if((((-1.0)*x907*(x908.value))) < -0.00001) |
| continue; |
| IkReal gconst12=IKsqrt(((-1.0)*x907*(x908.value))); |
| IkReal x909=(((new_r01*new_r10))+(((-1.0)*new_r00*new_r11))); |
| j5eval[0]=x909; |
| j5eval[1]=IKsign(x909); |
| if( IKabs(j5eval[0]) < 0.0000010000000000 || IKabs(j5eval[1]) < 0.0000010000000000 ) |
| { |
| { |
| IkReal j5eval[1]; |
| IkReal x910=new_r00*new_r00; |
| sj4=4.0e-5; |
| cj4=1.0; |
| j4=4.0e-5; |
| if((((1.0)+(((-1.0)*(gconst12*gconst12))))) < -0.00001) |
| continue; |
| sj3=((-1.0)*(IKsqrt(((1.0)+(((-1.0)*(gconst12*gconst12))))))); |
| cj3=gconst12; |
| if( (gconst12) < -1-IKFAST_SINCOS_THRESH || (gconst12) > 1+IKFAST_SINCOS_THRESH ) |
| continue; |
| j3=((-1.0)*(IKacos(gconst12))); |
| CheckValue<IkReal> x911=IKPowWithIntegerCheck(((((-1.0000000016)*(new_r10*new_r10)))+(((-1.0)*x910))),-1); |
| if(!x911.valid){ |
| continue; |
| } |
| if((((-1.0)*x910*(x911.value))) < -0.00001) |
| continue; |
| IkReal gconst12=IKsqrt(((-1.0)*x910*(x911.value))); |
| j5eval[0]=new_r01; |
| if( IKabs(j5eval[0]) < 0.0000010000000000 ) |
| { |
| { |
| IkReal evalcond[1]; |
| bool bgotonextstatement = true; |
| do |
| { |
| evalcond[0]=IKabs(new_r01); |
| if( IKabs(evalcond[0]) < 0.0000050000000000 ) |
| { |
| bgotonextstatement=false; |
| { |
| IkReal j5eval[1]; |
| IkReal x912=new_r00*new_r00; |
| sj4=4.0e-5; |
| cj4=1.0; |
| j4=4.0e-5; |
| if((((1.0)+(((-1.0)*(gconst12*gconst12))))) < -0.00001) |
| continue; |
| sj3=((-1.0)*(IKsqrt(((1.0)+(((-1.0)*(gconst12*gconst12))))))); |
| cj3=gconst12; |
| if( (gconst12) < -1-IKFAST_SINCOS_THRESH || (gconst12) > 1+IKFAST_SINCOS_THRESH ) |
| continue; |
| j3=((-1.0)*(IKacos(gconst12))); |
| new_r01=0; |
| CheckValue<IkReal> x913=IKPowWithIntegerCheck(((((-1.0000000016)*(new_r10*new_r10)))+(((-1.0)*x912))),-1); |
| if(!x913.valid){ |
| continue; |
| } |
| if((((-1.0)*x912*(x913.value))) < -0.00001) |
| continue; |
| IkReal gconst12=IKsqrt(((-1.0)*x912*(x913.value))); |
| j5eval[0]=new_r11; |
| if( IKabs(j5eval[0]) < 0.0000010000000000 ) |
| { |
| { |
| IkReal j5eval[2]; |
| IkReal x914=new_r00*new_r00; |
| sj4=4.0e-5; |
| cj4=1.0; |
| j4=4.0e-5; |
| if((((1.0)+(((-1.0)*(gconst12*gconst12))))) < -0.00001) |
| continue; |
| sj3=((-1.0)*(IKsqrt(((1.0)+(((-1.0)*(gconst12*gconst12))))))); |
| cj3=gconst12; |
| if( (gconst12) < -1-IKFAST_SINCOS_THRESH || (gconst12) > 1+IKFAST_SINCOS_THRESH ) |
| continue; |
| j3=((-1.0)*(IKacos(gconst12))); |
| new_r01=0; |
| CheckValue<IkReal> x915=IKPowWithIntegerCheck(((((-1.0000000016)*(new_r10*new_r10)))+(((-1.0)*x914))),-1); |
| if(!x915.valid){ |
| continue; |
| } |
| if((((-1.0)*x914*(x915.value))) < -0.00001) |
| continue; |
| IkReal gconst12=IKsqrt(((-1.0)*x914*(x915.value))); |
| j5eval[0]=new_r10; |
| j5eval[1]=new_r11; |
| if( IKabs(j5eval[0]) < 0.0000010000000000 || IKabs(j5eval[1]) < 0.0000010000000000 ) |
| { |
| { |
| IkReal j5eval[2]; |
| IkReal x916=new_r00*new_r00; |
| sj4=4.0e-5; |
| cj4=1.0; |
| j4=4.0e-5; |
| if((((1.0)+(((-1.0)*(gconst12*gconst12))))) < -0.00001) |
| continue; |
| sj3=((-1.0)*(IKsqrt(((1.0)+(((-1.0)*(gconst12*gconst12))))))); |
| cj3=gconst12; |
| if( (gconst12) < -1-IKFAST_SINCOS_THRESH || (gconst12) > 1+IKFAST_SINCOS_THRESH ) |
| continue; |
| j3=((-1.0)*(IKacos(gconst12))); |
| new_r01=0; |
| CheckValue<IkReal> x917=IKPowWithIntegerCheck(((((-1.0000000016)*(new_r10*new_r10)))+(((-1.0)*x916))),-1); |
| if(!x917.valid){ |
| continue; |
| } |
| if((((-1.0)*x916*(x917.value))) < -0.00001) |
| continue; |
| IkReal gconst12=IKsqrt(((-1.0)*x916*(x917.value))); |
| j5eval[0]=new_r00; |
| j5eval[1]=new_r11; |
| if( IKabs(j5eval[0]) < 0.0000010000000000 || IKabs(j5eval[1]) < 0.0000010000000000 ) |
| { |
| continue; // 3 cases reached |
| |
| } else |
| { |
| { |
| IkReal j5array[1], cj5array[1], sj5array[1]; |
| bool j5valid[1]={false}; |
| _nj5 = 1; |
| CheckValue<IkReal> x919=IKPowWithIntegerCheck(new_r11,-1); |
| if(!x919.valid){ |
| continue; |
| } |
| IkReal x918=x919.value; |
| CheckValue<IkReal> x920=IKPowWithIntegerCheck(new_r00,-1); |
| if(!x920.valid){ |
| continue; |
| } |
| if((((1.0)+(((-1.0)*(gconst12*gconst12))))) < -0.00001) |
| continue; |
| if( IKabs((x918*(x920.value)*(((((-1.0)*gconst12*new_r10))+((new_r11*(IKsqrt(((1.0)+(((-1.0)*(gconst12*gconst12)))))))))))) < IKFAST_ATAN2_MAGTHRESH && IKabs((gconst12*x918)) < IKFAST_ATAN2_MAGTHRESH && IKabs(IKsqr((x918*(x920.value)*(((((-1.0)*gconst12*new_r10))+((new_r11*(IKsqrt(((1.0)+(((-1.0)*(gconst12*gconst12))))))))))))+IKsqr((gconst12*x918))-1) <= IKFAST_SINCOS_THRESH ) |
| continue; |
| j5array[0]=IKatan2((x918*(x920.value)*(((((-1.0)*gconst12*new_r10))+((new_r11*(IKsqrt(((1.0)+(((-1.0)*(gconst12*gconst12))))))))))), (gconst12*x918)); |
| sj5array[0]=IKsin(j5array[0]); |
| cj5array[0]=IKcos(j5array[0]); |
| if( j5array[0] > IKPI ) |
| { |
| j5array[0]-=IK2PI; |
| } |
| else if( j5array[0] < -IKPI ) |
| { j5array[0]+=IK2PI; |
| } |
| j5valid[0] = true; |
| for(int ij5 = 0; ij5 < 1; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < 1; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| { |
| IkReal evalcond[10]; |
| IkReal x921=IKcos(j5); |
| IkReal x922=IKsin(j5); |
| IkReal x923=((1.0)*gconst12); |
| IkReal x924=(gconst12*x921); |
| IkReal x925=(new_r11*x922); |
| IkReal x926=(new_r00*x921); |
| IkReal x927=(gconst12*x922); |
| IkReal x928=(new_r10*x922); |
| if((((1.0)+(((-1.0)*gconst12*x923)))) < -0.00001) |
| continue; |
| IkReal x929=IKsqrt(((1.0)+(((-1.0)*gconst12*x923)))); |
| IkReal x930=((1.0)*x929); |
| IkReal x931=((1.0000000008)*x929); |
| evalcond[0]=((((-1.0)*x923))+((new_r11*x921))); |
| evalcond[1]=((((-1.0000000008)*gconst12))+(((-1.0)*x928))+x926); |
| evalcond[2]=((((-1.0000000008)*x925))+x929); |
| evalcond[3]=((((-1.0)*x925))+x931); |
| evalcond[4]=(((new_r00*x922))+((new_r10*x921))+(((-1.0)*x930))); |
| evalcond[5]=((((-1.0)*x923))+(((-1.0000000008)*x928))+(((1.0000000008)*x926))); |
| evalcond[6]=(((x921*x931))+(((-1.0)*x922*x923))); |
| evalcond[7]=((((-1.0000000008)*x924))+new_r00+(((-1.0)*x922*x930))); |
| evalcond[8]=((((1.0000000008)*x927))+(((-1.0)*x921*x930))+new_r10); |
| evalcond[9]=((((-1.0)*x921*x923))+new_r11+(((-1.0)*x922*x931))); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[2]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[3]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[4]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[5]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[6]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[7]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[8]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[9]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| |
| } |
| |
| } |
| |
| } else |
| { |
| { |
| IkReal j5array[1], cj5array[1], sj5array[1]; |
| bool j5valid[1]={false}; |
| _nj5 = 1; |
| CheckValue<IkReal> x933=IKPowWithIntegerCheck(new_r11,-1); |
| if(!x933.valid){ |
| continue; |
| } |
| IkReal x932=x933.value; |
| CheckValue<IkReal> x934=IKPowWithIntegerCheck(new_r10,-1); |
| if(!x934.valid){ |
| continue; |
| } |
| if( IKabs(((4.0e-5)*x932*(x934.value)*(((((25000.0)*gconst12*new_r00))+(((-25000.00002)*gconst12*new_r11)))))) < IKFAST_ATAN2_MAGTHRESH && IKabs((gconst12*x932)) < IKFAST_ATAN2_MAGTHRESH && IKabs(IKsqr(((4.0e-5)*x932*(x934.value)*(((((25000.0)*gconst12*new_r00))+(((-25000.00002)*gconst12*new_r11))))))+IKsqr((gconst12*x932))-1) <= IKFAST_SINCOS_THRESH ) |
| continue; |
| j5array[0]=IKatan2(((4.0e-5)*x932*(x934.value)*(((((25000.0)*gconst12*new_r00))+(((-25000.00002)*gconst12*new_r11))))), (gconst12*x932)); |
| sj5array[0]=IKsin(j5array[0]); |
| cj5array[0]=IKcos(j5array[0]); |
| if( j5array[0] > IKPI ) |
| { |
| j5array[0]-=IK2PI; |
| } |
| else if( j5array[0] < -IKPI ) |
| { j5array[0]+=IK2PI; |
| } |
| j5valid[0] = true; |
| for(int ij5 = 0; ij5 < 1; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < 1; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| { |
| IkReal evalcond[10]; |
| IkReal x935=IKcos(j5); |
| IkReal x936=IKsin(j5); |
| IkReal x937=((1.0)*gconst12); |
| IkReal x938=(gconst12*x935); |
| IkReal x939=(new_r11*x936); |
| IkReal x940=(new_r00*x935); |
| IkReal x941=(gconst12*x936); |
| IkReal x942=(new_r10*x936); |
| if((((1.0)+(((-1.0)*gconst12*x937)))) < -0.00001) |
| continue; |
| IkReal x943=IKsqrt(((1.0)+(((-1.0)*gconst12*x937)))); |
| IkReal x944=((1.0)*x943); |
| IkReal x945=((1.0000000008)*x943); |
| evalcond[0]=(((new_r11*x935))+(((-1.0)*x937))); |
| evalcond[1]=((((-1.0)*x942))+(((-1.0000000008)*gconst12))+x940); |
| evalcond[2]=((((-1.0000000008)*x939))+x943); |
| evalcond[3]=((((-1.0)*x939))+x945); |
| evalcond[4]=((((-1.0)*x944))+((new_r00*x936))+((new_r10*x935))); |
| evalcond[5]=((((1.0000000008)*x940))+(((-1.0000000008)*x942))+(((-1.0)*x937))); |
| evalcond[6]=(((x935*x945))+(((-1.0)*x936*x937))); |
| evalcond[7]=((((-1.0000000008)*x938))+(((-1.0)*x936*x944))+new_r00); |
| evalcond[8]=((((1.0000000008)*x941))+new_r10+(((-1.0)*x935*x944))); |
| evalcond[9]=((((-1.0)*x935*x937))+(((-1.0)*x936*x945))+new_r11); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[2]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[3]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[4]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[5]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[6]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[7]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[8]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[9]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| |
| } |
| |
| } |
| |
| } else |
| { |
| { |
| IkReal j5array[1], cj5array[1], sj5array[1]; |
| bool j5valid[1]={false}; |
| _nj5 = 1; |
| CheckValue<IkReal> x947=IKPowWithIntegerCheck(new_r11,-1); |
| if(!x947.valid){ |
| continue; |
| } |
| IkReal x946=x947.value; |
| if((((1.0)+(((-1.0)*(gconst12*gconst12))))) < -0.00001) |
| continue; |
| if( IKabs(((0.9999999992)*x946*(IKsqrt(((1.0)+(((-1.0)*(gconst12*gconst12)))))))) < IKFAST_ATAN2_MAGTHRESH && IKabs((gconst12*x946)) < IKFAST_ATAN2_MAGTHRESH && IKabs(IKsqr(((0.9999999992)*x946*(IKsqrt(((1.0)+(((-1.0)*(gconst12*gconst12))))))))+IKsqr((gconst12*x946))-1) <= IKFAST_SINCOS_THRESH ) |
| continue; |
| j5array[0]=IKatan2(((0.9999999992)*x946*(IKsqrt(((1.0)+(((-1.0)*(gconst12*gconst12))))))), (gconst12*x946)); |
| sj5array[0]=IKsin(j5array[0]); |
| cj5array[0]=IKcos(j5array[0]); |
| if( j5array[0] > IKPI ) |
| { |
| j5array[0]-=IK2PI; |
| } |
| else if( j5array[0] < -IKPI ) |
| { j5array[0]+=IK2PI; |
| } |
| j5valid[0] = true; |
| for(int ij5 = 0; ij5 < 1; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < 1; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| { |
| IkReal evalcond[10]; |
| IkReal x948=IKcos(j5); |
| IkReal x949=IKsin(j5); |
| IkReal x950=((1.0)*gconst12); |
| IkReal x951=(gconst12*x948); |
| IkReal x952=(new_r11*x949); |
| IkReal x953=(new_r00*x948); |
| IkReal x954=(gconst12*x949); |
| IkReal x955=(new_r10*x949); |
| if((((1.0)+(((-1.0)*gconst12*x950)))) < -0.00001) |
| continue; |
| IkReal x956=IKsqrt(((1.0)+(((-1.0)*gconst12*x950)))); |
| IkReal x957=((1.0)*x956); |
| IkReal x958=((1.0000000008)*x956); |
| evalcond[0]=(((new_r11*x948))+(((-1.0)*x950))); |
| evalcond[1]=((((-1.0)*x955))+(((-1.0000000008)*gconst12))+x953); |
| evalcond[2]=((((-1.0000000008)*x952))+x956); |
| evalcond[3]=((((-1.0)*x952))+x958); |
| evalcond[4]=(((new_r00*x949))+((new_r10*x948))+(((-1.0)*x957))); |
| evalcond[5]=((((1.0000000008)*x953))+(((-1.0000000008)*x955))+(((-1.0)*x950))); |
| evalcond[6]=(((x948*x958))+(((-1.0)*x949*x950))); |
| evalcond[7]=((((-1.0000000008)*x951))+(((-1.0)*x949*x957))+new_r00); |
| evalcond[8]=((((1.0000000008)*x954))+new_r10+(((-1.0)*x948*x957))); |
| evalcond[9]=((((-1.0)*x949*x958))+new_r11+(((-1.0)*x948*x950))); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[2]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[3]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[4]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[5]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[6]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[7]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[8]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[9]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| |
| } |
| |
| } |
| |
| } |
| } while(0); |
| if( bgotonextstatement ) |
| { |
| bool bgotonextstatement = true; |
| do |
| { |
| evalcond[0]=((IKabs(new_r11))+(IKabs(new_r00))); |
| if( IKabs(evalcond[0]) < 0.0000050000000000 ) |
| { |
| bgotonextstatement=false; |
| { |
| IkReal j5array[2], cj5array[2], sj5array[2]; |
| bool j5valid[2]={false}; |
| _nj5 = 2; |
| cj5array[0]=new_r10; |
| if( cj5array[0] >= -1-IKFAST_SINCOS_THRESH && cj5array[0] <= 1+IKFAST_SINCOS_THRESH ) |
| { |
| j5valid[0] = j5valid[1] = true; |
| j5array[0] = IKacos(cj5array[0]); |
| sj5array[0] = IKsin(j5array[0]); |
| cj5array[1] = cj5array[0]; |
| j5array[1] = -j5array[0]; |
| sj5array[1] = -sj5array[0]; |
| } |
| else if( isnan(cj5array[0]) ) |
| { |
| // probably any value will work |
| j5valid[0] = true; |
| cj5array[0] = 1; sj5array[0] = 0; j5array[0] = 0; |
| } |
| for(int ij5 = 0; ij5 < 2; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < 2; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| { |
| IkReal evalcond[9]; |
| IkReal x959=IKsin(j5); |
| IkReal x960=IKcos(j5); |
| IkReal x961=((1.0000000008)*x960); |
| IkReal x962=((-1.0000000008)*x959); |
| IkReal x963=((-1.0)*x959); |
| evalcond[0]=(new_r01*x959); |
| evalcond[1]=x963; |
| evalcond[2]=(new_r10*x963); |
| evalcond[3]=((-1.0)+((new_r10*x960))); |
| evalcond[4]=x962; |
| evalcond[5]=(new_r10*x962); |
| evalcond[6]=(new_r01+x961); |
| evalcond[7]=((1.0000000008)+((new_r01*x960))); |
| evalcond[8]=((1.0)+((new_r01*x961))); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[2]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[3]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[4]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[5]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[6]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[7]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[8]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| |
| } |
| } while(0); |
| if( bgotonextstatement ) |
| { |
| bool bgotonextstatement = true; |
| do |
| { |
| evalcond[0]=((IKabs(new_r10))+(IKabs(new_r00))); |
| if( IKabs(evalcond[0]) < 0.0000050000000000 ) |
| { |
| bgotonextstatement=false; |
| { |
| IkReal j5array[1], cj5array[1], sj5array[1]; |
| bool j5valid[1]={false}; |
| _nj5 = 1; |
| if( IKabs(((0.9999999992)*new_r11)) < IKFAST_ATAN2_MAGTHRESH && IKabs(((-0.9999999992)*new_r01)) < IKFAST_ATAN2_MAGTHRESH && IKabs(IKsqr(((0.9999999992)*new_r11))+IKsqr(((-0.9999999992)*new_r01))-1) <= IKFAST_SINCOS_THRESH ) |
| continue; |
| j5array[0]=IKatan2(((0.9999999992)*new_r11), ((-0.9999999992)*new_r01)); |
| sj5array[0]=IKsin(j5array[0]); |
| cj5array[0]=IKcos(j5array[0]); |
| if( j5array[0] > IKPI ) |
| { |
| j5array[0]-=IK2PI; |
| } |
| else if( j5array[0] < -IKPI ) |
| { j5array[0]+=IK2PI; |
| } |
| j5valid[0] = true; |
| for(int ij5 = 0; ij5 < 1; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < 1; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| { |
| IkReal evalcond[7]; |
| IkReal x964=IKcos(j5); |
| IkReal x965=IKsin(j5); |
| IkReal x966=((1.0000000008)*x965); |
| IkReal x967=((1.0000000008)*x964); |
| evalcond[0]=((-1.0)*x965); |
| evalcond[1]=((-1.0)*x964); |
| evalcond[2]=(new_r01+x967); |
| evalcond[3]=(new_r11+(((-1.0)*x966))); |
| evalcond[4]=(((new_r11*x964))+((new_r01*x965))); |
| evalcond[5]=((1.0000000008)+((new_r01*x964))+(((-1.0)*new_r11*x965))); |
| evalcond[6]=((1.0)+((new_r01*x967))+(((-1.0)*new_r11*x966))); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[2]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[3]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[4]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[5]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[6]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| |
| } |
| } while(0); |
| if( bgotonextstatement ) |
| { |
| bool bgotonextstatement = true; |
| do |
| { |
| if( 1 ) |
| { |
| bgotonextstatement=false; |
| continue; // branch miss [j5] |
| |
| } |
| } while(0); |
| if( bgotonextstatement ) |
| { |
| } |
| } |
| } |
| } |
| } |
| |
| } else |
| { |
| { |
| IkReal j5array[1], cj5array[1], sj5array[1]; |
| bool j5valid[1]={false}; |
| _nj5 = 1; |
| CheckValue<IkReal> x975=IKPowWithIntegerCheck(new_r01,-1); |
| if(!x975.valid){ |
| continue; |
| } |
| IkReal x968=x975.value; |
| IkReal x969=(gconst12*x968); |
| IkReal x970=((25000.0)*new_r00); |
| if((((1.0)+(((-1.0)*(gconst12*gconst12))))) < -0.00001) |
| continue; |
| IkReal x971=IKsqrt(((1.0)+(((-1.0)*(gconst12*gconst12))))); |
| IkReal x972=((25000.0)*new_r11*x971); |
| CheckValue<IkReal> x976=IKPowWithIntegerCheck(((((25000.00002)*gconst12*new_r01))+(((-1.0)*x972))),-1); |
| if(!x976.valid){ |
| continue; |
| } |
| IkReal x973=x976.value; |
| IkReal x974=((25000.0)*new_r11*x973); |
| CheckValue<IkReal> x977=IKPowWithIntegerCheck(((((25000.00002)*gconst12*new_r01))+(((-25000.0)*new_r11*x971))),-1); |
| if(!x977.valid){ |
| continue; |
| } |
| if( IKabs(((((-1.0)*new_r11*x970*x973))+((x969*x972*(x977.value)))+x969)) < IKFAST_ATAN2_MAGTHRESH && IKabs((x973*((((new_r01*x970))+(((-25000.0)*gconst12*x971)))))) < IKFAST_ATAN2_MAGTHRESH && IKabs(IKsqr(((((-1.0)*new_r11*x970*x973))+((x969*x972*(x977.value)))+x969))+IKsqr((x973*((((new_r01*x970))+(((-25000.0)*gconst12*x971))))))-1) <= IKFAST_SINCOS_THRESH ) |
| continue; |
| j5array[0]=IKatan2(((((-1.0)*new_r11*x970*x973))+((x969*x972*(x977.value)))+x969), (x973*((((new_r01*x970))+(((-25000.0)*gconst12*x971)))))); |
| sj5array[0]=IKsin(j5array[0]); |
| cj5array[0]=IKcos(j5array[0]); |
| if( j5array[0] > IKPI ) |
| { |
| j5array[0]-=IK2PI; |
| } |
| else if( j5array[0] < -IKPI ) |
| { j5array[0]+=IK2PI; |
| } |
| j5valid[0] = true; |
| for(int ij5 = 0; ij5 < 1; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < 1; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| { |
| IkReal evalcond[10]; |
| IkReal x978=IKcos(j5); |
| IkReal x979=IKsin(j5); |
| IkReal x980=((1.0)*gconst12); |
| IkReal x981=(gconst12*x978); |
| IkReal x982=(new_r11*x979); |
| IkReal x983=(new_r01*x978); |
| IkReal x984=(new_r00*x978); |
| IkReal x985=(gconst12*x979); |
| IkReal x986=(new_r10*x979); |
| IkReal x987=x971; |
| IkReal x988=((1.0)*x987); |
| IkReal x989=((1.0000000008)*x987); |
| evalcond[0]=((((-1.0)*x980))+((new_r01*x979))+((new_r11*x978))); |
| evalcond[1]=((((-1.0)*x986))+(((-1.0000000008)*gconst12))+x984); |
| evalcond[2]=((((-1.0)*x988))+((new_r10*x978))+((new_r00*x979))); |
| evalcond[3]=((((-1.0)*x980))+(((-1.0000000008)*x986))+(((1.0000000008)*x984))); |
| evalcond[4]=((((-1.0000000008)*x981))+new_r00+(((-1.0)*x979*x988))); |
| evalcond[5]=((((-1.0)*x978*x988))+new_r10+(((1.0000000008)*x985))); |
| evalcond[6]=(new_r01+(((-1.0)*x979*x980))+((x978*x989))); |
| evalcond[7]=((((-1.0)*x978*x980))+new_r11+(((-1.0)*x979*x989))); |
| evalcond[8]=((((-1.0)*x982))+x989+x983); |
| evalcond[9]=((((-1.0000000008)*x982))+(((1.0000000008)*x983))+x987); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[2]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[3]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[4]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[5]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[6]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[7]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[8]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[9]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| |
| } |
| |
| } |
| |
| } else |
| { |
| { |
| IkReal j5array[1], cj5array[1], sj5array[1]; |
| bool j5valid[1]={false}; |
| _nj5 = 1; |
| IkReal x990=((1.0)*new_r11); |
| if((((1.0)+(((-1.0)*(gconst12*gconst12))))) < -0.00001) |
| continue; |
| IkReal x991=IKsqrt(((1.0)+(((-1.0)*(gconst12*gconst12))))); |
| CheckValue<IkReal> x992=IKPowWithIntegerCheck(IKsign(((((-1.0)*new_r00*x990))+((new_r01*new_r10)))),-1); |
| if(!x992.valid){ |
| continue; |
| } |
| CheckValue<IkReal> x993 = IKatan2WithCheck(IkReal(((((-1.0)*x990*x991))+((gconst12*new_r10)))),IkReal(((((-1.0)*gconst12*new_r00))+((new_r01*x991)))),IKFAST_ATAN2_MAGTHRESH); |
| if(!x993.valid){ |
| continue; |
| } |
| j5array[0]=((-1.5707963267949)+(((1.5707963267949)*(x992.value)))+(x993.value)); |
| sj5array[0]=IKsin(j5array[0]); |
| cj5array[0]=IKcos(j5array[0]); |
| if( j5array[0] > IKPI ) |
| { |
| j5array[0]-=IK2PI; |
| } |
| else if( j5array[0] < -IKPI ) |
| { j5array[0]+=IK2PI; |
| } |
| j5valid[0] = true; |
| for(int ij5 = 0; ij5 < 1; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < 1; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| { |
| IkReal evalcond[10]; |
| IkReal x994=IKcos(j5); |
| IkReal x995=IKsin(j5); |
| IkReal x996=((1.0)*gconst12); |
| IkReal x997=(gconst12*x994); |
| IkReal x998=(new_r11*x995); |
| IkReal x999=(new_r01*x994); |
| IkReal x1000=(new_r00*x994); |
| IkReal x1001=(gconst12*x995); |
| IkReal x1002=(new_r10*x995); |
| IkReal x1003=x991; |
| IkReal x1004=((1.0)*x1003); |
| IkReal x1005=((1.0000000008)*x1003); |
| evalcond[0]=(((new_r11*x994))+(((-1.0)*x996))+((new_r01*x995))); |
| evalcond[1]=((((-1.0)*x1002))+x1000+(((-1.0000000008)*gconst12))); |
| evalcond[2]=((((-1.0)*x1004))+((new_r10*x994))+((new_r00*x995))); |
| evalcond[3]=((((-1.0000000008)*x1002))+(((1.0000000008)*x1000))+(((-1.0)*x996))); |
| evalcond[4]=((((-1.0000000008)*x997))+(((-1.0)*x1004*x995))+new_r00); |
| evalcond[5]=((((1.0000000008)*x1001))+(((-1.0)*x1004*x994))+new_r10); |
| evalcond[6]=((((-1.0)*x995*x996))+new_r01+((x1005*x994))); |
| evalcond[7]=((((-1.0)*x994*x996))+new_r11+(((-1.0)*x1005*x995))); |
| evalcond[8]=((((-1.0)*x998))+x1005+x999); |
| evalcond[9]=(x1003+(((-1.0000000008)*x998))+(((1.0000000008)*x999))); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[2]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[3]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[4]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[5]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[6]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[7]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[8]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[9]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| |
| } |
| |
| } |
| |
| } else |
| { |
| { |
| IkReal j5array[1], cj5array[1], sj5array[1]; |
| bool j5valid[1]={false}; |
| _nj5 = 1; |
| IkReal x1006=((25000.00002)*gconst12); |
| IkReal x1007=((25000.0)*new_r10); |
| IkReal x1008=((25000.0)*new_r00); |
| CheckValue<IkReal> x1009=IKPowWithIntegerCheck(IKsign((((new_r11*x1007))+((new_r01*x1008)))),-1); |
| if(!x1009.valid){ |
| continue; |
| } |
| CheckValue<IkReal> x1010 = IKatan2WithCheck(IkReal((((gconst12*x1008))+(((-1.0)*new_r11*x1006)))),IkReal((((gconst12*x1007))+((new_r01*x1006)))),IKFAST_ATAN2_MAGTHRESH); |
| if(!x1010.valid){ |
| continue; |
| } |
| j5array[0]=((-1.5707963267949)+(((1.5707963267949)*(x1009.value)))+(x1010.value)); |
| sj5array[0]=IKsin(j5array[0]); |
| cj5array[0]=IKcos(j5array[0]); |
| if( j5array[0] > IKPI ) |
| { |
| j5array[0]-=IK2PI; |
| } |
| else if( j5array[0] < -IKPI ) |
| { j5array[0]+=IK2PI; |
| } |
| j5valid[0] = true; |
| for(int ij5 = 0; ij5 < 1; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < 1; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| { |
| IkReal evalcond[10]; |
| IkReal x1011=IKcos(j5); |
| IkReal x1012=IKsin(j5); |
| IkReal x1013=((1.0)*gconst12); |
| IkReal x1014=(gconst12*x1011); |
| IkReal x1015=(new_r11*x1012); |
| IkReal x1016=(new_r01*x1011); |
| IkReal x1017=(new_r00*x1011); |
| IkReal x1018=(gconst12*x1012); |
| IkReal x1019=(new_r10*x1012); |
| if((((1.0)+(((-1.0)*gconst12*x1013)))) < -0.00001) |
| continue; |
| IkReal x1020=IKsqrt(((1.0)+(((-1.0)*gconst12*x1013)))); |
| IkReal x1021=((1.0)*x1020); |
| IkReal x1022=((1.0000000008)*x1020); |
| evalcond[0]=(((new_r11*x1011))+(((-1.0)*x1013))+((new_r01*x1012))); |
| evalcond[1]=(x1017+(((-1.0000000008)*gconst12))+(((-1.0)*x1019))); |
| evalcond[2]=(((new_r10*x1011))+(((-1.0)*x1021))+((new_r00*x1012))); |
| evalcond[3]=((((-1.0000000008)*x1019))+(((-1.0)*x1013))+(((1.0000000008)*x1017))); |
| evalcond[4]=((((-1.0000000008)*x1014))+new_r00+(((-1.0)*x1012*x1021))); |
| evalcond[5]=((((1.0000000008)*x1018))+new_r10+(((-1.0)*x1011*x1021))); |
| evalcond[6]=((((-1.0)*x1012*x1013))+((x1011*x1022))+new_r01); |
| evalcond[7]=((((-1.0)*x1011*x1013))+new_r11+(((-1.0)*x1012*x1022))); |
| evalcond[8]=(x1016+x1022+(((-1.0)*x1015))); |
| evalcond[9]=((((-1.0000000008)*x1015))+x1020+(((1.0000000008)*x1016))); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[2]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[3]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[4]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[5]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[6]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[7]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[8]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[9]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| |
| } |
| |
| } |
| |
| } |
| } while(0); |
| if( bgotonextstatement ) |
| { |
| bool bgotonextstatement = true; |
| do |
| { |
| IkReal x1023=new_r00*new_r00; |
| CheckValue<IkReal> x1024=IKPowWithIntegerCheck(((((-1.0)*x1023))+(((-1.0000000016)*(new_r10*new_r10)))),-1); |
| if(!x1024.valid){ |
| continue; |
| } |
| if((((-1.0)*x1023*(x1024.value))) < -0.00001) |
| continue; |
| IkReal gconst13=((-1.0)*(IKsqrt(((-1.0)*x1023*(x1024.value))))); |
| evalcond[0]=((-3.14159265358979)+(IKfmod(((3.14159265358979)+(IKabs(((-1.0)+(IKsign(sj3)))))+(IKabs((cj3+(((-1.0)*gconst13)))))), 6.28318530717959))); |
| if( IKabs(evalcond[0]) < 0.0000050000000000 ) |
| { |
| bgotonextstatement=false; |
| { |
| IkReal j5eval[2]; |
| IkReal x1025=new_r00*new_r00; |
| sj4=4.0e-5; |
| cj4=1.0; |
| j4=4.0e-5; |
| if((((1.0)+(((-1.0)*(gconst13*gconst13))))) < -0.00001) |
| continue; |
| sj3=IKsqrt(((1.0)+(((-1.0)*(gconst13*gconst13))))); |
| cj3=gconst13; |
| if( (gconst13) < -1-IKFAST_SINCOS_THRESH || (gconst13) > 1+IKFAST_SINCOS_THRESH ) |
| continue; |
| j3=IKacos(gconst13); |
| CheckValue<IkReal> x1026=IKPowWithIntegerCheck(((((-1.0)*x1025))+(((-1.0000000016)*(new_r10*new_r10)))),-1); |
| if(!x1026.valid){ |
| continue; |
| } |
| if((((-1.0)*x1025*(x1026.value))) < -0.00001) |
| continue; |
| IkReal gconst13=((-1.0)*(IKsqrt(((-1.0)*x1025*(x1026.value))))); |
| IkReal x1027=(new_r00*new_r01); |
| IkReal x1028=(new_r10*new_r11); |
| j5eval[0]=(x1027+x1028); |
| j5eval[1]=IKsign(((((25000.0)*x1028))+(((25000.0)*x1027)))); |
| if( IKabs(j5eval[0]) < 0.0000010000000000 || IKabs(j5eval[1]) < 0.0000010000000000 ) |
| { |
| { |
| IkReal j5eval[2]; |
| IkReal x1029=new_r00*new_r00; |
| sj4=4.0e-5; |
| cj4=1.0; |
| j4=4.0e-5; |
| if((((1.0)+(((-1.0)*(gconst13*gconst13))))) < -0.00001) |
| continue; |
| sj3=IKsqrt(((1.0)+(((-1.0)*(gconst13*gconst13))))); |
| cj3=gconst13; |
| if( (gconst13) < -1-IKFAST_SINCOS_THRESH || (gconst13) > 1+IKFAST_SINCOS_THRESH ) |
| continue; |
| j3=IKacos(gconst13); |
| CheckValue<IkReal> x1030=IKPowWithIntegerCheck(((((-1.0)*x1029))+(((-1.0000000016)*(new_r10*new_r10)))),-1); |
| if(!x1030.valid){ |
| continue; |
| } |
| if((((-1.0)*x1029*(x1030.value))) < -0.00001) |
| continue; |
| IkReal gconst13=((-1.0)*(IKsqrt(((-1.0)*x1029*(x1030.value))))); |
| IkReal x1031=(((new_r01*new_r10))+(((-1.0)*new_r00*new_r11))); |
| j5eval[0]=x1031; |
| j5eval[1]=IKsign(x1031); |
| if( IKabs(j5eval[0]) < 0.0000010000000000 || IKabs(j5eval[1]) < 0.0000010000000000 ) |
| { |
| { |
| IkReal j5eval[1]; |
| IkReal x1032=new_r00*new_r00; |
| sj4=4.0e-5; |
| cj4=1.0; |
| j4=4.0e-5; |
| if((((1.0)+(((-1.0)*(gconst13*gconst13))))) < -0.00001) |
| continue; |
| sj3=IKsqrt(((1.0)+(((-1.0)*(gconst13*gconst13))))); |
| cj3=gconst13; |
| if( (gconst13) < -1-IKFAST_SINCOS_THRESH || (gconst13) > 1+IKFAST_SINCOS_THRESH ) |
| continue; |
| j3=IKacos(gconst13); |
| CheckValue<IkReal> x1033=IKPowWithIntegerCheck(((((-1.0)*x1032))+(((-1.0000000016)*(new_r10*new_r10)))),-1); |
| if(!x1033.valid){ |
| continue; |
| } |
| if((((-1.0)*x1032*(x1033.value))) < -0.00001) |
| continue; |
| IkReal gconst13=((-1.0)*(IKsqrt(((-1.0)*x1032*(x1033.value))))); |
| j5eval[0]=new_r01; |
| if( IKabs(j5eval[0]) < 0.0000010000000000 ) |
| { |
| { |
| IkReal evalcond[1]; |
| bool bgotonextstatement = true; |
| do |
| { |
| evalcond[0]=((IKabs(new_r11))+(IKabs(new_r01))); |
| if( IKabs(evalcond[0]) < 0.0000050000000000 ) |
| { |
| bgotonextstatement=false; |
| { |
| IkReal j5eval[2]; |
| IkReal x1034=new_r10*new_r10; |
| sj4=4.0e-5; |
| cj4=1.0; |
| j4=4.0e-5; |
| if((((1.0)+(((-1.0)*(gconst13*gconst13))))) < -0.00001) |
| continue; |
| sj3=IKsqrt(((1.0)+(((-1.0)*(gconst13*gconst13))))); |
| cj3=gconst13; |
| if( (gconst13) < -1-IKFAST_SINCOS_THRESH || (gconst13) > 1+IKFAST_SINCOS_THRESH ) |
| continue; |
| j3=IKacos(gconst13); |
| new_r11=0; |
| new_r01=0; |
| new_r22=0; |
| new_r20=0; |
| CheckValue<IkReal> x1035=IKPowWithIntegerCheck(((-1.0)+(((-1.6e-9)*x1034))),-1); |
| if(!x1035.valid){ |
| continue; |
| } |
| if((((x1035.value)*(((-1.0)+(((1.0)*x1034)))))) < -0.00001) |
| continue; |
| IkReal gconst13=((-1.0)*(IKsqrt(((x1035.value)*(((-1.0)+(((1.0)*x1034)))))))); |
| j5eval[0]=-1.0; |
| j5eval[1]=-1.0; |
| if( IKabs(j5eval[0]) < 0.0000010000000000 || IKabs(j5eval[1]) < 0.0000010000000000 ) |
| { |
| { |
| IkReal j5array[1], cj5array[1], sj5array[1]; |
| bool j5valid[1]={false}; |
| _nj5 = 1; |
| IkReal x1036=gconst13*gconst13; |
| IkReal x1037=new_r00*new_r00; |
| IkReal x1038=(gconst13*new_r10); |
| IkReal x1039=((1.0)+(((-1.0)*x1036))); |
| IkReal x1040=((3.90625000625e+17)*x1036); |
| if((x1039) < -0.00001) |
| continue; |
| IkReal x1041=IKsqrt(x1039); |
| IkReal x1042=(new_r00*x1041); |
| CheckValue<IkReal> x1043=IKPowWithIntegerCheck(((((-1.0)*x1040*(new_r10*new_r10)))+(((3.90625e+17)*x1037*(pow(x1039,1.0))))),-1); |
| if(!x1043.valid){ |
| continue; |
| } |
| CheckValue<IkReal> x1044=IKPowWithIntegerCheck(((((25000.0)*x1042))+(((-25000.00002)*x1038))),-1); |
| if(!x1044.valid){ |
| continue; |
| } |
| if( IKabs(((x1043.value)*(((((3.906250009375e+17)*x1038*(gconst13*gconst13)))+((x1040*x1042))+(((-3.906250003125e+17)*x1037*x1038))+(((-3.90625e+17)*x1042*(new_r00*new_r00))))))) < IKFAST_ATAN2_MAGTHRESH && IKabs(((x1044.value)*(((((-25000.0)*new_r00*new_r10))+(((25000.00002)*gconst13*x1041)))))) < IKFAST_ATAN2_MAGTHRESH && IKabs(IKsqr(((x1043.value)*(((((3.906250009375e+17)*x1038*(gconst13*gconst13)))+((x1040*x1042))+(((-3.906250003125e+17)*x1037*x1038))+(((-3.90625e+17)*x1042*(new_r00*new_r00)))))))+IKsqr(((x1044.value)*(((((-25000.0)*new_r00*new_r10))+(((25000.00002)*gconst13*x1041))))))-1) <= IKFAST_SINCOS_THRESH ) |
| continue; |
| j5array[0]=IKatan2(((x1043.value)*(((((3.906250009375e+17)*x1038*(gconst13*gconst13)))+((x1040*x1042))+(((-3.906250003125e+17)*x1037*x1038))+(((-3.90625e+17)*x1042*(new_r00*new_r00)))))), ((x1044.value)*(((((-25000.0)*new_r00*new_r10))+(((25000.00002)*gconst13*x1041)))))); |
| sj5array[0]=IKsin(j5array[0]); |
| cj5array[0]=IKcos(j5array[0]); |
| if( j5array[0] > IKPI ) |
| { |
| j5array[0]-=IK2PI; |
| } |
| else if( j5array[0] < -IKPI ) |
| { j5array[0]+=IK2PI; |
| } |
| j5valid[0] = true; |
| for(int ij5 = 0; ij5 < 1; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < 1; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| { |
| IkReal evalcond[7]; |
| IkReal x1045=IKcos(j5); |
| IkReal x1046=IKsin(j5); |
| IkReal x1047=((1.0000000008)*gconst13); |
| IkReal x1048=((1.0)*gconst13); |
| IkReal x1049=((1.0000000008)*x1046); |
| IkReal x1050=(new_r00*x1045); |
| if((((1.0)+(((-1.0)*gconst13*x1048)))) < -0.00001) |
| continue; |
| IkReal x1051=IKsqrt(((1.0)+(((-1.0)*gconst13*x1048)))); |
| IkReal x1052=(x1045*x1051); |
| evalcond[0]=(x1050+(((-1.0)*new_r10*x1046))+(((-1.0)*x1047))); |
| evalcond[1]=(x1051+((new_r00*x1046))+((new_r10*x1045))); |
| evalcond[2]=((((-1.0)*new_r10*x1049))+(((-1.0)*x1048))+(((1.0000000008)*x1050))); |
| evalcond[3]=((((-1.0)*x1045*x1047))+new_r00+((x1046*x1051))); |
| evalcond[4]=(x1052+new_r10+((x1046*x1047))); |
| evalcond[5]=((((-1.0)*x1046*x1048))+(((-1.0000000008)*x1052))); |
| evalcond[6]=((((-1.0)*x1045*x1048))+((x1049*x1051))); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[2]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[3]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[4]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[5]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[6]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| |
| } else |
| { |
| { |
| IkReal j5array[1], cj5array[1], sj5array[1]; |
| bool j5valid[1]={false}; |
| _nj5 = 1; |
| if((((1.0)+(((-1.0)*(gconst13*gconst13))))) < -0.00001) |
| continue; |
| IkReal x1053=IKsqrt(((1.0)+(((-1.0)*(gconst13*gconst13))))); |
| IkReal x1054=((25000.0)*x1053); |
| CheckValue<IkReal> x1055=IKPowWithIntegerCheck(IKsign(((((-25000.0)*(new_r10*new_r10)))+(((-25000.0)*(new_r00*new_r00))))),-1); |
| if(!x1055.valid){ |
| continue; |
| } |
| CheckValue<IkReal> x1056 = IKatan2WithCheck(IkReal(((((25000.00002)*gconst13*new_r10))+((new_r00*x1054)))),IkReal((((new_r10*x1054))+(((-25000.00002)*gconst13*new_r00)))),IKFAST_ATAN2_MAGTHRESH); |
| if(!x1056.valid){ |
| continue; |
| } |
| j5array[0]=((-1.5707963267949)+(((1.5707963267949)*(x1055.value)))+(x1056.value)); |
| sj5array[0]=IKsin(j5array[0]); |
| cj5array[0]=IKcos(j5array[0]); |
| if( j5array[0] > IKPI ) |
| { |
| j5array[0]-=IK2PI; |
| } |
| else if( j5array[0] < -IKPI ) |
| { j5array[0]+=IK2PI; |
| } |
| j5valid[0] = true; |
| for(int ij5 = 0; ij5 < 1; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < 1; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| { |
| IkReal evalcond[7]; |
| IkReal x1057=IKcos(j5); |
| IkReal x1058=IKsin(j5); |
| IkReal x1059=((1.0000000008)*gconst13); |
| IkReal x1060=((1.0)*gconst13); |
| IkReal x1061=((1.0000000008)*x1058); |
| IkReal x1062=(new_r00*x1057); |
| IkReal x1063=x1053; |
| IkReal x1064=(x1057*x1063); |
| evalcond[0]=((((-1.0)*x1059))+x1062+(((-1.0)*new_r10*x1058))); |
| evalcond[1]=(x1063+((new_r00*x1058))+((new_r10*x1057))); |
| evalcond[2]=((((-1.0)*new_r10*x1061))+(((1.0000000008)*x1062))+(((-1.0)*x1060))); |
| evalcond[3]=((((-1.0)*x1057*x1059))+new_r00+((x1058*x1063))); |
| evalcond[4]=(x1064+new_r10+((x1058*x1059))); |
| evalcond[5]=((((-1.0000000008)*x1064))+(((-1.0)*x1058*x1060))); |
| evalcond[6]=(((x1061*x1063))+(((-1.0)*x1057*x1060))); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[2]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[3]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[4]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[5]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[6]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| |
| } |
| |
| } |
| |
| } |
| } while(0); |
| if( bgotonextstatement ) |
| { |
| bool bgotonextstatement = true; |
| do |
| { |
| evalcond[0]=IKabs(new_r01); |
| if( IKabs(evalcond[0]) < 0.0000050000000000 ) |
| { |
| bgotonextstatement=false; |
| { |
| IkReal j5eval[3]; |
| IkReal x1065=new_r00*new_r00; |
| sj4=4.0e-5; |
| cj4=1.0; |
| j4=4.0e-5; |
| if((((1.0)+(((-1.0)*(gconst13*gconst13))))) < -0.00001) |
| continue; |
| sj3=IKsqrt(((1.0)+(((-1.0)*(gconst13*gconst13))))); |
| cj3=gconst13; |
| if( (gconst13) < -1-IKFAST_SINCOS_THRESH || (gconst13) > 1+IKFAST_SINCOS_THRESH ) |
| continue; |
| j3=IKacos(gconst13); |
| new_r01=0; |
| CheckValue<IkReal> x1066=IKPowWithIntegerCheck(((((-1.0000000016)*(new_r10*new_r10)))+(((-1.0)*x1065))),-1); |
| if(!x1066.valid){ |
| continue; |
| } |
| if((((-1.0)*x1065*(x1066.value))) < -0.00001) |
| continue; |
| IkReal gconst13=((-1.0)*(IKsqrt(((-1.0)*x1065*(x1066.value))))); |
| IkReal x1067=new_r10*new_r10; |
| IkReal x1068=new_r00*new_r00; |
| IkReal x1069=((1.0)*x1068); |
| j5eval[0]=new_r11; |
| j5eval[1]=IKsign(new_r11); |
| CheckValue<IkReal> x1070=IKPowWithIntegerCheck(((((625000000.0)*x1068))+(((625000001.0)*x1067))),-1); |
| if(!x1070.valid){ |
| continue; |
| } |
| CheckValue<IkReal> x1071=IKPowWithIntegerCheck(((((-1.0000000016)*x1067))+(((-1.0)*x1068))),-1); |
| if(!x1071.valid){ |
| continue; |
| } |
| j5eval[2]=((((625000002.0)*(pow(x1067,1.0))*(pow(x1070.value,1.0))))+(((-1.0)*x1069*(x1071.value)))); |
| if( IKabs(j5eval[0]) < 0.0000010000000000 || IKabs(j5eval[1]) < 0.0000010000000000 || IKabs(j5eval[2]) < 0.0000010000000000 ) |
| { |
| { |
| IkReal j5eval[2]; |
| IkReal x1072=new_r00*new_r00; |
| sj4=4.0e-5; |
| cj4=1.0; |
| j4=4.0e-5; |
| if((((1.0)+(((-1.0)*(gconst13*gconst13))))) < -0.00001) |
| continue; |
| sj3=IKsqrt(((1.0)+(((-1.0)*(gconst13*gconst13))))); |
| cj3=gconst13; |
| if( (gconst13) < -1-IKFAST_SINCOS_THRESH || (gconst13) > 1+IKFAST_SINCOS_THRESH ) |
| continue; |
| j3=IKacos(gconst13); |
| new_r01=0; |
| CheckValue<IkReal> x1073=IKPowWithIntegerCheck(((((-1.0000000016)*(new_r10*new_r10)))+(((-1.0)*x1072))),-1); |
| if(!x1073.valid){ |
| continue; |
| } |
| if((((-1.0)*x1072*(x1073.value))) < -0.00001) |
| continue; |
| IkReal gconst13=((-1.0)*(IKsqrt(((-1.0)*x1072*(x1073.value))))); |
| j5eval[0]=new_r10; |
| j5eval[1]=new_r11; |
| if( IKabs(j5eval[0]) < 0.0000010000000000 || IKabs(j5eval[1]) < 0.0000010000000000 ) |
| { |
| { |
| IkReal j5eval[2]; |
| IkReal x1074=new_r00*new_r00; |
| sj4=4.0e-5; |
| cj4=1.0; |
| j4=4.0e-5; |
| if((((1.0)+(((-1.0)*(gconst13*gconst13))))) < -0.00001) |
| continue; |
| sj3=IKsqrt(((1.0)+(((-1.0)*(gconst13*gconst13))))); |
| cj3=gconst13; |
| if( (gconst13) < -1-IKFAST_SINCOS_THRESH || (gconst13) > 1+IKFAST_SINCOS_THRESH ) |
| continue; |
| j3=IKacos(gconst13); |
| new_r01=0; |
| CheckValue<IkReal> x1075=IKPowWithIntegerCheck(((((-1.0000000016)*(new_r10*new_r10)))+(((-1.0)*x1074))),-1); |
| if(!x1075.valid){ |
| continue; |
| } |
| if((((-1.0)*x1074*(x1075.value))) < -0.00001) |
| continue; |
| IkReal gconst13=((-1.0)*(IKsqrt(((-1.0)*x1074*(x1075.value))))); |
| j5eval[0]=new_r00; |
| j5eval[1]=new_r11; |
| if( IKabs(j5eval[0]) < 0.0000010000000000 || IKabs(j5eval[1]) < 0.0000010000000000 ) |
| { |
| continue; // 3 cases reached |
| |
| } else |
| { |
| { |
| IkReal j5array[1], cj5array[1], sj5array[1]; |
| bool j5valid[1]={false}; |
| _nj5 = 1; |
| CheckValue<IkReal> x1077=IKPowWithIntegerCheck(new_r11,-1); |
| if(!x1077.valid){ |
| continue; |
| } |
| IkReal x1076=x1077.value; |
| CheckValue<IkReal> x1078=IKPowWithIntegerCheck(new_r00,-1); |
| if(!x1078.valid){ |
| continue; |
| } |
| if((((1.0)+(((-1.0)*(gconst13*gconst13))))) < -0.00001) |
| continue; |
| if( IKabs((x1076*(x1078.value)*(((((-1.0)*gconst13*new_r10))+(((-1.0)*new_r11*(IKsqrt(((1.0)+(((-1.0)*(gconst13*gconst13)))))))))))) < IKFAST_ATAN2_MAGTHRESH && IKabs((gconst13*x1076)) < IKFAST_ATAN2_MAGTHRESH && IKabs(IKsqr((x1076*(x1078.value)*(((((-1.0)*gconst13*new_r10))+(((-1.0)*new_r11*(IKsqrt(((1.0)+(((-1.0)*(gconst13*gconst13))))))))))))+IKsqr((gconst13*x1076))-1) <= IKFAST_SINCOS_THRESH ) |
| continue; |
| j5array[0]=IKatan2((x1076*(x1078.value)*(((((-1.0)*gconst13*new_r10))+(((-1.0)*new_r11*(IKsqrt(((1.0)+(((-1.0)*(gconst13*gconst13))))))))))), (gconst13*x1076)); |
| sj5array[0]=IKsin(j5array[0]); |
| cj5array[0]=IKcos(j5array[0]); |
| if( j5array[0] > IKPI ) |
| { |
| j5array[0]-=IK2PI; |
| } |
| else if( j5array[0] < -IKPI ) |
| { j5array[0]+=IK2PI; |
| } |
| j5valid[0] = true; |
| for(int ij5 = 0; ij5 < 1; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < 1; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| { |
| IkReal evalcond[10]; |
| IkReal x1079=IKcos(j5); |
| IkReal x1080=IKsin(j5); |
| IkReal x1081=((1.0)*gconst13); |
| IkReal x1082=((1.0000000008)*x1080); |
| IkReal x1083=((1.0)*x1080); |
| IkReal x1084=((1.0000000008)*x1079); |
| if((((1.0)+(((-1.0)*gconst13*x1081)))) < -0.00001) |
| continue; |
| IkReal x1085=IKsqrt(((1.0)+(((-1.0)*gconst13*x1081)))); |
| evalcond[0]=(((new_r11*x1079))+(((-1.0)*x1081))); |
| evalcond[1]=((((-1.0)*new_r10*x1083))+(((-1.0000000008)*gconst13))+((new_r00*x1079))); |
| evalcond[2]=(x1085+((new_r00*x1080))+((new_r10*x1079))); |
| evalcond[3]=((((-1.0)*new_r11*x1083))+(((-1.0000000008)*x1085))); |
| evalcond[4]=((((-1.0)*new_r11*x1082))+(((-1.0)*x1085))); |
| evalcond[5]=((((-1.0)*new_r10*x1082))+((new_r00*x1084))+(((-1.0)*x1081))); |
| evalcond[6]=(((x1080*x1085))+new_r00+(((-1.0)*gconst13*x1084))); |
| evalcond[7]=(((x1079*x1085))+((gconst13*x1082))+new_r10); |
| evalcond[8]=((((-1.0)*x1080*x1081))+(((-1.0)*x1084*x1085))); |
| evalcond[9]=(((x1082*x1085))+(((-1.0)*x1079*x1081))+new_r11); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[2]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[3]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[4]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[5]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[6]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[7]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[8]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[9]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| |
| } |
| |
| } |
| |
| } else |
| { |
| { |
| IkReal j5array[1], cj5array[1], sj5array[1]; |
| bool j5valid[1]={false}; |
| _nj5 = 1; |
| CheckValue<IkReal> x1087=IKPowWithIntegerCheck(new_r11,-1); |
| if(!x1087.valid){ |
| continue; |
| } |
| IkReal x1086=x1087.value; |
| CheckValue<IkReal> x1088=IKPowWithIntegerCheck(new_r10,-1); |
| if(!x1088.valid){ |
| continue; |
| } |
| if( IKabs(((4.0e-5)*x1086*(x1088.value)*(((((25000.0)*gconst13*new_r00))+(((-25000.00002)*gconst13*new_r11)))))) < IKFAST_ATAN2_MAGTHRESH && IKabs((gconst13*x1086)) < IKFAST_ATAN2_MAGTHRESH && IKabs(IKsqr(((4.0e-5)*x1086*(x1088.value)*(((((25000.0)*gconst13*new_r00))+(((-25000.00002)*gconst13*new_r11))))))+IKsqr((gconst13*x1086))-1) <= IKFAST_SINCOS_THRESH ) |
| continue; |
| j5array[0]=IKatan2(((4.0e-5)*x1086*(x1088.value)*(((((25000.0)*gconst13*new_r00))+(((-25000.00002)*gconst13*new_r11))))), (gconst13*x1086)); |
| sj5array[0]=IKsin(j5array[0]); |
| cj5array[0]=IKcos(j5array[0]); |
| if( j5array[0] > IKPI ) |
| { |
| j5array[0]-=IK2PI; |
| } |
| else if( j5array[0] < -IKPI ) |
| { j5array[0]+=IK2PI; |
| } |
| j5valid[0] = true; |
| for(int ij5 = 0; ij5 < 1; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < 1; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| { |
| IkReal evalcond[10]; |
| IkReal x1089=IKcos(j5); |
| IkReal x1090=IKsin(j5); |
| IkReal x1091=((1.0)*gconst13); |
| IkReal x1092=((1.0000000008)*x1090); |
| IkReal x1093=((1.0)*x1090); |
| IkReal x1094=((1.0000000008)*x1089); |
| if((((1.0)+(((-1.0)*gconst13*x1091)))) < -0.00001) |
| continue; |
| IkReal x1095=IKsqrt(((1.0)+(((-1.0)*gconst13*x1091)))); |
| evalcond[0]=((((-1.0)*x1091))+((new_r11*x1089))); |
| evalcond[1]=(((new_r00*x1089))+(((-1.0000000008)*gconst13))+(((-1.0)*new_r10*x1093))); |
| evalcond[2]=(((new_r00*x1090))+x1095+((new_r10*x1089))); |
| evalcond[3]=((((-1.0000000008)*x1095))+(((-1.0)*new_r11*x1093))); |
| evalcond[4]=((((-1.0)*x1095))+(((-1.0)*new_r11*x1092))); |
| evalcond[5]=(((new_r00*x1094))+(((-1.0)*x1091))+(((-1.0)*new_r10*x1092))); |
| evalcond[6]=((((-1.0)*gconst13*x1094))+new_r00+((x1090*x1095))); |
| evalcond[7]=(((x1089*x1095))+new_r10+((gconst13*x1092))); |
| evalcond[8]=((((-1.0)*x1090*x1091))+(((-1.0)*x1094*x1095))); |
| evalcond[9]=((((-1.0)*x1089*x1091))+((x1092*x1095))+new_r11); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[2]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[3]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[4]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[5]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[6]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[7]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[8]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[9]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| |
| } |
| |
| } |
| |
| } else |
| { |
| { |
| IkReal j5array[1], cj5array[1], sj5array[1]; |
| bool j5valid[1]={false}; |
| _nj5 = 1; |
| CheckValue<IkReal> x1096=IKPowWithIntegerCheck(IKsign(new_r11),-1); |
| if(!x1096.valid){ |
| continue; |
| } |
| if((((1.0)+(((-1.0)*(gconst13*gconst13))))) < -0.00001) |
| continue; |
| CheckValue<IkReal> x1097 = IKatan2WithCheck(IkReal(((-1.0000000008)*(IKsqrt(((1.0)+(((-1.0)*(gconst13*gconst13)))))))),IkReal(gconst13),IKFAST_ATAN2_MAGTHRESH); |
| if(!x1097.valid){ |
| continue; |
| } |
| j5array[0]=((-1.5707963267949)+(((1.5707963267949)*(x1096.value)))+(x1097.value)); |
| sj5array[0]=IKsin(j5array[0]); |
| cj5array[0]=IKcos(j5array[0]); |
| if( j5array[0] > IKPI ) |
| { |
| j5array[0]-=IK2PI; |
| } |
| else if( j5array[0] < -IKPI ) |
| { j5array[0]+=IK2PI; |
| } |
| j5valid[0] = true; |
| for(int ij5 = 0; ij5 < 1; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < 1; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| { |
| IkReal evalcond[10]; |
| IkReal x1098=IKcos(j5); |
| IkReal x1099=IKsin(j5); |
| IkReal x1100=((1.0)*gconst13); |
| IkReal x1101=((1.0000000008)*x1099); |
| IkReal x1102=((1.0)*x1099); |
| IkReal x1103=((1.0000000008)*x1098); |
| if((((1.0)+(((-1.0)*gconst13*x1100)))) < -0.00001) |
| continue; |
| IkReal x1104=IKsqrt(((1.0)+(((-1.0)*gconst13*x1100)))); |
| evalcond[0]=(((new_r11*x1098))+(((-1.0)*x1100))); |
| evalcond[1]=(((new_r00*x1098))+(((-1.0000000008)*gconst13))+(((-1.0)*new_r10*x1102))); |
| evalcond[2]=(x1104+((new_r00*x1099))+((new_r10*x1098))); |
| evalcond[3]=((((-1.0000000008)*x1104))+(((-1.0)*new_r11*x1102))); |
| evalcond[4]=((((-1.0)*x1104))+(((-1.0)*new_r11*x1101))); |
| evalcond[5]=(((new_r00*x1103))+(((-1.0)*new_r10*x1101))+(((-1.0)*x1100))); |
| evalcond[6]=(((x1099*x1104))+new_r00+(((-1.0)*gconst13*x1103))); |
| evalcond[7]=(((x1098*x1104))+((gconst13*x1101))+new_r10); |
| evalcond[8]=((((-1.0)*x1103*x1104))+(((-1.0)*x1099*x1100))); |
| evalcond[9]=((((-1.0)*x1098*x1100))+((x1101*x1104))+new_r11); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[2]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[3]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[4]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[5]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[6]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[7]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[8]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[9]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| |
| } |
| |
| } |
| |
| } |
| } while(0); |
| if( bgotonextstatement ) |
| { |
| bool bgotonextstatement = true; |
| do |
| { |
| evalcond[0]=((IKabs(new_r11))+(IKabs(new_r00))); |
| if( IKabs(evalcond[0]) < 0.0000050000000000 ) |
| { |
| bgotonextstatement=false; |
| { |
| IkReal j5array[2], cj5array[2], sj5array[2]; |
| bool j5valid[2]={false}; |
| _nj5 = 2; |
| cj5array[0]=((-1.0)*new_r10); |
| if( cj5array[0] >= -1-IKFAST_SINCOS_THRESH && cj5array[0] <= 1+IKFAST_SINCOS_THRESH ) |
| { |
| j5valid[0] = j5valid[1] = true; |
| j5array[0] = IKacos(cj5array[0]); |
| sj5array[0] = IKsin(j5array[0]); |
| cj5array[1] = cj5array[0]; |
| j5array[1] = -j5array[0]; |
| sj5array[1] = -sj5array[0]; |
| } |
| else if( isnan(cj5array[0]) ) |
| { |
| // probably any value will work |
| j5valid[0] = true; |
| cj5array[0] = 1; sj5array[0] = 0; j5array[0] = 0; |
| } |
| for(int ij5 = 0; ij5 < 2; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < 2; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| { |
| IkReal evalcond[9]; |
| IkReal x1105=IKsin(j5); |
| IkReal x1106=IKcos(j5); |
| IkReal x1107=(new_r10*x1105); |
| IkReal x1108=((1.0000000008)*x1106); |
| evalcond[0]=x1105; |
| evalcond[1]=(new_r01*x1105); |
| evalcond[2]=((-1.0)*x1107); |
| evalcond[3]=((1.0)+((new_r10*x1106))); |
| evalcond[4]=((1.0000000008)*x1105); |
| evalcond[5]=((-1.0000000008)*x1107); |
| evalcond[6]=(new_r01+(((-1.0)*x1108))); |
| evalcond[7]=((-1.0000000008)+((new_r01*x1106))); |
| evalcond[8]=((-1.0)+((new_r01*x1108))); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[2]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[3]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[4]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[5]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[6]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[7]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[8]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| |
| } |
| } while(0); |
| if( bgotonextstatement ) |
| { |
| bool bgotonextstatement = true; |
| do |
| { |
| evalcond[0]=((IKabs(new_r10))+(IKabs(new_r00))); |
| if( IKabs(evalcond[0]) < 0.0000050000000000 ) |
| { |
| bgotonextstatement=false; |
| { |
| IkReal j5array[1], cj5array[1], sj5array[1]; |
| bool j5valid[1]={false}; |
| _nj5 = 1; |
| if( IKabs(((-0.9999999992)*new_r11)) < IKFAST_ATAN2_MAGTHRESH && IKabs(((0.9999999992)*new_r01)) < IKFAST_ATAN2_MAGTHRESH && IKabs(IKsqr(((-0.9999999992)*new_r11))+IKsqr(((0.9999999992)*new_r01))-1) <= IKFAST_SINCOS_THRESH ) |
| continue; |
| j5array[0]=IKatan2(((-0.9999999992)*new_r11), ((0.9999999992)*new_r01)); |
| sj5array[0]=IKsin(j5array[0]); |
| cj5array[0]=IKcos(j5array[0]); |
| if( j5array[0] > IKPI ) |
| { |
| j5array[0]-=IK2PI; |
| } |
| else if( j5array[0] < -IKPI ) |
| { j5array[0]+=IK2PI; |
| } |
| j5valid[0] = true; |
| for(int ij5 = 0; ij5 < 1; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < 1; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| { |
| IkReal evalcond[7]; |
| IkReal x1109=IKcos(j5); |
| IkReal x1110=IKsin(j5); |
| IkReal x1111=((1.0000000008)*x1110); |
| IkReal x1112=((1.0000000008)*x1109); |
| evalcond[0]=x1110; |
| evalcond[1]=x1109; |
| evalcond[2]=(new_r01+(((-1.0)*x1112))); |
| evalcond[3]=(x1111+new_r11); |
| evalcond[4]=(((new_r11*x1109))+((new_r01*x1110))); |
| evalcond[5]=((-1.0000000008)+((new_r01*x1109))+(((-1.0)*new_r11*x1110))); |
| evalcond[6]=((-1.0)+((new_r01*x1112))+(((-1.0)*new_r11*x1111))); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[2]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[3]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[4]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[5]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[6]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| |
| } |
| } while(0); |
| if( bgotonextstatement ) |
| { |
| bool bgotonextstatement = true; |
| do |
| { |
| if( 1 ) |
| { |
| bgotonextstatement=false; |
| continue; // branch miss [j5] |
| |
| } |
| } while(0); |
| if( bgotonextstatement ) |
| { |
| } |
| } |
| } |
| } |
| } |
| } |
| |
| } else |
| { |
| { |
| IkReal j5array[1], cj5array[1], sj5array[1]; |
| bool j5valid[1]={false}; |
| _nj5 = 1; |
| CheckValue<IkReal> x1120=IKPowWithIntegerCheck(new_r01,-1); |
| if(!x1120.valid){ |
| continue; |
| } |
| IkReal x1113=x1120.value; |
| IkReal x1114=((25000.0)*new_r00); |
| IkReal x1115=(gconst13*x1113); |
| if((((1.0)+(((-1.0)*(gconst13*gconst13))))) < -0.00001) |
| continue; |
| IkReal x1116=IKsqrt(((1.0)+(((-1.0)*(gconst13*gconst13))))); |
| IkReal x1117=((25000.0)*x1116); |
| CheckValue<IkReal> x1121=IKPowWithIntegerCheck(((((25000.00002)*gconst13*new_r01))+((new_r11*x1117))),-1); |
| if(!x1121.valid){ |
| continue; |
| } |
| IkReal x1118=x1121.value; |
| IkReal x1119=(new_r11*x1118); |
| if( IKabs((x1115+(((-1.0)*x1114*x1119))+(((-1.0)*x1115*x1117*x1119)))) < IKFAST_ATAN2_MAGTHRESH && IKabs((x1118*((((gconst13*x1117))+((new_r01*x1114)))))) < IKFAST_ATAN2_MAGTHRESH && IKabs(IKsqr((x1115+(((-1.0)*x1114*x1119))+(((-1.0)*x1115*x1117*x1119))))+IKsqr((x1118*((((gconst13*x1117))+((new_r01*x1114))))))-1) <= IKFAST_SINCOS_THRESH ) |
| continue; |
| j5array[0]=IKatan2((x1115+(((-1.0)*x1114*x1119))+(((-1.0)*x1115*x1117*x1119))), (x1118*((((gconst13*x1117))+((new_r01*x1114)))))); |
| sj5array[0]=IKsin(j5array[0]); |
| cj5array[0]=IKcos(j5array[0]); |
| if( j5array[0] > IKPI ) |
| { |
| j5array[0]-=IK2PI; |
| } |
| else if( j5array[0] < -IKPI ) |
| { j5array[0]+=IK2PI; |
| } |
| j5valid[0] = true; |
| for(int ij5 = 0; ij5 < 1; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < 1; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| { |
| IkReal evalcond[10]; |
| IkReal x1122=IKcos(j5); |
| IkReal x1123=IKsin(j5); |
| IkReal x1124=((1.0)*gconst13); |
| IkReal x1125=((1.0000000008)*x1123); |
| IkReal x1126=((1.0)*x1123); |
| IkReal x1127=((1.0000000008)*x1122); |
| IkReal x1128=x1116; |
| evalcond[0]=(((new_r01*x1123))+(((-1.0)*x1124))+((new_r11*x1122))); |
| evalcond[1]=((((-1.0)*new_r10*x1126))+(((-1.0000000008)*gconst13))+((new_r00*x1122))); |
| evalcond[2]=(x1128+((new_r10*x1122))+((new_r00*x1123))); |
| evalcond[3]=((((-1.0)*new_r10*x1125))+(((-1.0)*x1124))+((new_r00*x1127))); |
| evalcond[4]=((((-1.0)*gconst13*x1127))+new_r00+((x1123*x1128))); |
| evalcond[5]=(((gconst13*x1125))+((x1122*x1128))+new_r10); |
| evalcond[6]=((((-1.0)*x1123*x1124))+(((-1.0)*x1127*x1128))+new_r01); |
| evalcond[7]=((((-1.0)*x1122*x1124))+((x1125*x1128))+new_r11); |
| evalcond[8]=((((-1.0)*new_r11*x1126))+((new_r01*x1122))+(((-1.0000000008)*x1128))); |
| evalcond[9]=((((-1.0)*new_r11*x1125))+((new_r01*x1127))+(((-1.0)*x1128))); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[2]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[3]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[4]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[5]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[6]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[7]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[8]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[9]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| |
| } |
| |
| } |
| |
| } else |
| { |
| { |
| IkReal j5array[1], cj5array[1], sj5array[1]; |
| bool j5valid[1]={false}; |
| _nj5 = 1; |
| if((((1.0)+(((-1.0)*(gconst13*gconst13))))) < -0.00001) |
| continue; |
| IkReal x1129=IKsqrt(((1.0)+(((-1.0)*(gconst13*gconst13))))); |
| CheckValue<IkReal> x1130 = IKatan2WithCheck(IkReal((((gconst13*new_r10))+((new_r11*x1129)))),IkReal(((((-1.0)*new_r01*x1129))+(((-1.0)*gconst13*new_r00)))),IKFAST_ATAN2_MAGTHRESH); |
| if(!x1130.valid){ |
| continue; |
| } |
| CheckValue<IkReal> x1131=IKPowWithIntegerCheck(IKsign((((new_r01*new_r10))+(((-1.0)*new_r00*new_r11)))),-1); |
| if(!x1131.valid){ |
| continue; |
| } |
| j5array[0]=((-1.5707963267949)+(x1130.value)+(((1.5707963267949)*(x1131.value)))); |
| sj5array[0]=IKsin(j5array[0]); |
| cj5array[0]=IKcos(j5array[0]); |
| if( j5array[0] > IKPI ) |
| { |
| j5array[0]-=IK2PI; |
| } |
| else if( j5array[0] < -IKPI ) |
| { j5array[0]+=IK2PI; |
| } |
| j5valid[0] = true; |
| for(int ij5 = 0; ij5 < 1; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < 1; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| { |
| IkReal evalcond[10]; |
| IkReal x1132=IKcos(j5); |
| IkReal x1133=IKsin(j5); |
| IkReal x1134=((1.0)*gconst13); |
| IkReal x1135=((1.0000000008)*x1133); |
| IkReal x1136=((1.0)*x1133); |
| IkReal x1137=((1.0000000008)*x1132); |
| IkReal x1138=x1129; |
| evalcond[0]=((((-1.0)*x1134))+((new_r11*x1132))+((new_r01*x1133))); |
| evalcond[1]=((((-1.0)*new_r10*x1136))+(((-1.0000000008)*gconst13))+((new_r00*x1132))); |
| evalcond[2]=(x1138+((new_r00*x1133))+((new_r10*x1132))); |
| evalcond[3]=((((-1.0)*new_r10*x1135))+(((-1.0)*x1134))+((new_r00*x1137))); |
| evalcond[4]=((((-1.0)*gconst13*x1137))+new_r00+((x1133*x1138))); |
| evalcond[5]=(((gconst13*x1135))+new_r10+((x1132*x1138))); |
| evalcond[6]=(new_r01+(((-1.0)*x1137*x1138))+(((-1.0)*x1133*x1134))); |
| evalcond[7]=(((x1135*x1138))+(((-1.0)*x1132*x1134))+new_r11); |
| evalcond[8]=((((-1.0)*new_r11*x1136))+(((-1.0000000008)*x1138))+((new_r01*x1132))); |
| evalcond[9]=((((-1.0)*new_r11*x1135))+((new_r01*x1137))+(((-1.0)*x1138))); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[2]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[3]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[4]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[5]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[6]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[7]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[8]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[9]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| |
| } |
| |
| } |
| |
| } else |
| { |
| { |
| IkReal j5array[1], cj5array[1], sj5array[1]; |
| bool j5valid[1]={false}; |
| _nj5 = 1; |
| IkReal x1139=((25000.0)*gconst13); |
| IkReal x1140=((25000.00002)*gconst13); |
| CheckValue<IkReal> x1141=IKPowWithIntegerCheck(IKsign(((((25000.0)*new_r10*new_r11))+(((25000.0)*new_r00*new_r01)))),-1); |
| if(!x1141.valid){ |
| continue; |
| } |
| CheckValue<IkReal> x1142 = IKatan2WithCheck(IkReal(((((-1.0)*new_r11*x1140))+((new_r00*x1139)))),IkReal((((new_r01*x1140))+((new_r10*x1139)))),IKFAST_ATAN2_MAGTHRESH); |
| if(!x1142.valid){ |
| continue; |
| } |
| j5array[0]=((-1.5707963267949)+(((1.5707963267949)*(x1141.value)))+(x1142.value)); |
| sj5array[0]=IKsin(j5array[0]); |
| cj5array[0]=IKcos(j5array[0]); |
| if( j5array[0] > IKPI ) |
| { |
| j5array[0]-=IK2PI; |
| } |
| else if( j5array[0] < -IKPI ) |
| { j5array[0]+=IK2PI; |
| } |
| j5valid[0] = true; |
| for(int ij5 = 0; ij5 < 1; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < 1; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| { |
| IkReal evalcond[10]; |
| IkReal x1143=IKcos(j5); |
| IkReal x1144=IKsin(j5); |
| IkReal x1145=((1.0)*gconst13); |
| IkReal x1146=((1.0000000008)*x1144); |
| IkReal x1147=((1.0)*x1144); |
| IkReal x1148=((1.0000000008)*x1143); |
| if((((1.0)+(((-1.0)*gconst13*x1145)))) < -0.00001) |
| continue; |
| IkReal x1149=IKsqrt(((1.0)+(((-1.0)*gconst13*x1145)))); |
| evalcond[0]=((((-1.0)*x1145))+((new_r01*x1144))+((new_r11*x1143))); |
| evalcond[1]=(((new_r00*x1143))+(((-1.0000000008)*gconst13))+(((-1.0)*new_r10*x1147))); |
| evalcond[2]=(x1149+((new_r00*x1144))+((new_r10*x1143))); |
| evalcond[3]=(((new_r00*x1148))+(((-1.0)*x1145))+(((-1.0)*new_r10*x1146))); |
| evalcond[4]=((((-1.0)*gconst13*x1148))+new_r00+((x1144*x1149))); |
| evalcond[5]=(((x1143*x1149))+((gconst13*x1146))+new_r10); |
| evalcond[6]=(new_r01+(((-1.0)*x1148*x1149))+(((-1.0)*x1144*x1145))); |
| evalcond[7]=((((-1.0)*x1143*x1145))+((x1146*x1149))+new_r11); |
| evalcond[8]=(((new_r01*x1143))+(((-1.0)*new_r11*x1147))+(((-1.0000000008)*x1149))); |
| evalcond[9]=(((new_r01*x1148))+(((-1.0)*x1149))+(((-1.0)*new_r11*x1146))); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[2]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[3]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[4]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[5]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[6]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[7]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[8]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[9]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| |
| } |
| |
| } |
| |
| } |
| } while(0); |
| if( bgotonextstatement ) |
| { |
| bool bgotonextstatement = true; |
| do |
| { |
| IkReal x1150=new_r00*new_r00; |
| CheckValue<IkReal> x1151=IKPowWithIntegerCheck(((((-1.0000000016)*(new_r10*new_r10)))+(((-1.0)*x1150))),-1); |
| if(!x1151.valid){ |
| continue; |
| } |
| if((((-1.0)*x1150*(x1151.value))) < -0.00001) |
| continue; |
| IkReal gconst13=((-1.0)*(IKsqrt(((-1.0)*x1150*(x1151.value))))); |
| evalcond[0]=((-3.14159265358979)+(IKfmod(((3.14159265358979)+(IKabs((cj3+(((-1.0)*gconst13)))))+(IKabs(((1.0)+(IKsign(sj3)))))), 6.28318530717959))); |
| if( IKabs(evalcond[0]) < 0.0000050000000000 ) |
| { |
| bgotonextstatement=false; |
| { |
| IkReal j5eval[2]; |
| IkReal x1152=new_r00*new_r00; |
| sj4=4.0e-5; |
| cj4=1.0; |
| j4=4.0e-5; |
| if((((1.0)+(((-1.0)*(gconst13*gconst13))))) < -0.00001) |
| continue; |
| sj3=((-1.0)*(IKsqrt(((1.0)+(((-1.0)*(gconst13*gconst13))))))); |
| cj3=gconst13; |
| if( (gconst13) < -1-IKFAST_SINCOS_THRESH || (gconst13) > 1+IKFAST_SINCOS_THRESH ) |
| continue; |
| j3=((-1.0)*(IKacos(gconst13))); |
| CheckValue<IkReal> x1153=IKPowWithIntegerCheck(((((-1.0000000016)*(new_r10*new_r10)))+(((-1.0)*x1152))),-1); |
| if(!x1153.valid){ |
| continue; |
| } |
| if((((-1.0)*x1152*(x1153.value))) < -0.00001) |
| continue; |
| IkReal gconst13=((-1.0)*(IKsqrt(((-1.0)*x1152*(x1153.value))))); |
| IkReal x1154=(new_r00*new_r01); |
| IkReal x1155=(new_r10*new_r11); |
| j5eval[0]=(x1155+x1154); |
| j5eval[1]=IKsign(((((25000.0)*x1155))+(((25000.0)*x1154)))); |
| if( IKabs(j5eval[0]) < 0.0000010000000000 || IKabs(j5eval[1]) < 0.0000010000000000 ) |
| { |
| { |
| IkReal j5eval[2]; |
| IkReal x1156=new_r00*new_r00; |
| sj4=4.0e-5; |
| cj4=1.0; |
| j4=4.0e-5; |
| if((((1.0)+(((-1.0)*(gconst13*gconst13))))) < -0.00001) |
| continue; |
| sj3=((-1.0)*(IKsqrt(((1.0)+(((-1.0)*(gconst13*gconst13))))))); |
| cj3=gconst13; |
| if( (gconst13) < -1-IKFAST_SINCOS_THRESH || (gconst13) > 1+IKFAST_SINCOS_THRESH ) |
| continue; |
| j3=((-1.0)*(IKacos(gconst13))); |
| CheckValue<IkReal> x1157=IKPowWithIntegerCheck(((((-1.0000000016)*(new_r10*new_r10)))+(((-1.0)*x1156))),-1); |
| if(!x1157.valid){ |
| continue; |
| } |
| if((((-1.0)*x1156*(x1157.value))) < -0.00001) |
| continue; |
| IkReal gconst13=((-1.0)*(IKsqrt(((-1.0)*x1156*(x1157.value))))); |
| IkReal x1158=(((new_r01*new_r10))+(((-1.0)*new_r00*new_r11))); |
| j5eval[0]=x1158; |
| j5eval[1]=IKsign(x1158); |
| if( IKabs(j5eval[0]) < 0.0000010000000000 || IKabs(j5eval[1]) < 0.0000010000000000 ) |
| { |
| { |
| IkReal j5eval[1]; |
| IkReal x1159=new_r00*new_r00; |
| sj4=4.0e-5; |
| cj4=1.0; |
| j4=4.0e-5; |
| if((((1.0)+(((-1.0)*(gconst13*gconst13))))) < -0.00001) |
| continue; |
| sj3=((-1.0)*(IKsqrt(((1.0)+(((-1.0)*(gconst13*gconst13))))))); |
| cj3=gconst13; |
| if( (gconst13) < -1-IKFAST_SINCOS_THRESH || (gconst13) > 1+IKFAST_SINCOS_THRESH ) |
| continue; |
| j3=((-1.0)*(IKacos(gconst13))); |
| CheckValue<IkReal> x1160=IKPowWithIntegerCheck(((((-1.0000000016)*(new_r10*new_r10)))+(((-1.0)*x1159))),-1); |
| if(!x1160.valid){ |
| continue; |
| } |
| if((((-1.0)*x1159*(x1160.value))) < -0.00001) |
| continue; |
| IkReal gconst13=((-1.0)*(IKsqrt(((-1.0)*x1159*(x1160.value))))); |
| j5eval[0]=new_r01; |
| if( IKabs(j5eval[0]) < 0.0000010000000000 ) |
| { |
| { |
| IkReal evalcond[1]; |
| bool bgotonextstatement = true; |
| do |
| { |
| evalcond[0]=IKabs(new_r01); |
| if( IKabs(evalcond[0]) < 0.0000050000000000 ) |
| { |
| bgotonextstatement=false; |
| { |
| IkReal j5eval[1]; |
| IkReal x1161=new_r00*new_r00; |
| sj4=4.0e-5; |
| cj4=1.0; |
| j4=4.0e-5; |
| if((((1.0)+(((-1.0)*(gconst13*gconst13))))) < -0.00001) |
| continue; |
| sj3=((-1.0)*(IKsqrt(((1.0)+(((-1.0)*(gconst13*gconst13))))))); |
| cj3=gconst13; |
| if( (gconst13) < -1-IKFAST_SINCOS_THRESH || (gconst13) > 1+IKFAST_SINCOS_THRESH ) |
| continue; |
| j3=((-1.0)*(IKacos(gconst13))); |
| new_r01=0; |
| CheckValue<IkReal> x1162=IKPowWithIntegerCheck(((((-1.0000000016)*(new_r10*new_r10)))+(((-1.0)*x1161))),-1); |
| if(!x1162.valid){ |
| continue; |
| } |
| if((((-1.0)*x1161*(x1162.value))) < -0.00001) |
| continue; |
| IkReal gconst13=((-1.0)*(IKsqrt(((-1.0)*x1161*(x1162.value))))); |
| j5eval[0]=new_r11; |
| if( IKabs(j5eval[0]) < 0.0000010000000000 ) |
| { |
| { |
| IkReal j5eval[2]; |
| IkReal x1163=new_r00*new_r00; |
| sj4=4.0e-5; |
| cj4=1.0; |
| j4=4.0e-5; |
| if((((1.0)+(((-1.0)*(gconst13*gconst13))))) < -0.00001) |
| continue; |
| sj3=((-1.0)*(IKsqrt(((1.0)+(((-1.0)*(gconst13*gconst13))))))); |
| cj3=gconst13; |
| if( (gconst13) < -1-IKFAST_SINCOS_THRESH || (gconst13) > 1+IKFAST_SINCOS_THRESH ) |
| continue; |
| j3=((-1.0)*(IKacos(gconst13))); |
| new_r01=0; |
| CheckValue<IkReal> x1164=IKPowWithIntegerCheck(((((-1.0000000016)*(new_r10*new_r10)))+(((-1.0)*x1163))),-1); |
| if(!x1164.valid){ |
| continue; |
| } |
| if((((-1.0)*x1163*(x1164.value))) < -0.00001) |
| continue; |
| IkReal gconst13=((-1.0)*(IKsqrt(((-1.0)*x1163*(x1164.value))))); |
| j5eval[0]=new_r10; |
| j5eval[1]=new_r11; |
| if( IKabs(j5eval[0]) < 0.0000010000000000 || IKabs(j5eval[1]) < 0.0000010000000000 ) |
| { |
| { |
| IkReal j5eval[2]; |
| IkReal x1165=new_r00*new_r00; |
| sj4=4.0e-5; |
| cj4=1.0; |
| j4=4.0e-5; |
| if((((1.0)+(((-1.0)*(gconst13*gconst13))))) < -0.00001) |
| continue; |
| sj3=((-1.0)*(IKsqrt(((1.0)+(((-1.0)*(gconst13*gconst13))))))); |
| cj3=gconst13; |
| if( (gconst13) < -1-IKFAST_SINCOS_THRESH || (gconst13) > 1+IKFAST_SINCOS_THRESH ) |
| continue; |
| j3=((-1.0)*(IKacos(gconst13))); |
| new_r01=0; |
| CheckValue<IkReal> x1166=IKPowWithIntegerCheck(((((-1.0000000016)*(new_r10*new_r10)))+(((-1.0)*x1165))),-1); |
| if(!x1166.valid){ |
| continue; |
| } |
| if((((-1.0)*x1165*(x1166.value))) < -0.00001) |
| continue; |
| IkReal gconst13=((-1.0)*(IKsqrt(((-1.0)*x1165*(x1166.value))))); |
| j5eval[0]=new_r00; |
| j5eval[1]=new_r11; |
| if( IKabs(j5eval[0]) < 0.0000010000000000 || IKabs(j5eval[1]) < 0.0000010000000000 ) |
| { |
| continue; // 3 cases reached |
| |
| } else |
| { |
| { |
| IkReal j5array[1], cj5array[1], sj5array[1]; |
| bool j5valid[1]={false}; |
| _nj5 = 1; |
| CheckValue<IkReal> x1168=IKPowWithIntegerCheck(new_r11,-1); |
| if(!x1168.valid){ |
| continue; |
| } |
| IkReal x1167=x1168.value; |
| CheckValue<IkReal> x1169=IKPowWithIntegerCheck(new_r00,-1); |
| if(!x1169.valid){ |
| continue; |
| } |
| if((((1.0)+(((-1.0)*(gconst13*gconst13))))) < -0.00001) |
| continue; |
| if( IKabs((x1167*(x1169.value)*(((((-1.0)*gconst13*new_r10))+((new_r11*(IKsqrt(((1.0)+(((-1.0)*(gconst13*gconst13)))))))))))) < IKFAST_ATAN2_MAGTHRESH && IKabs((gconst13*x1167)) < IKFAST_ATAN2_MAGTHRESH && IKabs(IKsqr((x1167*(x1169.value)*(((((-1.0)*gconst13*new_r10))+((new_r11*(IKsqrt(((1.0)+(((-1.0)*(gconst13*gconst13))))))))))))+IKsqr((gconst13*x1167))-1) <= IKFAST_SINCOS_THRESH ) |
| continue; |
| j5array[0]=IKatan2((x1167*(x1169.value)*(((((-1.0)*gconst13*new_r10))+((new_r11*(IKsqrt(((1.0)+(((-1.0)*(gconst13*gconst13))))))))))), (gconst13*x1167)); |
| sj5array[0]=IKsin(j5array[0]); |
| cj5array[0]=IKcos(j5array[0]); |
| if( j5array[0] > IKPI ) |
| { |
| j5array[0]-=IK2PI; |
| } |
| else if( j5array[0] < -IKPI ) |
| { j5array[0]+=IK2PI; |
| } |
| j5valid[0] = true; |
| for(int ij5 = 0; ij5 < 1; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < 1; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| { |
| IkReal evalcond[10]; |
| IkReal x1170=IKcos(j5); |
| IkReal x1171=IKsin(j5); |
| IkReal x1172=((1.0)*gconst13); |
| IkReal x1173=((1.0000000008)*gconst13); |
| IkReal x1174=(new_r11*x1171); |
| IkReal x1175=(new_r00*x1170); |
| IkReal x1176=(new_r10*x1171); |
| if((((1.0)+(((-1.0)*gconst13*x1172)))) < -0.00001) |
| continue; |
| IkReal x1177=IKsqrt(((1.0)+(((-1.0)*gconst13*x1172)))); |
| IkReal x1178=(x1171*x1177); |
| IkReal x1179=(x1170*x1177); |
| evalcond[0]=(((new_r11*x1170))+(((-1.0)*x1172))); |
| evalcond[1]=(x1175+(((-1.0)*x1173))+(((-1.0)*x1176))); |
| evalcond[2]=(x1177+(((-1.0000000008)*x1174))); |
| evalcond[3]=((((1.0000000008)*x1177))+(((-1.0)*x1174))); |
| evalcond[4]=(((new_r10*x1170))+((new_r00*x1171))+(((-1.0)*x1177))); |
| evalcond[5]=((((1.0000000008)*x1175))+(((-1.0000000008)*x1176))+(((-1.0)*x1172))); |
| evalcond[6]=((((1.0000000008)*x1179))+(((-1.0)*x1171*x1172))); |
| evalcond[7]=((((-1.0)*x1170*x1173))+new_r00+(((-1.0)*x1178))); |
| evalcond[8]=(new_r10+((x1171*x1173))+(((-1.0)*x1179))); |
| evalcond[9]=((((-1.0000000008)*x1178))+(((-1.0)*x1170*x1172))+new_r11); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[2]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[3]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[4]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[5]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[6]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[7]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[8]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[9]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| |
| } |
| |
| } |
| |
| } else |
| { |
| { |
| IkReal j5array[1], cj5array[1], sj5array[1]; |
| bool j5valid[1]={false}; |
| _nj5 = 1; |
| CheckValue<IkReal> x1181=IKPowWithIntegerCheck(new_r11,-1); |
| if(!x1181.valid){ |
| continue; |
| } |
| IkReal x1180=x1181.value; |
| CheckValue<IkReal> x1182=IKPowWithIntegerCheck(new_r10,-1); |
| if(!x1182.valid){ |
| continue; |
| } |
| if( IKabs(((4.0e-5)*x1180*(x1182.value)*(((((25000.0)*gconst13*new_r00))+(((-25000.00002)*gconst13*new_r11)))))) < IKFAST_ATAN2_MAGTHRESH && IKabs((gconst13*x1180)) < IKFAST_ATAN2_MAGTHRESH && IKabs(IKsqr(((4.0e-5)*x1180*(x1182.value)*(((((25000.0)*gconst13*new_r00))+(((-25000.00002)*gconst13*new_r11))))))+IKsqr((gconst13*x1180))-1) <= IKFAST_SINCOS_THRESH ) |
| continue; |
| j5array[0]=IKatan2(((4.0e-5)*x1180*(x1182.value)*(((((25000.0)*gconst13*new_r00))+(((-25000.00002)*gconst13*new_r11))))), (gconst13*x1180)); |
| sj5array[0]=IKsin(j5array[0]); |
| cj5array[0]=IKcos(j5array[0]); |
| if( j5array[0] > IKPI ) |
| { |
| j5array[0]-=IK2PI; |
| } |
| else if( j5array[0] < -IKPI ) |
| { j5array[0]+=IK2PI; |
| } |
| j5valid[0] = true; |
| for(int ij5 = 0; ij5 < 1; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < 1; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| { |
| IkReal evalcond[10]; |
| IkReal x1183=IKcos(j5); |
| IkReal x1184=IKsin(j5); |
| IkReal x1185=((1.0)*gconst13); |
| IkReal x1186=((1.0000000008)*gconst13); |
| IkReal x1187=(new_r11*x1184); |
| IkReal x1188=(new_r00*x1183); |
| IkReal x1189=(new_r10*x1184); |
| if((((1.0)+(((-1.0)*gconst13*x1185)))) < -0.00001) |
| continue; |
| IkReal x1190=IKsqrt(((1.0)+(((-1.0)*gconst13*x1185)))); |
| IkReal x1191=(x1184*x1190); |
| IkReal x1192=(x1183*x1190); |
| evalcond[0]=((((-1.0)*x1185))+((new_r11*x1183))); |
| evalcond[1]=(x1188+(((-1.0)*x1186))+(((-1.0)*x1189))); |
| evalcond[2]=(x1190+(((-1.0000000008)*x1187))); |
| evalcond[3]=((((1.0000000008)*x1190))+(((-1.0)*x1187))); |
| evalcond[4]=(((new_r10*x1183))+((new_r00*x1184))+(((-1.0)*x1190))); |
| evalcond[5]=((((1.0000000008)*x1188))+(((-1.0)*x1185))+(((-1.0000000008)*x1189))); |
| evalcond[6]=((((1.0000000008)*x1192))+(((-1.0)*x1184*x1185))); |
| evalcond[7]=((((-1.0)*x1183*x1186))+new_r00+(((-1.0)*x1191))); |
| evalcond[8]=(((x1184*x1186))+new_r10+(((-1.0)*x1192))); |
| evalcond[9]=((((-1.0000000008)*x1191))+(((-1.0)*x1183*x1185))+new_r11); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[2]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[3]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[4]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[5]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[6]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[7]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[8]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[9]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| |
| } |
| |
| } |
| |
| } else |
| { |
| { |
| IkReal j5array[1], cj5array[1], sj5array[1]; |
| bool j5valid[1]={false}; |
| _nj5 = 1; |
| CheckValue<IkReal> x1194=IKPowWithIntegerCheck(new_r11,-1); |
| if(!x1194.valid){ |
| continue; |
| } |
| IkReal x1193=x1194.value; |
| if((((1.0)+(((-1.0)*(gconst13*gconst13))))) < -0.00001) |
| continue; |
| if( IKabs(((0.9999999992)*x1193*(IKsqrt(((1.0)+(((-1.0)*(gconst13*gconst13)))))))) < IKFAST_ATAN2_MAGTHRESH && IKabs((gconst13*x1193)) < IKFAST_ATAN2_MAGTHRESH && IKabs(IKsqr(((0.9999999992)*x1193*(IKsqrt(((1.0)+(((-1.0)*(gconst13*gconst13))))))))+IKsqr((gconst13*x1193))-1) <= IKFAST_SINCOS_THRESH ) |
| continue; |
| j5array[0]=IKatan2(((0.9999999992)*x1193*(IKsqrt(((1.0)+(((-1.0)*(gconst13*gconst13))))))), (gconst13*x1193)); |
| sj5array[0]=IKsin(j5array[0]); |
| cj5array[0]=IKcos(j5array[0]); |
| if( j5array[0] > IKPI ) |
| { |
| j5array[0]-=IK2PI; |
| } |
| else if( j5array[0] < -IKPI ) |
| { j5array[0]+=IK2PI; |
| } |
| j5valid[0] = true; |
| for(int ij5 = 0; ij5 < 1; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < 1; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| { |
| IkReal evalcond[10]; |
| IkReal x1195=IKcos(j5); |
| IkReal x1196=IKsin(j5); |
| IkReal x1197=((1.0)*gconst13); |
| IkReal x1198=((1.0000000008)*gconst13); |
| IkReal x1199=(new_r11*x1196); |
| IkReal x1200=(new_r00*x1195); |
| IkReal x1201=(new_r10*x1196); |
| if((((1.0)+(((-1.0)*gconst13*x1197)))) < -0.00001) |
| continue; |
| IkReal x1202=IKsqrt(((1.0)+(((-1.0)*gconst13*x1197)))); |
| IkReal x1203=(x1196*x1202); |
| IkReal x1204=(x1195*x1202); |
| evalcond[0]=((((-1.0)*x1197))+((new_r11*x1195))); |
| evalcond[1]=(x1200+(((-1.0)*x1198))+(((-1.0)*x1201))); |
| evalcond[2]=(x1202+(((-1.0000000008)*x1199))); |
| evalcond[3]=((((1.0000000008)*x1202))+(((-1.0)*x1199))); |
| evalcond[4]=((((-1.0)*x1202))+((new_r00*x1196))+((new_r10*x1195))); |
| evalcond[5]=((((-1.0)*x1197))+(((1.0000000008)*x1200))+(((-1.0000000008)*x1201))); |
| evalcond[6]=((((1.0000000008)*x1204))+(((-1.0)*x1196*x1197))); |
| evalcond[7]=((((-1.0)*x1195*x1198))+(((-1.0)*x1203))+new_r00); |
| evalcond[8]=(((x1196*x1198))+(((-1.0)*x1204))+new_r10); |
| evalcond[9]=((((-1.0)*x1195*x1197))+(((-1.0000000008)*x1203))+new_r11); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[2]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[3]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[4]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[5]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[6]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[7]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[8]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[9]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| |
| } |
| |
| } |
| |
| } |
| } while(0); |
| if( bgotonextstatement ) |
| { |
| bool bgotonextstatement = true; |
| do |
| { |
| evalcond[0]=((IKabs(new_r11))+(IKabs(new_r00))); |
| if( IKabs(evalcond[0]) < 0.0000050000000000 ) |
| { |
| bgotonextstatement=false; |
| { |
| IkReal j5array[2], cj5array[2], sj5array[2]; |
| bool j5valid[2]={false}; |
| _nj5 = 2; |
| cj5array[0]=new_r10; |
| if( cj5array[0] >= -1-IKFAST_SINCOS_THRESH && cj5array[0] <= 1+IKFAST_SINCOS_THRESH ) |
| { |
| j5valid[0] = j5valid[1] = true; |
| j5array[0] = IKacos(cj5array[0]); |
| sj5array[0] = IKsin(j5array[0]); |
| cj5array[1] = cj5array[0]; |
| j5array[1] = -j5array[0]; |
| sj5array[1] = -sj5array[0]; |
| } |
| else if( isnan(cj5array[0]) ) |
| { |
| // probably any value will work |
| j5valid[0] = true; |
| cj5array[0] = 1; sj5array[0] = 0; j5array[0] = 0; |
| } |
| for(int ij5 = 0; ij5 < 2; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < 2; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| { |
| IkReal evalcond[9]; |
| IkReal x1205=IKsin(j5); |
| IkReal x1206=IKcos(j5); |
| IkReal x1207=((1.0000000008)*x1206); |
| IkReal x1208=((-1.0000000008)*x1205); |
| IkReal x1209=((-1.0)*x1205); |
| evalcond[0]=(new_r01*x1205); |
| evalcond[1]=x1209; |
| evalcond[2]=(new_r10*x1209); |
| evalcond[3]=((-1.0)+((new_r10*x1206))); |
| evalcond[4]=x1208; |
| evalcond[5]=(new_r10*x1208); |
| evalcond[6]=(x1207+new_r01); |
| evalcond[7]=((1.0000000008)+((new_r01*x1206))); |
| evalcond[8]=((1.0)+((new_r01*x1207))); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[2]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[3]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[4]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[5]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[6]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[7]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[8]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| |
| } |
| } while(0); |
| if( bgotonextstatement ) |
| { |
| bool bgotonextstatement = true; |
| do |
| { |
| evalcond[0]=((IKabs(new_r10))+(IKabs(new_r00))); |
| if( IKabs(evalcond[0]) < 0.0000050000000000 ) |
| { |
| bgotonextstatement=false; |
| { |
| IkReal j5array[1], cj5array[1], sj5array[1]; |
| bool j5valid[1]={false}; |
| _nj5 = 1; |
| if( IKabs(((0.9999999992)*new_r11)) < IKFAST_ATAN2_MAGTHRESH && IKabs(((-0.9999999992)*new_r01)) < IKFAST_ATAN2_MAGTHRESH && IKabs(IKsqr(((0.9999999992)*new_r11))+IKsqr(((-0.9999999992)*new_r01))-1) <= IKFAST_SINCOS_THRESH ) |
| continue; |
| j5array[0]=IKatan2(((0.9999999992)*new_r11), ((-0.9999999992)*new_r01)); |
| sj5array[0]=IKsin(j5array[0]); |
| cj5array[0]=IKcos(j5array[0]); |
| if( j5array[0] > IKPI ) |
| { |
| j5array[0]-=IK2PI; |
| } |
| else if( j5array[0] < -IKPI ) |
| { j5array[0]+=IK2PI; |
| } |
| j5valid[0] = true; |
| for(int ij5 = 0; ij5 < 1; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < 1; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| { |
| IkReal evalcond[7]; |
| IkReal x1210=IKcos(j5); |
| IkReal x1211=IKsin(j5); |
| IkReal x1212=((1.0000000008)*x1211); |
| IkReal x1213=((1.0000000008)*x1210); |
| evalcond[0]=((-1.0)*x1211); |
| evalcond[1]=((-1.0)*x1210); |
| evalcond[2]=(x1213+new_r01); |
| evalcond[3]=(new_r11+(((-1.0)*x1212))); |
| evalcond[4]=(((new_r11*x1210))+((new_r01*x1211))); |
| evalcond[5]=((1.0000000008)+((new_r01*x1210))+(((-1.0)*new_r11*x1211))); |
| evalcond[6]=((1.0)+((new_r01*x1213))+(((-1.0)*new_r11*x1212))); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[2]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[3]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[4]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[5]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[6]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| |
| } |
| } while(0); |
| if( bgotonextstatement ) |
| { |
| bool bgotonextstatement = true; |
| do |
| { |
| if( 1 ) |
| { |
| bgotonextstatement=false; |
| continue; // branch miss [j5] |
| |
| } |
| } while(0); |
| if( bgotonextstatement ) |
| { |
| } |
| } |
| } |
| } |
| } |
| |
| } else |
| { |
| { |
| IkReal j5array[1], cj5array[1], sj5array[1]; |
| bool j5valid[1]={false}; |
| _nj5 = 1; |
| CheckValue<IkReal> x1221=IKPowWithIntegerCheck(new_r01,-1); |
| if(!x1221.valid){ |
| continue; |
| } |
| IkReal x1214=x1221.value; |
| IkReal x1215=((25000.0)*new_r00); |
| IkReal x1216=(gconst13*x1214); |
| if((((1.0)+(((-1.0)*(gconst13*gconst13))))) < -0.00001) |
| continue; |
| IkReal x1217=IKsqrt(((1.0)+(((-1.0)*(gconst13*gconst13))))); |
| IkReal x1218=((25000.0)*new_r11*x1217); |
| CheckValue<IkReal> x1222=IKPowWithIntegerCheck(((((25000.00002)*gconst13*new_r01))+(((-1.0)*x1218))),-1); |
| if(!x1222.valid){ |
| continue; |
| } |
| IkReal x1219=x1222.value; |
| IkReal x1220=(new_r11*x1219); |
| CheckValue<IkReal> x1223=IKPowWithIntegerCheck(((((25000.00002)*gconst13*new_r01))+(((-25000.0)*new_r11*x1217))),-1); |
| if(!x1223.valid){ |
| continue; |
| } |
| if( IKabs((x1216+(((-1.0)*x1215*x1220))+((x1216*x1218*(x1223.value))))) < IKFAST_ATAN2_MAGTHRESH && IKabs((x1219*((((new_r01*x1215))+(((-25000.0)*gconst13*x1217)))))) < IKFAST_ATAN2_MAGTHRESH && IKabs(IKsqr((x1216+(((-1.0)*x1215*x1220))+((x1216*x1218*(x1223.value)))))+IKsqr((x1219*((((new_r01*x1215))+(((-25000.0)*gconst13*x1217))))))-1) <= IKFAST_SINCOS_THRESH ) |
| continue; |
| j5array[0]=IKatan2((x1216+(((-1.0)*x1215*x1220))+((x1216*x1218*(x1223.value)))), (x1219*((((new_r01*x1215))+(((-25000.0)*gconst13*x1217)))))); |
| sj5array[0]=IKsin(j5array[0]); |
| cj5array[0]=IKcos(j5array[0]); |
| if( j5array[0] > IKPI ) |
| { |
| j5array[0]-=IK2PI; |
| } |
| else if( j5array[0] < -IKPI ) |
| { j5array[0]+=IK2PI; |
| } |
| j5valid[0] = true; |
| for(int ij5 = 0; ij5 < 1; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < 1; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| { |
| IkReal evalcond[10]; |
| IkReal x1224=IKcos(j5); |
| IkReal x1225=IKsin(j5); |
| IkReal x1226=((1.0)*gconst13); |
| IkReal x1227=((1.0000000008)*gconst13); |
| IkReal x1228=(new_r11*x1225); |
| IkReal x1229=(new_r01*x1224); |
| IkReal x1230=(new_r00*x1224); |
| IkReal x1231=(new_r10*x1225); |
| IkReal x1232=x1217; |
| IkReal x1233=(x1225*x1232); |
| IkReal x1234=(x1224*x1232); |
| evalcond[0]=((((-1.0)*x1226))+((new_r11*x1224))+((new_r01*x1225))); |
| evalcond[1]=((((-1.0)*x1231))+x1230+(((-1.0)*x1227))); |
| evalcond[2]=((((-1.0)*x1232))+((new_r00*x1225))+((new_r10*x1224))); |
| evalcond[3]=((((-1.0)*x1226))+(((-1.0000000008)*x1231))+(((1.0000000008)*x1230))); |
| evalcond[4]=((((-1.0)*x1233))+(((-1.0)*x1224*x1227))+new_r00); |
| evalcond[5]=((((-1.0)*x1234))+((x1225*x1227))+new_r10); |
| evalcond[6]=((((-1.0)*x1225*x1226))+new_r01+(((1.0000000008)*x1234))); |
| evalcond[7]=((((-1.0)*x1224*x1226))+(((-1.0000000008)*x1233))+new_r11); |
| evalcond[8]=(x1229+(((-1.0)*x1228))+(((1.0000000008)*x1232))); |
| evalcond[9]=(x1232+(((-1.0000000008)*x1228))+(((1.0000000008)*x1229))); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[2]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[3]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[4]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[5]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[6]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[7]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[8]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[9]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| |
| } |
| |
| } |
| |
| } else |
| { |
| { |
| IkReal j5array[1], cj5array[1], sj5array[1]; |
| bool j5valid[1]={false}; |
| _nj5 = 1; |
| IkReal x1235=((1.0)*new_r11); |
| if((((1.0)+(((-1.0)*(gconst13*gconst13))))) < -0.00001) |
| continue; |
| IkReal x1236=IKsqrt(((1.0)+(((-1.0)*(gconst13*gconst13))))); |
| CheckValue<IkReal> x1237 = IKatan2WithCheck(IkReal(((((-1.0)*x1235*x1236))+((gconst13*new_r10)))),IkReal(((((-1.0)*gconst13*new_r00))+((new_r01*x1236)))),IKFAST_ATAN2_MAGTHRESH); |
| if(!x1237.valid){ |
| continue; |
| } |
| CheckValue<IkReal> x1238=IKPowWithIntegerCheck(IKsign(((((-1.0)*new_r00*x1235))+((new_r01*new_r10)))),-1); |
| if(!x1238.valid){ |
| continue; |
| } |
| j5array[0]=((-1.5707963267949)+(x1237.value)+(((1.5707963267949)*(x1238.value)))); |
| sj5array[0]=IKsin(j5array[0]); |
| cj5array[0]=IKcos(j5array[0]); |
| if( j5array[0] > IKPI ) |
| { |
| j5array[0]-=IK2PI; |
| } |
| else if( j5array[0] < -IKPI ) |
| { j5array[0]+=IK2PI; |
| } |
| j5valid[0] = true; |
| for(int ij5 = 0; ij5 < 1; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < 1; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| { |
| IkReal evalcond[10]; |
| IkReal x1239=IKcos(j5); |
| IkReal x1240=IKsin(j5); |
| IkReal x1241=((1.0)*gconst13); |
| IkReal x1242=((1.0000000008)*gconst13); |
| IkReal x1243=(new_r11*x1240); |
| IkReal x1244=(new_r01*x1239); |
| IkReal x1245=(new_r00*x1239); |
| IkReal x1246=(new_r10*x1240); |
| IkReal x1247=x1236; |
| IkReal x1248=(x1240*x1247); |
| IkReal x1249=(x1239*x1247); |
| evalcond[0]=((((-1.0)*x1241))+((new_r11*x1239))+((new_r01*x1240))); |
| evalcond[1]=(x1245+(((-1.0)*x1246))+(((-1.0)*x1242))); |
| evalcond[2]=((((-1.0)*x1247))+((new_r10*x1239))+((new_r00*x1240))); |
| evalcond[3]=((((1.0000000008)*x1245))+(((-1.0)*x1241))+(((-1.0000000008)*x1246))); |
| evalcond[4]=((((-1.0)*x1239*x1242))+(((-1.0)*x1248))+new_r00); |
| evalcond[5]=(((x1240*x1242))+(((-1.0)*x1249))+new_r10); |
| evalcond[6]=((((1.0000000008)*x1249))+(((-1.0)*x1240*x1241))+new_r01); |
| evalcond[7]=((((-1.0)*x1239*x1241))+new_r11+(((-1.0000000008)*x1248))); |
| evalcond[8]=(x1244+(((1.0000000008)*x1247))+(((-1.0)*x1243))); |
| evalcond[9]=(x1247+(((1.0000000008)*x1244))+(((-1.0000000008)*x1243))); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[2]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[3]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[4]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[5]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[6]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[7]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[8]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[9]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| |
| } |
| |
| } |
| |
| } else |
| { |
| { |
| IkReal j5array[1], cj5array[1], sj5array[1]; |
| bool j5valid[1]={false}; |
| _nj5 = 1; |
| IkReal x1250=((25000.0)*gconst13); |
| IkReal x1251=((25000.00002)*gconst13); |
| CheckValue<IkReal> x1252=IKPowWithIntegerCheck(IKsign(((((25000.0)*new_r10*new_r11))+(((25000.0)*new_r00*new_r01)))),-1); |
| if(!x1252.valid){ |
| continue; |
| } |
| CheckValue<IkReal> x1253 = IKatan2WithCheck(IkReal(((((-1.0)*new_r11*x1251))+((new_r00*x1250)))),IkReal((((new_r01*x1251))+((new_r10*x1250)))),IKFAST_ATAN2_MAGTHRESH); |
| if(!x1253.valid){ |
| continue; |
| } |
| j5array[0]=((-1.5707963267949)+(((1.5707963267949)*(x1252.value)))+(x1253.value)); |
| sj5array[0]=IKsin(j5array[0]); |
| cj5array[0]=IKcos(j5array[0]); |
| if( j5array[0] > IKPI ) |
| { |
| j5array[0]-=IK2PI; |
| } |
| else if( j5array[0] < -IKPI ) |
| { j5array[0]+=IK2PI; |
| } |
| j5valid[0] = true; |
| for(int ij5 = 0; ij5 < 1; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < 1; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| { |
| IkReal evalcond[10]; |
| IkReal x1254=IKcos(j5); |
| IkReal x1255=IKsin(j5); |
| IkReal x1256=((1.0)*gconst13); |
| IkReal x1257=((1.0000000008)*gconst13); |
| IkReal x1258=(new_r11*x1255); |
| IkReal x1259=(new_r01*x1254); |
| IkReal x1260=(new_r00*x1254); |
| IkReal x1261=(new_r10*x1255); |
| if((((1.0)+(((-1.0)*gconst13*x1256)))) < -0.00001) |
| continue; |
| IkReal x1262=IKsqrt(((1.0)+(((-1.0)*gconst13*x1256)))); |
| IkReal x1263=(x1255*x1262); |
| IkReal x1264=(x1254*x1262); |
| evalcond[0]=((((-1.0)*x1256))+((new_r01*x1255))+((new_r11*x1254))); |
| evalcond[1]=((((-1.0)*x1257))+x1260+(((-1.0)*x1261))); |
| evalcond[2]=(((new_r00*x1255))+(((-1.0)*x1262))+((new_r10*x1254))); |
| evalcond[3]=((((-1.0)*x1256))+(((1.0000000008)*x1260))+(((-1.0000000008)*x1261))); |
| evalcond[4]=((((-1.0)*x1254*x1257))+new_r00+(((-1.0)*x1263))); |
| evalcond[5]=(((x1255*x1257))+new_r10+(((-1.0)*x1264))); |
| evalcond[6]=((((-1.0)*x1255*x1256))+(((1.0000000008)*x1264))+new_r01); |
| evalcond[7]=((((-1.0000000008)*x1263))+(((-1.0)*x1254*x1256))+new_r11); |
| evalcond[8]=(x1259+(((1.0000000008)*x1262))+(((-1.0)*x1258))); |
| evalcond[9]=(x1262+(((1.0000000008)*x1259))+(((-1.0000000008)*x1258))); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[2]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[3]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[4]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[5]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[6]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[7]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[8]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[9]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| |
| } |
| |
| } |
| |
| } |
| } while(0); |
| if( bgotonextstatement ) |
| { |
| bool bgotonextstatement = true; |
| do |
| { |
| IkReal x1266 = ((((1.0000000016)*(new_r10*new_r10)))+(new_r00*new_r00)); |
| if(IKabs(x1266)==0){ |
| continue; |
| } |
| IkReal x1265=pow(x1266,-0.5); |
| CheckValue<IkReal> x1267 = IKatan2WithCheck(IkReal(((-1.0000000008)*new_r10)),IkReal(new_r00),IKFAST_ATAN2_MAGTHRESH); |
| if(!x1267.valid){ |
| continue; |
| } |
| IkReal gconst14=((-1.0)*(x1267.value)); |
| IkReal gconst15=((1.0000000008)*new_r10*x1265); |
| IkReal gconst16=(new_r00*x1265); |
| CheckValue<IkReal> x1268 = IKatan2WithCheck(IkReal(((-1.0000000008)*new_r10)),IkReal(new_r00),IKFAST_ATAN2_MAGTHRESH); |
| if(!x1268.valid){ |
| continue; |
| } |
| evalcond[0]=((-3.14159265358979)+(IKfmod(((3.14159265358979)+(IKabs(((x1268.value)+j3)))), 6.28318530717959))); |
| if( IKabs(evalcond[0]) < 0.0000050000000000 ) |
| { |
| bgotonextstatement=false; |
| { |
| IkReal j5eval[3]; |
| IkReal x1269=x1265; |
| sj4=4.0e-5; |
| cj4=1.0; |
| j4=4.0e-5; |
| sj3=gconst15; |
| cj3=gconst16; |
| CheckValue<IkReal> x1270 = IKatan2WithCheck(IkReal(((-1.0)*new_r10)),IkReal(new_r00),IKFAST_ATAN2_MAGTHRESH); |
| if(!x1270.valid){ |
| continue; |
| } |
| j3=((-1.0)*(x1270.value)); |
| CheckValue<IkReal> x1271 = IKatan2WithCheck(IkReal(((-1.0000000008)*new_r10)),IkReal(new_r00),IKFAST_ATAN2_MAGTHRESH); |
| if(!x1271.valid){ |
| continue; |
| } |
| IkReal gconst14=((-1.0)*(x1271.value)); |
| IkReal gconst15=((1.0000000008)*new_r10*x1269); |
| IkReal gconst16=(new_r00*x1269); |
| IkReal x1272=new_r00*new_r00; |
| IkReal x1273=(new_r01*new_r10); |
| IkReal x1274=(x1273+(((-1.0)*new_r00*new_r11))); |
| IkReal x1277 = ((((625000001.0)*(new_r10*new_r10)))+(((625000000.0)*x1272))); |
| if(IKabs(x1277)==0){ |
| continue; |
| } |
| IkReal x1275=pow(x1277,-0.5); |
| IkReal x1276=(new_r10*x1275); |
| j5eval[0]=x1274; |
| j5eval[1]=IKsign(x1274); |
| j5eval[2]=((IKabs(((((25000.0)*new_r00*x1276))+(((25000.00002)*new_r11*x1276)))))+(IKabs(((((25000.0)*x1272*x1275))+(((25000.00002)*x1273*x1275)))))); |
| if( IKabs(j5eval[0]) < 0.0000010000000000 || IKabs(j5eval[1]) < 0.0000010000000000 || IKabs(j5eval[2]) < 0.0000010000000000 ) |
| { |
| { |
| IkReal j5eval[1]; |
| IkReal x1278=x1265; |
| sj4=4.0e-5; |
| cj4=1.0; |
| j4=4.0e-5; |
| sj3=gconst15; |
| cj3=gconst16; |
| CheckValue<IkReal> x1279 = IKatan2WithCheck(IkReal(((-1.0)*new_r10)),IkReal(new_r00),IKFAST_ATAN2_MAGTHRESH); |
| if(!x1279.valid){ |
| continue; |
| } |
| j3=((-1.0)*(x1279.value)); |
| CheckValue<IkReal> x1280 = IKatan2WithCheck(IkReal(((-1.0000000008)*new_r10)),IkReal(new_r00),IKFAST_ATAN2_MAGTHRESH); |
| if(!x1280.valid){ |
| continue; |
| } |
| IkReal gconst14=((-1.0)*(x1280.value)); |
| IkReal gconst15=((1.0000000008)*new_r10*x1278); |
| IkReal gconst16=(new_r00*x1278); |
| j5eval[0]=new_r00; |
| if( IKabs(j5eval[0]) < 0.0000010000000000 ) |
| { |
| { |
| IkReal j5eval[2]; |
| IkReal x1281=x1265; |
| sj4=4.0e-5; |
| cj4=1.0; |
| j4=4.0e-5; |
| sj3=gconst15; |
| cj3=gconst16; |
| CheckValue<IkReal> x1282 = IKatan2WithCheck(IkReal(((-1.0)*new_r10)),IkReal(new_r00),IKFAST_ATAN2_MAGTHRESH); |
| if(!x1282.valid){ |
| continue; |
| } |
| j3=((-1.0)*(x1282.value)); |
| CheckValue<IkReal> x1283 = IKatan2WithCheck(IkReal(((-1.0000000008)*new_r10)),IkReal(new_r00),IKFAST_ATAN2_MAGTHRESH); |
| if(!x1283.valid){ |
| continue; |
| } |
| IkReal gconst14=((-1.0)*(x1283.value)); |
| IkReal gconst15=((1.0000000008)*new_r10*x1281); |
| IkReal gconst16=(new_r00*x1281); |
| j5eval[0]=new_r00; |
| IkReal x1284 = ((((1.0000000016)*(new_r10*new_r10)))+(new_r00*new_r00)); |
| if(IKabs(x1284)==0){ |
| continue; |
| } |
| j5eval[1]=((-1.6e-9)*new_r00*new_r10*(pow(x1284,-0.5))); |
| if( IKabs(j5eval[0]) < 0.0000010000000000 || IKabs(j5eval[1]) < 0.0000010000000000 ) |
| { |
| { |
| IkReal evalcond[1]; |
| bool bgotonextstatement = true; |
| do |
| { |
| evalcond[0]=IKabs(new_r00); |
| if( IKabs(evalcond[0]) < 0.0000050000000000 ) |
| { |
| bgotonextstatement=false; |
| { |
| IkReal j5eval[1]; |
| sj4=4.0e-5; |
| cj4=1.0; |
| j4=4.0e-5; |
| sj3=gconst15; |
| cj3=gconst16; |
| CheckValue<IkReal> x1285 = IKatan2WithCheck(IkReal(((-1.0)*new_r10)),IkReal(0),IKFAST_ATAN2_MAGTHRESH); |
| if(!x1285.valid){ |
| continue; |
| } |
| j3=((-1.0)*(x1285.value)); |
| new_r00=0; |
| CheckValue<IkReal> x1286 = IKatan2WithCheck(IkReal(((-1.0000000008)*new_r10)),IkReal(0),IKFAST_ATAN2_MAGTHRESH); |
| if(!x1286.valid){ |
| continue; |
| } |
| IkReal gconst14=((-1.0)*(x1286.value)); |
| IkReal x1287 = new_r10*new_r10; |
| if(IKabs(x1287)==0){ |
| continue; |
| } |
| IkReal gconst15=(new_r10*(pow(x1287,-0.5))); |
| IkReal gconst16=0; |
| j5eval[0]=new_r10; |
| if( IKabs(j5eval[0]) < 0.0000010000000000 ) |
| { |
| { |
| IkReal j5array[1], cj5array[1], sj5array[1]; |
| bool j5valid[1]={false}; |
| _nj5 = 1; |
| CheckValue<IkReal> x1289=IKPowWithIntegerCheck(gconst15,-1); |
| if(!x1289.valid){ |
| continue; |
| } |
| IkReal x1288=x1289.value; |
| if( IKabs(((-0.9999999992)*new_r11*x1288)) < IKFAST_ATAN2_MAGTHRESH && IKabs(((-1.0)*new_r10*x1288)) < IKFAST_ATAN2_MAGTHRESH && IKabs(IKsqr(((-0.9999999992)*new_r11*x1288))+IKsqr(((-1.0)*new_r10*x1288))-1) <= IKFAST_SINCOS_THRESH ) |
| continue; |
| j5array[0]=IKatan2(((-0.9999999992)*new_r11*x1288), ((-1.0)*new_r10*x1288)); |
| sj5array[0]=IKsin(j5array[0]); |
| cj5array[0]=IKcos(j5array[0]); |
| if( j5array[0] > IKPI ) |
| { |
| j5array[0]-=IK2PI; |
| } |
| else if( j5array[0] < -IKPI ) |
| { j5array[0]+=IK2PI; |
| } |
| j5valid[0] = true; |
| for(int ij5 = 0; ij5 < 1; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < 1; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| { |
| IkReal evalcond[10]; |
| IkReal x1290=IKsin(j5); |
| IkReal x1291=IKcos(j5); |
| IkReal x1292=(gconst15*x1290); |
| IkReal x1293=(new_r11*x1290); |
| IkReal x1294=(gconst15*x1291); |
| IkReal x1295=(new_r10*x1290); |
| IkReal x1296=(new_r01*x1291); |
| evalcond[0]=x1292; |
| evalcond[1]=((-1.0)*x1295); |
| evalcond[2]=(gconst15+((new_r10*x1291))); |
| evalcond[3]=(x1294+new_r10); |
| evalcond[4]=((-1.0000000008)*x1295); |
| evalcond[5]=(((new_r11*x1291))+((new_r01*x1290))); |
| evalcond[6]=((((-1.0000000008)*x1294))+new_r01); |
| evalcond[7]=((((1.0000000008)*x1292))+new_r11); |
| evalcond[8]=(x1296+(((-1.0000000008)*gconst15))+(((-1.0)*x1293))); |
| evalcond[9]=((((1.0000000008)*x1296))+(((-1.0000000008)*x1293))+(((-1.0)*gconst15))); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[2]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[3]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[4]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[5]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[6]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[7]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[8]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[9]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| |
| } else |
| { |
| { |
| IkReal j5array[1], cj5array[1], sj5array[1]; |
| bool j5valid[1]={false}; |
| _nj5 = 1; |
| CheckValue<IkReal> x1297=IKPowWithIntegerCheck(gconst15,-1); |
| if(!x1297.valid){ |
| continue; |
| } |
| CheckValue<IkReal> x1298=IKPowWithIntegerCheck(new_r10,-1); |
| if(!x1298.valid){ |
| continue; |
| } |
| if( IKabs(((-0.9999999992)*new_r11*(x1297.value))) < IKFAST_ATAN2_MAGTHRESH && IKabs(((-1.0)*gconst15*(x1298.value))) < IKFAST_ATAN2_MAGTHRESH && IKabs(IKsqr(((-0.9999999992)*new_r11*(x1297.value)))+IKsqr(((-1.0)*gconst15*(x1298.value)))-1) <= IKFAST_SINCOS_THRESH ) |
| continue; |
| j5array[0]=IKatan2(((-0.9999999992)*new_r11*(x1297.value)), ((-1.0)*gconst15*(x1298.value))); |
| sj5array[0]=IKsin(j5array[0]); |
| cj5array[0]=IKcos(j5array[0]); |
| if( j5array[0] > IKPI ) |
| { |
| j5array[0]-=IK2PI; |
| } |
| else if( j5array[0] < -IKPI ) |
| { j5array[0]+=IK2PI; |
| } |
| j5valid[0] = true; |
| for(int ij5 = 0; ij5 < 1; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < 1; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| { |
| IkReal evalcond[10]; |
| IkReal x1299=IKsin(j5); |
| IkReal x1300=IKcos(j5); |
| IkReal x1301=(gconst15*x1299); |
| IkReal x1302=(new_r11*x1299); |
| IkReal x1303=(gconst15*x1300); |
| IkReal x1304=(new_r10*x1299); |
| IkReal x1305=(new_r01*x1300); |
| evalcond[0]=x1301; |
| evalcond[1]=((-1.0)*x1304); |
| evalcond[2]=(gconst15+((new_r10*x1300))); |
| evalcond[3]=(x1303+new_r10); |
| evalcond[4]=((-1.0000000008)*x1304); |
| evalcond[5]=(((new_r11*x1300))+((new_r01*x1299))); |
| evalcond[6]=((((-1.0000000008)*x1303))+new_r01); |
| evalcond[7]=((((1.0000000008)*x1301))+new_r11); |
| evalcond[8]=(x1305+(((-1.0)*x1302))+(((-1.0000000008)*gconst15))); |
| evalcond[9]=((((-1.0000000008)*x1302))+(((1.0000000008)*x1305))+(((-1.0)*gconst15))); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[2]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[3]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[4]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[5]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[6]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[7]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[8]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[9]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| |
| } |
| |
| } |
| |
| } |
| } while(0); |
| if( bgotonextstatement ) |
| { |
| bool bgotonextstatement = true; |
| do |
| { |
| evalcond[0]=((IKabs(new_r11))+(IKabs(new_r01))); |
| if( IKabs(evalcond[0]) < 0.0000050000000000 ) |
| { |
| bgotonextstatement=false; |
| { |
| IkReal j5eval[5]; |
| IkReal x1307 = ((1.0)+(((1.6e-9)*(new_r10*new_r10)))); |
| if(IKabs(x1307)==0){ |
| continue; |
| } |
| IkReal x1306=pow(x1307,-0.5); |
| sj4=4.0e-5; |
| cj4=1.0; |
| j4=4.0e-5; |
| sj3=gconst15; |
| cj3=gconst16; |
| CheckValue<IkReal> x1308 = IKatan2WithCheck(IkReal(((-1.0)*new_r10)),IkReal(new_r00),IKFAST_ATAN2_MAGTHRESH); |
| if(!x1308.valid){ |
| continue; |
| } |
| j3=((-1.0)*(x1308.value)); |
| new_r11=0; |
| new_r01=0; |
| new_r22=0; |
| new_r20=0; |
| CheckValue<IkReal> x1309 = IKatan2WithCheck(IkReal(((-1.0000000008)*new_r10)),IkReal(new_r00),IKFAST_ATAN2_MAGTHRESH); |
| if(!x1309.valid){ |
| continue; |
| } |
| IkReal gconst14=((-1.0)*(x1309.value)); |
| IkReal gconst15=((1.0000000008)*new_r10*x1306); |
| IkReal gconst16=(new_r00*x1306); |
| j5eval[0]=-1.0; |
| j5eval[1]=3.90625000625e+17; |
| j5eval[2]=((1.0)+(((1.6e-9)*(new_r10*new_r10)))); |
| j5eval[3]=1.0; |
| j5eval[4]=-1.0; |
| if( IKabs(j5eval[0]) < 0.0000010000000000 || IKabs(j5eval[1]) < 0.0000010000000000 || IKabs(j5eval[2]) < 0.0000010000000000 || IKabs(j5eval[3]) < 0.0000010000000000 || IKabs(j5eval[4]) < 0.0000010000000000 ) |
| { |
| { |
| IkReal j5eval[1]; |
| IkReal x1311 = ((1.0)+(((1.6e-9)*(new_r10*new_r10)))); |
| if(IKabs(x1311)==0){ |
| continue; |
| } |
| IkReal x1310=pow(x1311,-0.5); |
| sj4=4.0e-5; |
| cj4=1.0; |
| j4=4.0e-5; |
| sj3=gconst15; |
| cj3=gconst16; |
| CheckValue<IkReal> x1312 = IKatan2WithCheck(IkReal(((-1.0)*new_r10)),IkReal(new_r00),IKFAST_ATAN2_MAGTHRESH); |
| if(!x1312.valid){ |
| continue; |
| } |
| j3=((-1.0)*(x1312.value)); |
| new_r11=0; |
| new_r01=0; |
| new_r22=0; |
| new_r20=0; |
| CheckValue<IkReal> x1313 = IKatan2WithCheck(IkReal(((-1.0000000008)*new_r10)),IkReal(new_r00),IKFAST_ATAN2_MAGTHRESH); |
| if(!x1313.valid){ |
| continue; |
| } |
| IkReal gconst14=((-1.0)*(x1313.value)); |
| IkReal gconst15=((1.0000000008)*new_r10*x1310); |
| IkReal gconst16=(new_r00*x1310); |
| IkReal x1314=new_r10*new_r10; |
| CheckValue<IkReal> x1316=IKPowWithIntegerCheck(((1.0)+(((1.6e-9)*x1314))),-1); |
| if(!x1316.valid){ |
| continue; |
| } |
| IkReal x1315=x1316.value; |
| IkReal x1317=((1.0)+(((-1.0)*x1314))); |
| j5eval[0]=IKsign(((((625000002.0)*x1315*(x1314*x1314)))+(((-625000000.0)*x1315*(x1317*x1317))))); |
| if( IKabs(j5eval[0]) < 0.0000010000000000 ) |
| { |
| { |
| IkReal j5eval[2]; |
| IkReal x1319 = ((1.0)+(((1.6e-9)*(new_r10*new_r10)))); |
| if(IKabs(x1319)==0){ |
| continue; |
| } |
| IkReal x1318=pow(x1319,-0.5); |
| sj4=4.0e-5; |
| cj4=1.0; |
| j4=4.0e-5; |
| sj3=gconst15; |
| cj3=gconst16; |
| CheckValue<IkReal> x1320 = IKatan2WithCheck(IkReal(((-1.0)*new_r10)),IkReal(new_r00),IKFAST_ATAN2_MAGTHRESH); |
| if(!x1320.valid){ |
| continue; |
| } |
| j3=((-1.0)*(x1320.value)); |
| new_r11=0; |
| new_r01=0; |
| new_r22=0; |
| new_r20=0; |
| CheckValue<IkReal> x1321 = IKatan2WithCheck(IkReal(((-1.0000000008)*new_r10)),IkReal(new_r00),IKFAST_ATAN2_MAGTHRESH); |
| if(!x1321.valid){ |
| continue; |
| } |
| IkReal gconst14=((-1.0)*(x1321.value)); |
| IkReal gconst15=((1.0000000008)*new_r10*x1318); |
| IkReal gconst16=(new_r00*x1318); |
| IkReal x1322=new_r10*new_r10; |
| IkReal x1323=((1.0)+(((1.6e-9)*x1322))); |
| CheckValue<IkReal> x1324=IKPowWithIntegerCheck(x1323,-1); |
| if(!x1324.valid){ |
| continue; |
| } |
| j5eval[0]=((-3.20000000256e-9)*x1322*(x1324.value)*(((1.0)+(((-1.0)*x1322))))); |
| IkReal x1325 = x1323; |
| if(IKabs(x1325)==0){ |
| continue; |
| } |
| j5eval[1]=((-1.6e-9)*new_r00*new_r10*(pow(x1325,-0.5))); |
| if( IKabs(j5eval[0]) < 0.0000010000000000 || IKabs(j5eval[1]) < 0.0000010000000000 ) |
| { |
| continue; // 3 cases reached |
| |
| } else |
| { |
| { |
| IkReal j5array[1], cj5array[1], sj5array[1]; |
| bool j5valid[1]={false}; |
| _nj5 = 1; |
| IkReal x1326=gconst15*gconst15; |
| IkReal x1327=(gconst16*new_r10); |
| CheckValue<IkReal> x1328=IKPowWithIntegerCheck(((((625000000.0)*(x1327*x1327)))+(((-625000001.0)*x1326*(new_r00*new_r00)))),-1); |
| if(!x1328.valid){ |
| continue; |
| } |
| CheckValue<IkReal> x1329=IKPowWithIntegerCheck(((((25000.0)*x1327))+(((-25000.00002)*gconst15*new_r00))),-1); |
| if(!x1329.valid){ |
| continue; |
| } |
| if( IKabs(((x1328.value)*(((((625000000.5)*x1326*x1327))+(((625000001.0)*new_r00*(gconst15*gconst15*gconst15))))))) < IKFAST_ATAN2_MAGTHRESH && IKabs(((-25000.0)*gconst15*gconst16*(x1329.value))) < IKFAST_ATAN2_MAGTHRESH && IKabs(IKsqr(((x1328.value)*(((((625000000.5)*x1326*x1327))+(((625000001.0)*new_r00*(gconst15*gconst15*gconst15)))))))+IKsqr(((-25000.0)*gconst15*gconst16*(x1329.value)))-1) <= IKFAST_SINCOS_THRESH ) |
| continue; |
| j5array[0]=IKatan2(((x1328.value)*(((((625000000.5)*x1326*x1327))+(((625000001.0)*new_r00*(gconst15*gconst15*gconst15)))))), ((-25000.0)*gconst15*gconst16*(x1329.value))); |
| sj5array[0]=IKsin(j5array[0]); |
| cj5array[0]=IKcos(j5array[0]); |
| if( j5array[0] > IKPI ) |
| { |
| j5array[0]-=IK2PI; |
| } |
| else if( j5array[0] < -IKPI ) |
| { j5array[0]+=IK2PI; |
| } |
| j5valid[0] = true; |
| for(int ij5 = 0; ij5 < 1; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < 1; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| { |
| IkReal evalcond[7]; |
| IkReal x1330=IKsin(j5); |
| IkReal x1331=IKcos(j5); |
| IkReal x1332=((1.0000000008)*gconst16); |
| IkReal x1333=((1.0)*gconst16); |
| IkReal x1334=((1.0000000008)*x1330); |
| IkReal x1335=((1.0)*x1330); |
| IkReal x1336=(gconst15*x1331); |
| IkReal x1337=(new_r00*x1331); |
| evalcond[0]=(((new_r10*x1331))+gconst15+((new_r00*x1330))); |
| evalcond[1]=(((gconst15*x1330))+(((-1.0)*x1331*x1332))+new_r00); |
| evalcond[2]=(x1336+((x1330*x1332))+new_r10); |
| evalcond[3]=((((-1.0)*x1330*x1333))+(((-1.0000000008)*x1336))); |
| evalcond[4]=(((gconst15*x1334))+(((-1.0)*x1331*x1333))); |
| evalcond[5]=(x1337+(((-1.0)*new_r10*x1335))+(((-1.0)*x1332))); |
| evalcond[6]=((((-1.0)*new_r10*x1334))+(((-1.0)*x1333))+(((1.0000000008)*x1337))); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[2]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[3]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[4]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[5]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[6]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| |
| } |
| |
| } |
| |
| } else |
| { |
| { |
| IkReal j5array[1], cj5array[1], sj5array[1]; |
| bool j5valid[1]={false}; |
| _nj5 = 1; |
| IkReal x1338=gconst16*gconst16; |
| IkReal x1339=gconst15*gconst15; |
| IkReal x1340=((625000000.0)*x1338); |
| IkReal x1341=((625000000.5)*gconst16*x1339); |
| CheckValue<IkReal> x1342=IKPowWithIntegerCheck(IKsign(((((-1.0)*x1340*(new_r00*new_r00)))+(((625000001.0)*x1339*(new_r10*new_r10))))),-1); |
| if(!x1342.valid){ |
| continue; |
| } |
| CheckValue<IkReal> x1343 = IKatan2WithCheck(IkReal((((gconst15*new_r00*x1340))+(((-1.0)*new_r10*x1341)))),IkReal(((((-625000001.0)*new_r10*(gconst15*gconst15*gconst15)))+((new_r00*x1341)))),IKFAST_ATAN2_MAGTHRESH); |
| if(!x1343.valid){ |
| continue; |
| } |
| j5array[0]=((-1.5707963267949)+(((1.5707963267949)*(x1342.value)))+(x1343.value)); |
| sj5array[0]=IKsin(j5array[0]); |
| cj5array[0]=IKcos(j5array[0]); |
| if( j5array[0] > IKPI ) |
| { |
| j5array[0]-=IK2PI; |
| } |
| else if( j5array[0] < -IKPI ) |
| { j5array[0]+=IK2PI; |
| } |
| j5valid[0] = true; |
| for(int ij5 = 0; ij5 < 1; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < 1; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| { |
| IkReal evalcond[7]; |
| IkReal x1344=IKsin(j5); |
| IkReal x1345=IKcos(j5); |
| IkReal x1346=((1.0000000008)*gconst16); |
| IkReal x1347=((1.0)*gconst16); |
| IkReal x1348=((1.0000000008)*x1344); |
| IkReal x1349=((1.0)*x1344); |
| IkReal x1350=(gconst15*x1345); |
| IkReal x1351=(new_r00*x1345); |
| evalcond[0]=(gconst15+((new_r00*x1344))+((new_r10*x1345))); |
| evalcond[1]=(new_r00+((gconst15*x1344))+(((-1.0)*x1345*x1346))); |
| evalcond[2]=(x1350+((x1344*x1346))+new_r10); |
| evalcond[3]=((((-1.0000000008)*x1350))+(((-1.0)*x1344*x1347))); |
| evalcond[4]=(((gconst15*x1348))+(((-1.0)*x1345*x1347))); |
| evalcond[5]=(x1351+(((-1.0)*x1346))+(((-1.0)*new_r10*x1349))); |
| evalcond[6]=((((-1.0)*x1347))+(((-1.0)*new_r10*x1348))+(((1.0000000008)*x1351))); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[2]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[3]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[4]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[5]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[6]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| |
| } |
| |
| } |
| |
| } else |
| { |
| { |
| IkReal j5array[1], cj5array[1], sj5array[1]; |
| bool j5valid[1]={false}; |
| _nj5 = 1; |
| IkReal x1352=((25000.0)*gconst15); |
| IkReal x1353=((25000.00002)*gconst16); |
| CheckValue<IkReal> x1354=IKPowWithIntegerCheck(IKsign(((((-25000.0)*(new_r10*new_r10)))+(((-25000.0)*(new_r00*new_r00))))),-1); |
| if(!x1354.valid){ |
| continue; |
| } |
| CheckValue<IkReal> x1355 = IKatan2WithCheck(IkReal((((new_r10*x1353))+((new_r00*x1352)))),IkReal((((new_r10*x1352))+(((-1.0)*new_r00*x1353)))),IKFAST_ATAN2_MAGTHRESH); |
| if(!x1355.valid){ |
| continue; |
| } |
| j5array[0]=((-1.5707963267949)+(((1.5707963267949)*(x1354.value)))+(x1355.value)); |
| sj5array[0]=IKsin(j5array[0]); |
| cj5array[0]=IKcos(j5array[0]); |
| if( j5array[0] > IKPI ) |
| { |
| j5array[0]-=IK2PI; |
| } |
| else if( j5array[0] < -IKPI ) |
| { j5array[0]+=IK2PI; |
| } |
| j5valid[0] = true; |
| for(int ij5 = 0; ij5 < 1; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < 1; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| { |
| IkReal evalcond[7]; |
| IkReal x1356=IKsin(j5); |
| IkReal x1357=IKcos(j5); |
| IkReal x1358=((1.0000000008)*gconst16); |
| IkReal x1359=((1.0)*gconst16); |
| IkReal x1360=((1.0000000008)*x1356); |
| IkReal x1361=((1.0)*x1356); |
| IkReal x1362=(gconst15*x1357); |
| IkReal x1363=(new_r00*x1357); |
| evalcond[0]=(((new_r10*x1357))+gconst15+((new_r00*x1356))); |
| evalcond[1]=(((gconst15*x1356))+new_r00+(((-1.0)*x1357*x1358))); |
| evalcond[2]=(x1362+new_r10+((x1356*x1358))); |
| evalcond[3]=((((-1.0000000008)*x1362))+(((-1.0)*x1356*x1359))); |
| evalcond[4]=(((gconst15*x1360))+(((-1.0)*x1357*x1359))); |
| evalcond[5]=(x1363+(((-1.0)*x1358))+(((-1.0)*new_r10*x1361))); |
| evalcond[6]=((((-1.0)*x1359))+(((1.0000000008)*x1363))+(((-1.0)*new_r10*x1360))); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[2]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[3]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[4]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[5]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[6]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| |
| } |
| |
| } |
| |
| } |
| } while(0); |
| if( bgotonextstatement ) |
| { |
| bool bgotonextstatement = true; |
| do |
| { |
| evalcond[0]=((IKabs(new_r11))+(IKabs(new_r10))); |
| if( IKabs(evalcond[0]) < 0.0000050000000000 ) |
| { |
| bgotonextstatement=false; |
| { |
| IkReal j5array[1], cj5array[1], sj5array[1]; |
| bool j5valid[1]={false}; |
| _nj5 = 1; |
| CheckValue<IkReal> x1365=IKPowWithIntegerCheck(gconst16,-1); |
| if(!x1365.valid){ |
| continue; |
| } |
| IkReal x1364=x1365.value; |
| if( IKabs((new_r01*x1364)) < IKFAST_ATAN2_MAGTHRESH && IKabs(((0.9999999992)*new_r00*x1364)) < IKFAST_ATAN2_MAGTHRESH && IKabs(IKsqr((new_r01*x1364))+IKsqr(((0.9999999992)*new_r00*x1364))-1) <= IKFAST_SINCOS_THRESH ) |
| continue; |
| j5array[0]=IKatan2((new_r01*x1364), ((0.9999999992)*new_r00*x1364)); |
| sj5array[0]=IKsin(j5array[0]); |
| cj5array[0]=IKcos(j5array[0]); |
| if( j5array[0] > IKPI ) |
| { |
| j5array[0]-=IK2PI; |
| } |
| else if( j5array[0] < -IKPI ) |
| { j5array[0]+=IK2PI; |
| } |
| j5valid[0] = true; |
| for(int ij5 = 0; ij5 < 1; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < 1; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| { |
| IkReal evalcond[10]; |
| IkReal x1366=IKcos(j5); |
| IkReal x1367=IKsin(j5); |
| IkReal x1368=((1.0)*gconst16); |
| IkReal x1369=((1.0000000008)*gconst16); |
| IkReal x1370=(new_r00*x1366); |
| IkReal x1371=(new_r01*x1366); |
| evalcond[0]=(new_r00*x1367); |
| evalcond[1]=x1371; |
| evalcond[2]=((-1.0)*gconst16*x1366); |
| evalcond[3]=(new_r01+(((-1.0)*x1367*x1368))); |
| evalcond[4]=(((new_r01*x1367))+(((-1.0)*x1368))); |
| evalcond[5]=(x1367*x1369); |
| evalcond[6]=((1.0000000008)*x1371); |
| evalcond[7]=((((-1.0)*x1366*x1369))+new_r00); |
| evalcond[8]=(x1370+(((-1.0)*x1369))); |
| evalcond[9]=((((1.0000000008)*x1370))+(((-1.0)*x1368))); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[2]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[3]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[4]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[5]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[6]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[7]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[8]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[9]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| |
| } |
| } while(0); |
| if( bgotonextstatement ) |
| { |
| bool bgotonextstatement = true; |
| do |
| { |
| if( 1 ) |
| { |
| bgotonextstatement=false; |
| continue; // branch miss [j5] |
| |
| } |
| } while(0); |
| if( bgotonextstatement ) |
| { |
| } |
| } |
| } |
| } |
| } |
| |
| } else |
| { |
| { |
| IkReal j5array[1], cj5array[1], sj5array[1]; |
| bool j5valid[1]={false}; |
| _nj5 = 1; |
| CheckValue<IkReal> x1378=IKPowWithIntegerCheck(new_r00,-1); |
| if(!x1378.valid){ |
| continue; |
| } |
| IkReal x1372=x1378.value; |
| IkReal x1373=((25000.0)*gconst16); |
| IkReal x1374=((25000.0)*new_r01); |
| IkReal x1375=(gconst15*x1372); |
| CheckValue<IkReal> x1379=IKPowWithIntegerCheck(((((-25000.00002)*gconst15*new_r00))+((new_r10*x1373))),-1); |
| if(!x1379.valid){ |
| continue; |
| } |
| IkReal x1376=x1379.value; |
| IkReal x1377=(new_r10*x1376); |
| CheckValue<IkReal> x1380=IKPowWithIntegerCheck(((((25000.0)*gconst16*new_r10))+(((-25000.00002)*gconst15*new_r00))),-1); |
| if(!x1380.valid){ |
| continue; |
| } |
| if( IKabs(((((-1.0)*x1375))+((new_r10*x1373*x1375*(x1380.value)))+((x1374*x1377)))) < IKFAST_ATAN2_MAGTHRESH && IKabs((x1376*(((((-1.0)*new_r00*x1374))+(((-1.0)*gconst15*x1373)))))) < IKFAST_ATAN2_MAGTHRESH && IKabs(IKsqr(((((-1.0)*x1375))+((new_r10*x1373*x1375*(x1380.value)))+((x1374*x1377))))+IKsqr((x1376*(((((-1.0)*new_r00*x1374))+(((-1.0)*gconst15*x1373))))))-1) <= IKFAST_SINCOS_THRESH ) |
| continue; |
| j5array[0]=IKatan2(((((-1.0)*x1375))+((new_r10*x1373*x1375*(x1380.value)))+((x1374*x1377))), (x1376*(((((-1.0)*new_r00*x1374))+(((-1.0)*gconst15*x1373)))))); |
| sj5array[0]=IKsin(j5array[0]); |
| cj5array[0]=IKcos(j5array[0]); |
| if( j5array[0] > IKPI ) |
| { |
| j5array[0]-=IK2PI; |
| } |
| else if( j5array[0] < -IKPI ) |
| { j5array[0]+=IK2PI; |
| } |
| j5valid[0] = true; |
| for(int ij5 = 0; ij5 < 1; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < 1; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| { |
| IkReal evalcond[10]; |
| IkReal x1381=IKcos(j5); |
| IkReal x1382=IKsin(j5); |
| IkReal x1383=((1.0)*gconst16); |
| IkReal x1384=((1.0000000008)*gconst15); |
| IkReal x1385=((1.0000000008)*gconst16); |
| IkReal x1386=(gconst15*x1381); |
| IkReal x1387=(new_r00*x1381); |
| IkReal x1388=((1.0000000008)*x1382); |
| IkReal x1389=(new_r01*x1381); |
| IkReal x1390=((1.0)*x1382); |
| evalcond[0]=(((new_r10*x1381))+gconst15+((new_r00*x1382))); |
| evalcond[1]=((((-1.0)*x1383))+((new_r11*x1381))+((new_r01*x1382))); |
| evalcond[2]=(((gconst15*x1382))+(((-1.0)*x1381*x1385))+new_r00); |
| evalcond[3]=(x1386+new_r10+((x1382*x1385))); |
| evalcond[4]=((((-1.0)*x1382*x1383))+(((-1.0)*x1381*x1384))+new_r01); |
| evalcond[5]=((((-1.0)*x1381*x1383))+new_r11+((x1382*x1384))); |
| evalcond[6]=((((-1.0)*x1385))+x1387+(((-1.0)*new_r10*x1390))); |
| evalcond[7]=((((-1.0)*x1384))+x1389+(((-1.0)*new_r11*x1390))); |
| evalcond[8]=((((-1.0)*x1383))+(((1.0000000008)*x1387))+(((-1.0)*new_r10*x1388))); |
| evalcond[9]=((((1.0000000008)*x1389))+(((-1.0)*new_r11*x1388))+(((-1.0)*gconst15))); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[2]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[3]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[4]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[5]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[6]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[7]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[8]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[9]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| |
| } |
| |
| } |
| |
| } else |
| { |
| { |
| IkReal j5array[1], cj5array[1], sj5array[1]; |
| bool j5valid[1]={false}; |
| _nj5 = 1; |
| CheckValue<IkReal> x1395=IKPowWithIntegerCheck(new_r00,-1); |
| if(!x1395.valid){ |
| continue; |
| } |
| IkReal x1391=x1395.value; |
| IkReal x1392=gconst15*gconst15; |
| IkReal x1393=((25000.0)*new_r10); |
| CheckValue<IkReal> x1396=IKPowWithIntegerCheck(((((25000.00002)*gconst16*new_r00))+((gconst15*x1393))),-1); |
| if(!x1396.valid){ |
| continue; |
| } |
| IkReal x1394=x1396.value; |
| CheckValue<IkReal> x1397=IKPowWithIntegerCheck(x1391,-2); |
| if(!x1397.valid){ |
| continue; |
| } |
| if( IKabs(((((-1.0)*gconst15*x1391))+(((-1.0)*new_r00*x1393*x1394))+((x1391*x1392*x1393*x1394)))) < IKFAST_ATAN2_MAGTHRESH && IKabs((x1394*(((((-25000.0)*x1392))+(((25000.0)*(x1397.value))))))) < IKFAST_ATAN2_MAGTHRESH && IKabs(IKsqr(((((-1.0)*gconst15*x1391))+(((-1.0)*new_r00*x1393*x1394))+((x1391*x1392*x1393*x1394))))+IKsqr((x1394*(((((-25000.0)*x1392))+(((25000.0)*(x1397.value)))))))-1) <= IKFAST_SINCOS_THRESH ) |
| continue; |
| j5array[0]=IKatan2(((((-1.0)*gconst15*x1391))+(((-1.0)*new_r00*x1393*x1394))+((x1391*x1392*x1393*x1394))), (x1394*(((((-25000.0)*x1392))+(((25000.0)*(x1397.value))))))); |
| sj5array[0]=IKsin(j5array[0]); |
| cj5array[0]=IKcos(j5array[0]); |
| if( j5array[0] > IKPI ) |
| { |
| j5array[0]-=IK2PI; |
| } |
| else if( j5array[0] < -IKPI ) |
| { j5array[0]+=IK2PI; |
| } |
| j5valid[0] = true; |
| for(int ij5 = 0; ij5 < 1; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < 1; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| { |
| IkReal evalcond[10]; |
| IkReal x1398=IKcos(j5); |
| IkReal x1399=IKsin(j5); |
| IkReal x1400=((1.0)*gconst16); |
| IkReal x1401=((1.0000000008)*gconst15); |
| IkReal x1402=((1.0000000008)*gconst16); |
| IkReal x1403=(gconst15*x1398); |
| IkReal x1404=(new_r00*x1398); |
| IkReal x1405=((1.0000000008)*x1399); |
| IkReal x1406=(new_r01*x1398); |
| IkReal x1407=((1.0)*x1399); |
| evalcond[0]=(((new_r10*x1398))+gconst15+((new_r00*x1399))); |
| evalcond[1]=(((new_r11*x1398))+(((-1.0)*x1400))+((new_r01*x1399))); |
| evalcond[2]=(((gconst15*x1399))+(((-1.0)*x1398*x1402))+new_r00); |
| evalcond[3]=(((x1399*x1402))+x1403+new_r10); |
| evalcond[4]=((((-1.0)*x1399*x1400))+(((-1.0)*x1398*x1401))+new_r01); |
| evalcond[5]=((((-1.0)*x1398*x1400))+((x1399*x1401))+new_r11); |
| evalcond[6]=((((-1.0)*x1402))+x1404+(((-1.0)*new_r10*x1407))); |
| evalcond[7]=((((-1.0)*x1401))+x1406+(((-1.0)*new_r11*x1407))); |
| evalcond[8]=((((1.0000000008)*x1404))+(((-1.0)*x1400))+(((-1.0)*new_r10*x1405))); |
| evalcond[9]=((((1.0000000008)*x1406))+(((-1.0)*gconst15))+(((-1.0)*new_r11*x1405))); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[2]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[3]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[4]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[5]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[6]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[7]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[8]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[9]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| |
| } |
| |
| } |
| |
| } else |
| { |
| { |
| IkReal j5array[1], cj5array[1], sj5array[1]; |
| bool j5valid[1]={false}; |
| _nj5 = 1; |
| IkReal x1408=((1.0)*new_r00); |
| CheckValue<IkReal> x1409=IKPowWithIntegerCheck(IKsign((((new_r01*new_r10))+(((-1.0)*new_r11*x1408)))),-1); |
| if(!x1409.valid){ |
| continue; |
| } |
| CheckValue<IkReal> x1410 = IKatan2WithCheck(IkReal((((gconst16*new_r10))+((gconst15*new_r11)))),IkReal(((((-1.0)*gconst16*x1408))+(((-1.0)*gconst15*new_r01)))),IKFAST_ATAN2_MAGTHRESH); |
| if(!x1410.valid){ |
| continue; |
| } |
| j5array[0]=((-1.5707963267949)+(((1.5707963267949)*(x1409.value)))+(x1410.value)); |
| sj5array[0]=IKsin(j5array[0]); |
| cj5array[0]=IKcos(j5array[0]); |
| if( j5array[0] > IKPI ) |
| { |
| j5array[0]-=IK2PI; |
| } |
| else if( j5array[0] < -IKPI ) |
| { j5array[0]+=IK2PI; |
| } |
| j5valid[0] = true; |
| for(int ij5 = 0; ij5 < 1; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < 1; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| { |
| IkReal evalcond[10]; |
| IkReal x1411=IKcos(j5); |
| IkReal x1412=IKsin(j5); |
| IkReal x1413=((1.0)*gconst16); |
| IkReal x1414=((1.0000000008)*gconst15); |
| IkReal x1415=((1.0000000008)*gconst16); |
| IkReal x1416=(gconst15*x1411); |
| IkReal x1417=(new_r00*x1411); |
| IkReal x1418=((1.0000000008)*x1412); |
| IkReal x1419=(new_r01*x1411); |
| IkReal x1420=((1.0)*x1412); |
| evalcond[0]=(((new_r00*x1412))+gconst15+((new_r10*x1411))); |
| evalcond[1]=(((new_r01*x1412))+(((-1.0)*x1413))+((new_r11*x1411))); |
| evalcond[2]=((((-1.0)*x1411*x1415))+((gconst15*x1412))+new_r00); |
| evalcond[3]=(((x1412*x1415))+x1416+new_r10); |
| evalcond[4]=((((-1.0)*x1412*x1413))+(((-1.0)*x1411*x1414))+new_r01); |
| evalcond[5]=(((x1412*x1414))+(((-1.0)*x1411*x1413))+new_r11); |
| evalcond[6]=((((-1.0)*x1415))+(((-1.0)*new_r10*x1420))+x1417); |
| evalcond[7]=((((-1.0)*x1414))+(((-1.0)*new_r11*x1420))+x1419); |
| evalcond[8]=((((-1.0)*new_r10*x1418))+(((-1.0)*x1413))+(((1.0000000008)*x1417))); |
| evalcond[9]=((((-1.0)*new_r11*x1418))+(((1.0000000008)*x1419))+(((-1.0)*gconst15))); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[2]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[3]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[4]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[5]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[6]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[7]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[8]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[9]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| |
| } |
| |
| } |
| |
| } |
| } while(0); |
| if( bgotonextstatement ) |
| { |
| bool bgotonextstatement = true; |
| do |
| { |
| IkReal x1422 = ((((1.0000000016)*(new_r10*new_r10)))+(new_r00*new_r00)); |
| if(IKabs(x1422)==0){ |
| continue; |
| } |
| IkReal x1421=pow(x1422,-0.5); |
| CheckValue<IkReal> x1423 = IKatan2WithCheck(IkReal(((-1.0000000008)*new_r10)),IkReal(new_r00),IKFAST_ATAN2_MAGTHRESH); |
| if(!x1423.valid){ |
| continue; |
| } |
| IkReal gconst17=((3.14159265358979)+(((-1.0)*(x1423.value)))); |
| IkReal gconst18=((-1.0000000008)*new_r10*x1421); |
| IkReal gconst19=((-1.0)*new_r00*x1421); |
| CheckValue<IkReal> x1424 = IKatan2WithCheck(IkReal(((-1.0000000008)*new_r10)),IkReal(new_r00),IKFAST_ATAN2_MAGTHRESH); |
| if(!x1424.valid){ |
| continue; |
| } |
| evalcond[0]=((-3.14159265358979)+(IKfmod(((3.14159265358979)+(IKabs(((-3.14159265358979)+(x1424.value)+j3)))), 6.28318530717959))); |
| if( IKabs(evalcond[0]) < 0.0000050000000000 ) |
| { |
| bgotonextstatement=false; |
| { |
| IkReal j5eval[2]; |
| IkReal x1425=x1421; |
| sj4=4.0e-5; |
| cj4=1.0; |
| j4=4.0e-5; |
| sj3=gconst18; |
| cj3=gconst19; |
| CheckValue<IkReal> x1426 = IKatan2WithCheck(IkReal(((-1.0)*new_r10)),IkReal(new_r00),IKFAST_ATAN2_MAGTHRESH); |
| if(!x1426.valid){ |
| continue; |
| } |
| j3=((3.14159265)+(((-1.0)*(x1426.value)))); |
| CheckValue<IkReal> x1427 = IKatan2WithCheck(IkReal(((-1.0000000008)*new_r10)),IkReal(new_r00),IKFAST_ATAN2_MAGTHRESH); |
| if(!x1427.valid){ |
| continue; |
| } |
| IkReal gconst17=((3.14159265358979)+(((-1.0)*(x1427.value)))); |
| IkReal gconst18=((-1.0000000008)*new_r10*x1425); |
| IkReal gconst19=((-1.0)*new_r00*x1425); |
| IkReal x1428=(((new_r01*new_r10))+(((-1.0)*new_r00*new_r11))); |
| j5eval[0]=x1428; |
| j5eval[1]=IKsign(x1428); |
| if( IKabs(j5eval[0]) < 0.0000010000000000 || IKabs(j5eval[1]) < 0.0000010000000000 ) |
| { |
| { |
| IkReal j5eval[1]; |
| IkReal x1429=x1421; |
| sj4=4.0e-5; |
| cj4=1.0; |
| j4=4.0e-5; |
| sj3=gconst18; |
| cj3=gconst19; |
| CheckValue<IkReal> x1430 = IKatan2WithCheck(IkReal(((-1.0)*new_r10)),IkReal(new_r00),IKFAST_ATAN2_MAGTHRESH); |
| if(!x1430.valid){ |
| continue; |
| } |
| j3=((3.14159265)+(((-1.0)*(x1430.value)))); |
| CheckValue<IkReal> x1431 = IKatan2WithCheck(IkReal(((-1.0000000008)*new_r10)),IkReal(new_r00),IKFAST_ATAN2_MAGTHRESH); |
| if(!x1431.valid){ |
| continue; |
| } |
| IkReal gconst17=((3.14159265358979)+(((-1.0)*(x1431.value)))); |
| IkReal gconst18=((-1.0000000008)*new_r10*x1429); |
| IkReal gconst19=((-1.0)*new_r00*x1429); |
| j5eval[0]=new_r00; |
| if( IKabs(j5eval[0]) < 0.0000010000000000 ) |
| { |
| { |
| IkReal j5eval[2]; |
| IkReal x1432=x1421; |
| sj4=4.0e-5; |
| cj4=1.0; |
| j4=4.0e-5; |
| sj3=gconst18; |
| cj3=gconst19; |
| CheckValue<IkReal> x1433 = IKatan2WithCheck(IkReal(((-1.0)*new_r10)),IkReal(new_r00),IKFAST_ATAN2_MAGTHRESH); |
| if(!x1433.valid){ |
| continue; |
| } |
| j3=((3.14159265)+(((-1.0)*(x1433.value)))); |
| CheckValue<IkReal> x1434 = IKatan2WithCheck(IkReal(((-1.0000000008)*new_r10)),IkReal(new_r00),IKFAST_ATAN2_MAGTHRESH); |
| if(!x1434.valid){ |
| continue; |
| } |
| IkReal gconst17=((3.14159265358979)+(((-1.0)*(x1434.value)))); |
| IkReal gconst18=((-1.0000000008)*new_r10*x1432); |
| IkReal gconst19=((-1.0)*new_r00*x1432); |
| j5eval[0]=new_r00; |
| IkReal x1435 = ((((1.0000000016)*(new_r10*new_r10)))+(new_r00*new_r00)); |
| if(IKabs(x1435)==0){ |
| continue; |
| } |
| j5eval[1]=((1.60000013238459e-9)*new_r00*new_r10*(pow(x1435,-0.5))); |
| if( IKabs(j5eval[0]) < 0.0000010000000000 || IKabs(j5eval[1]) < 0.0000010000000000 ) |
| { |
| { |
| IkReal evalcond[1]; |
| bool bgotonextstatement = true; |
| do |
| { |
| evalcond[0]=IKabs(new_r00); |
| if( IKabs(evalcond[0]) < 0.0000050000000000 ) |
| { |
| bgotonextstatement=false; |
| { |
| IkReal j5eval[1]; |
| sj4=4.0e-5; |
| cj4=1.0; |
| j4=4.0e-5; |
| sj3=gconst18; |
| cj3=gconst19; |
| CheckValue<IkReal> x1436 = IKatan2WithCheck(IkReal(((-1.0)*new_r10)),IkReal(0),IKFAST_ATAN2_MAGTHRESH); |
| if(!x1436.valid){ |
| continue; |
| } |
| j3=((3.14159265)+(((-1.0)*(x1436.value)))); |
| new_r00=0; |
| CheckValue<IkReal> x1437 = IKatan2WithCheck(IkReal(((-1.0000000008)*new_r10)),IkReal(0),IKFAST_ATAN2_MAGTHRESH); |
| if(!x1437.valid){ |
| continue; |
| } |
| IkReal gconst17=((3.14159265358979)+(((-1.0)*(x1437.value)))); |
| IkReal x1438 = new_r10*new_r10; |
| if(IKabs(x1438)==0){ |
| continue; |
| } |
| IkReal gconst18=((-1.0)*new_r10*(pow(x1438,-0.5))); |
| IkReal gconst19=0; |
| j5eval[0]=new_r10; |
| if( IKabs(j5eval[0]) < 0.0000010000000000 ) |
| { |
| { |
| IkReal j5array[1], cj5array[1], sj5array[1]; |
| bool j5valid[1]={false}; |
| _nj5 = 1; |
| CheckValue<IkReal> x1440=IKPowWithIntegerCheck(gconst18,-1); |
| if(!x1440.valid){ |
| continue; |
| } |
| IkReal x1439=x1440.value; |
| if( IKabs(((-0.9999999992)*new_r11*x1439)) < IKFAST_ATAN2_MAGTHRESH && IKabs(((-1.0)*new_r10*x1439)) < IKFAST_ATAN2_MAGTHRESH && IKabs(IKsqr(((-0.9999999992)*new_r11*x1439))+IKsqr(((-1.0)*new_r10*x1439))-1) <= IKFAST_SINCOS_THRESH ) |
| continue; |
| j5array[0]=IKatan2(((-0.9999999992)*new_r11*x1439), ((-1.0)*new_r10*x1439)); |
| sj5array[0]=IKsin(j5array[0]); |
| cj5array[0]=IKcos(j5array[0]); |
| if( j5array[0] > IKPI ) |
| { |
| j5array[0]-=IK2PI; |
| } |
| else if( j5array[0] < -IKPI ) |
| { j5array[0]+=IK2PI; |
| } |
| j5valid[0] = true; |
| for(int ij5 = 0; ij5 < 1; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < 1; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| { |
| IkReal evalcond[10]; |
| IkReal x1441=IKsin(j5); |
| IkReal x1442=IKcos(j5); |
| IkReal x1443=((1.0000000008)*gconst18); |
| IkReal x1444=(gconst18*x1441); |
| IkReal x1445=(new_r01*x1442); |
| IkReal x1446=(new_r11*x1441); |
| IkReal x1447=(new_r10*x1441); |
| evalcond[0]=x1444; |
| evalcond[1]=((-1.0)*x1447); |
| evalcond[2]=(((new_r10*x1442))+gconst18); |
| evalcond[3]=(new_r10+((gconst18*x1442))); |
| evalcond[4]=((-1.0000000008)*x1447); |
| evalcond[5]=(((new_r11*x1442))+((new_r01*x1441))); |
| evalcond[6]=(new_r01+(((-1.0)*x1442*x1443))); |
| evalcond[7]=(((x1441*x1443))+new_r11); |
| evalcond[8]=((((-1.0)*x1446))+x1445+(((-1.0)*x1443))); |
| evalcond[9]=((((1.0000000008)*x1445))+(((-1.0)*gconst18))+(((-1.0000000008)*x1446))); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[2]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[3]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[4]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[5]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[6]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[7]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[8]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[9]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| |
| } else |
| { |
| { |
| IkReal j5array[1], cj5array[1], sj5array[1]; |
| bool j5valid[1]={false}; |
| _nj5 = 1; |
| CheckValue<IkReal> x1448=IKPowWithIntegerCheck(gconst18,-1); |
| if(!x1448.valid){ |
| continue; |
| } |
| CheckValue<IkReal> x1449=IKPowWithIntegerCheck(new_r10,-1); |
| if(!x1449.valid){ |
| continue; |
| } |
| if( IKabs(((-0.9999999992)*new_r11*(x1448.value))) < IKFAST_ATAN2_MAGTHRESH && IKabs(((-1.0)*gconst18*(x1449.value))) < IKFAST_ATAN2_MAGTHRESH && IKabs(IKsqr(((-0.9999999992)*new_r11*(x1448.value)))+IKsqr(((-1.0)*gconst18*(x1449.value)))-1) <= IKFAST_SINCOS_THRESH ) |
| continue; |
| j5array[0]=IKatan2(((-0.9999999992)*new_r11*(x1448.value)), ((-1.0)*gconst18*(x1449.value))); |
| sj5array[0]=IKsin(j5array[0]); |
| cj5array[0]=IKcos(j5array[0]); |
| if( j5array[0] > IKPI ) |
| { |
| j5array[0]-=IK2PI; |
| } |
| else if( j5array[0] < -IKPI ) |
| { j5array[0]+=IK2PI; |
| } |
| j5valid[0] = true; |
| for(int ij5 = 0; ij5 < 1; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < 1; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| { |
| IkReal evalcond[10]; |
| IkReal x1450=IKsin(j5); |
| IkReal x1451=IKcos(j5); |
| IkReal x1452=((1.0000000008)*gconst18); |
| IkReal x1453=(gconst18*x1450); |
| IkReal x1454=(new_r01*x1451); |
| IkReal x1455=(new_r11*x1450); |
| IkReal x1456=(new_r10*x1450); |
| evalcond[0]=x1453; |
| evalcond[1]=((-1.0)*x1456); |
| evalcond[2]=(gconst18+((new_r10*x1451))); |
| evalcond[3]=(((gconst18*x1451))+new_r10); |
| evalcond[4]=((-1.0000000008)*x1456); |
| evalcond[5]=(((new_r01*x1450))+((new_r11*x1451))); |
| evalcond[6]=(new_r01+(((-1.0)*x1451*x1452))); |
| evalcond[7]=(((x1450*x1452))+new_r11); |
| evalcond[8]=((((-1.0)*x1452))+(((-1.0)*x1455))+x1454); |
| evalcond[9]=((((1.0000000008)*x1454))+(((-1.0)*gconst18))+(((-1.0000000008)*x1455))); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[2]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[3]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[4]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[5]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[6]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[7]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[8]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[9]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| |
| } |
| |
| } |
| |
| } |
| } while(0); |
| if( bgotonextstatement ) |
| { |
| bool bgotonextstatement = true; |
| do |
| { |
| evalcond[0]=((IKabs(new_r11))+(IKabs(new_r01))); |
| if( IKabs(evalcond[0]) < 0.0000050000000000 ) |
| { |
| bgotonextstatement=false; |
| { |
| IkReal j5eval[3]; |
| IkReal x1458 = ((1.0)+(((1.6e-9)*(new_r10*new_r10)))); |
| if(IKabs(x1458)==0){ |
| continue; |
| } |
| IkReal x1457=pow(x1458,-0.5); |
| sj4=4.0e-5; |
| cj4=1.0; |
| j4=4.0e-5; |
| sj3=gconst18; |
| cj3=gconst19; |
| CheckValue<IkReal> x1459 = IKatan2WithCheck(IkReal(((-1.0)*new_r10)),IkReal(new_r00),IKFAST_ATAN2_MAGTHRESH); |
| if(!x1459.valid){ |
| continue; |
| } |
| j3=((3.14159265)+(((-1.0)*(x1459.value)))); |
| new_r11=0; |
| new_r01=0; |
| new_r22=0; |
| new_r20=0; |
| CheckValue<IkReal> x1460 = IKatan2WithCheck(IkReal(((-1.0000000008)*new_r10)),IkReal(new_r00),IKFAST_ATAN2_MAGTHRESH); |
| if(!x1460.valid){ |
| continue; |
| } |
| IkReal gconst17=((3.14159265358979)+(((-1.0)*(x1460.value)))); |
| IkReal gconst18=((-1.0000000008)*new_r10*x1457); |
| IkReal gconst19=((-1.0)*new_r00*x1457); |
| IkReal x1461=new_r10*new_r10; |
| CheckValue<IkReal> x1465=IKPowWithIntegerCheck(((625000000.0)+(((1.0)*x1461))),-1); |
| if(!x1465.valid){ |
| continue; |
| } |
| IkReal x1462=x1465.value; |
| if((((625000000.0)+x1461)) < -0.00001) |
| continue; |
| IkReal x1463=IKsqrt(((625000000.0)+x1461)); |
| IkReal x1464=(x1462*x1463); |
| j5eval[0]=-1.0; |
| j5eval[1]=-1.0; |
| IkReal x1466 = ((1.0)+(((1.6e-9)*x1461))); |
| if(IKabs(x1466)==0){ |
| continue; |
| } |
| j5eval[2]=((IKabs(((50000.00004)*new_r00*new_r10*(pow(x1466,-0.5)))))+(IKabs(((((625000000.5)*x1464))+(((-1250000001.0)*x1461*x1464)))))); |
| if( IKabs(j5eval[0]) < 0.0000010000000000 || IKabs(j5eval[1]) < 0.0000010000000000 || IKabs(j5eval[2]) < 0.0000010000000000 ) |
| { |
| { |
| IkReal j5eval[1]; |
| IkReal x1468 = ((1.0)+(((1.6e-9)*(new_r10*new_r10)))); |
| if(IKabs(x1468)==0){ |
| continue; |
| } |
| IkReal x1467=pow(x1468,-0.5); |
| sj4=4.0e-5; |
| cj4=1.0; |
| j4=4.0e-5; |
| sj3=gconst18; |
| cj3=gconst19; |
| CheckValue<IkReal> x1469 = IKatan2WithCheck(IkReal(((-1.0)*new_r10)),IkReal(new_r00),IKFAST_ATAN2_MAGTHRESH); |
| if(!x1469.valid){ |
| continue; |
| } |
| j3=((3.14159265)+(((-1.0)*(x1469.value)))); |
| new_r11=0; |
| new_r01=0; |
| new_r22=0; |
| new_r20=0; |
| CheckValue<IkReal> x1470 = IKatan2WithCheck(IkReal(((-1.0000000008)*new_r10)),IkReal(new_r00),IKFAST_ATAN2_MAGTHRESH); |
| if(!x1470.valid){ |
| continue; |
| } |
| IkReal gconst17=((3.14159265358979)+(((-1.0)*(x1470.value)))); |
| IkReal gconst18=((-1.0000000008)*new_r10*x1467); |
| IkReal gconst19=((-1.0)*new_r00*x1467); |
| IkReal x1471=new_r10*new_r10; |
| CheckValue<IkReal> x1473=IKPowWithIntegerCheck(((1.0)+(((1.6e-9)*x1471))),-1); |
| if(!x1473.valid){ |
| continue; |
| } |
| IkReal x1472=x1473.value; |
| IkReal x1474=((1.0)+(((-1.0)*x1471))); |
| j5eval[0]=IKsign(((((625000002.0)*x1472*(x1471*x1471)))+(((-625000000.0)*x1472*(x1474*x1474))))); |
| if( IKabs(j5eval[0]) < 0.0000010000000000 ) |
| { |
| { |
| IkReal j5eval[2]; |
| IkReal x1476 = ((1.0)+(((1.6e-9)*(new_r10*new_r10)))); |
| if(IKabs(x1476)==0){ |
| continue; |
| } |
| IkReal x1475=pow(x1476,-0.5); |
| sj4=4.0e-5; |
| cj4=1.0; |
| j4=4.0e-5; |
| sj3=gconst18; |
| cj3=gconst19; |
| CheckValue<IkReal> x1477 = IKatan2WithCheck(IkReal(((-1.0)*new_r10)),IkReal(new_r00),IKFAST_ATAN2_MAGTHRESH); |
| if(!x1477.valid){ |
| continue; |
| } |
| j3=((3.14159265)+(((-1.0)*(x1477.value)))); |
| new_r11=0; |
| new_r01=0; |
| new_r22=0; |
| new_r20=0; |
| CheckValue<IkReal> x1478 = IKatan2WithCheck(IkReal(((-1.0000000008)*new_r10)),IkReal(new_r00),IKFAST_ATAN2_MAGTHRESH); |
| if(!x1478.valid){ |
| continue; |
| } |
| IkReal gconst17=((3.14159265358979)+(((-1.0)*(x1478.value)))); |
| IkReal gconst18=((-1.0000000008)*new_r10*x1475); |
| IkReal gconst19=((-1.0)*new_r00*x1475); |
| IkReal x1479=new_r10*new_r10; |
| IkReal x1480=((1.0)+(((1.6e-9)*x1479))); |
| CheckValue<IkReal> x1481=IKPowWithIntegerCheck(x1480,-1); |
| if(!x1481.valid){ |
| continue; |
| } |
| j5eval[0]=((-3.20000004272458e-9)*x1479*(x1481.value)*(((1.0)+(((-1.0)*x1479))))); |
| IkReal x1482 = x1480; |
| if(IKabs(x1482)==0){ |
| continue; |
| } |
| j5eval[1]=((1.60000013238459e-9)*new_r00*new_r10*(pow(x1482,-0.5))); |
| if( IKabs(j5eval[0]) < 0.0000010000000000 || IKabs(j5eval[1]) < 0.0000010000000000 ) |
| { |
| continue; // 3 cases reached |
| |
| } else |
| { |
| { |
| IkReal j5array[1], cj5array[1], sj5array[1]; |
| bool j5valid[1]={false}; |
| _nj5 = 1; |
| IkReal x1483=gconst18*gconst18; |
| IkReal x1484=(gconst19*new_r10); |
| CheckValue<IkReal> x1485=IKPowWithIntegerCheck(((((-625000001.0)*x1483*(new_r00*new_r00)))+(((625000000.0)*(x1484*x1484)))),-1); |
| if(!x1485.valid){ |
| continue; |
| } |
| CheckValue<IkReal> x1486=IKPowWithIntegerCheck(((((-25000.00002)*gconst18*new_r00))+(((25000.0)*x1484))),-1); |
| if(!x1486.valid){ |
| continue; |
| } |
| if( IKabs(((x1485.value)*(((((625000000.5)*x1483*x1484))+(((625000001.0)*new_r00*(gconst18*gconst18*gconst18))))))) < IKFAST_ATAN2_MAGTHRESH && IKabs(((-25000.0)*gconst18*gconst19*(x1486.value))) < IKFAST_ATAN2_MAGTHRESH && IKabs(IKsqr(((x1485.value)*(((((625000000.5)*x1483*x1484))+(((625000001.0)*new_r00*(gconst18*gconst18*gconst18)))))))+IKsqr(((-25000.0)*gconst18*gconst19*(x1486.value)))-1) <= IKFAST_SINCOS_THRESH ) |
| continue; |
| j5array[0]=IKatan2(((x1485.value)*(((((625000000.5)*x1483*x1484))+(((625000001.0)*new_r00*(gconst18*gconst18*gconst18)))))), ((-25000.0)*gconst18*gconst19*(x1486.value))); |
| sj5array[0]=IKsin(j5array[0]); |
| cj5array[0]=IKcos(j5array[0]); |
| if( j5array[0] > IKPI ) |
| { |
| j5array[0]-=IK2PI; |
| } |
| else if( j5array[0] < -IKPI ) |
| { j5array[0]+=IK2PI; |
| } |
| j5valid[0] = true; |
| for(int ij5 = 0; ij5 < 1; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < 1; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| { |
| IkReal evalcond[7]; |
| IkReal x1487=IKsin(j5); |
| IkReal x1488=IKcos(j5); |
| IkReal x1489=((1.0000000008)*gconst19); |
| IkReal x1490=((1.0)*gconst19); |
| IkReal x1491=(gconst18*x1487); |
| IkReal x1492=(new_r00*x1488); |
| IkReal x1493=(gconst18*x1488); |
| IkReal x1494=(new_r10*x1487); |
| evalcond[0]=(gconst18+((new_r00*x1487))+((new_r10*x1488))); |
| evalcond[1]=(x1491+(((-1.0)*x1488*x1489))+new_r00); |
| evalcond[2]=(((x1487*x1489))+x1493+new_r10); |
| evalcond[3]=((((-1.0000000008)*x1493))+(((-1.0)*x1487*x1490))); |
| evalcond[4]=((((1.0000000008)*x1491))+(((-1.0)*x1488*x1490))); |
| evalcond[5]=((((-1.0)*x1489))+(((-1.0)*x1494))+x1492); |
| evalcond[6]=((((-1.0000000008)*x1494))+(((-1.0)*x1490))+(((1.0000000008)*x1492))); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[2]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[3]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[4]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[5]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[6]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| |
| } |
| |
| } |
| |
| } else |
| { |
| { |
| IkReal j5array[1], cj5array[1], sj5array[1]; |
| bool j5valid[1]={false}; |
| _nj5 = 1; |
| IkReal x1495=gconst18*gconst18; |
| IkReal x1496=gconst19*gconst19; |
| IkReal x1497=((625000000.0)*x1496); |
| IkReal x1498=((625000000.5)*gconst19*x1495); |
| CheckValue<IkReal> x1499=IKPowWithIntegerCheck(IKsign(((((625000001.0)*x1495*(new_r10*new_r10)))+(((-1.0)*x1497*(new_r00*new_r00))))),-1); |
| if(!x1499.valid){ |
| continue; |
| } |
| CheckValue<IkReal> x1500 = IKatan2WithCheck(IkReal(((((-1.0)*new_r10*x1498))+((gconst18*new_r00*x1497)))),IkReal(((((-625000001.0)*new_r10*(gconst18*gconst18*gconst18)))+((new_r00*x1498)))),IKFAST_ATAN2_MAGTHRESH); |
| if(!x1500.valid){ |
| continue; |
| } |
| j5array[0]=((-1.5707963267949)+(((1.5707963267949)*(x1499.value)))+(x1500.value)); |
| sj5array[0]=IKsin(j5array[0]); |
| cj5array[0]=IKcos(j5array[0]); |
| if( j5array[0] > IKPI ) |
| { |
| j5array[0]-=IK2PI; |
| } |
| else if( j5array[0] < -IKPI ) |
| { j5array[0]+=IK2PI; |
| } |
| j5valid[0] = true; |
| for(int ij5 = 0; ij5 < 1; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < 1; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| { |
| IkReal evalcond[7]; |
| IkReal x1501=IKsin(j5); |
| IkReal x1502=IKcos(j5); |
| IkReal x1503=((1.0000000008)*gconst19); |
| IkReal x1504=((1.0)*gconst19); |
| IkReal x1505=(gconst18*x1501); |
| IkReal x1506=(new_r00*x1502); |
| IkReal x1507=(gconst18*x1502); |
| IkReal x1508=(new_r10*x1501); |
| evalcond[0]=(((new_r10*x1502))+gconst18+((new_r00*x1501))); |
| evalcond[1]=(x1505+new_r00+(((-1.0)*x1502*x1503))); |
| evalcond[2]=(((x1501*x1503))+x1507+new_r10); |
| evalcond[3]=((((-1.0)*x1501*x1504))+(((-1.0000000008)*x1507))); |
| evalcond[4]=((((-1.0)*x1502*x1504))+(((1.0000000008)*x1505))); |
| evalcond[5]=((((-1.0)*x1503))+(((-1.0)*x1508))+x1506); |
| evalcond[6]=((((-1.0)*x1504))+(((-1.0000000008)*x1508))+(((1.0000000008)*x1506))); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[2]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[3]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[4]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[5]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[6]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| |
| } |
| |
| } |
| |
| } else |
| { |
| { |
| IkReal j5array[1], cj5array[1], sj5array[1]; |
| bool j5valid[1]={false}; |
| _nj5 = 1; |
| IkReal x1509=((25000.0)*gconst18); |
| IkReal x1510=((25000.00002)*gconst19); |
| CheckValue<IkReal> x1511=IKPowWithIntegerCheck(IKsign(((((-25000.0)*(new_r10*new_r10)))+(((-25000.0)*(new_r00*new_r00))))),-1); |
| if(!x1511.valid){ |
| continue; |
| } |
| CheckValue<IkReal> x1512 = IKatan2WithCheck(IkReal((((new_r10*x1510))+((new_r00*x1509)))),IkReal((((new_r10*x1509))+(((-1.0)*new_r00*x1510)))),IKFAST_ATAN2_MAGTHRESH); |
| if(!x1512.valid){ |
| continue; |
| } |
| j5array[0]=((-1.5707963267949)+(((1.5707963267949)*(x1511.value)))+(x1512.value)); |
| sj5array[0]=IKsin(j5array[0]); |
| cj5array[0]=IKcos(j5array[0]); |
| if( j5array[0] > IKPI ) |
| { |
| j5array[0]-=IK2PI; |
| } |
| else if( j5array[0] < -IKPI ) |
| { j5array[0]+=IK2PI; |
| } |
| j5valid[0] = true; |
| for(int ij5 = 0; ij5 < 1; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < 1; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| { |
| IkReal evalcond[7]; |
| IkReal x1513=IKsin(j5); |
| IkReal x1514=IKcos(j5); |
| IkReal x1515=((1.0000000008)*gconst19); |
| IkReal x1516=((1.0)*gconst19); |
| IkReal x1517=(gconst18*x1513); |
| IkReal x1518=(new_r00*x1514); |
| IkReal x1519=(gconst18*x1514); |
| IkReal x1520=(new_r10*x1513); |
| evalcond[0]=(((new_r10*x1514))+gconst18+((new_r00*x1513))); |
| evalcond[1]=(x1517+(((-1.0)*x1514*x1515))+new_r00); |
| evalcond[2]=(((x1513*x1515))+x1519+new_r10); |
| evalcond[3]=((((-1.0)*x1513*x1516))+(((-1.0000000008)*x1519))); |
| evalcond[4]=((((-1.0)*x1514*x1516))+(((1.0000000008)*x1517))); |
| evalcond[5]=((((-1.0)*x1515))+x1518+(((-1.0)*x1520))); |
| evalcond[6]=((((-1.0)*x1516))+(((-1.0000000008)*x1520))+(((1.0000000008)*x1518))); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[2]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[3]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[4]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[5]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[6]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| |
| } |
| |
| } |
| |
| } |
| } while(0); |
| if( bgotonextstatement ) |
| { |
| bool bgotonextstatement = true; |
| do |
| { |
| evalcond[0]=((IKabs(new_r11))+(IKabs(new_r10))); |
| if( IKabs(evalcond[0]) < 0.0000050000000000 ) |
| { |
| bgotonextstatement=false; |
| { |
| IkReal j5array[1], cj5array[1], sj5array[1]; |
| bool j5valid[1]={false}; |
| _nj5 = 1; |
| CheckValue<IkReal> x1522=IKPowWithIntegerCheck(gconst19,-1); |
| if(!x1522.valid){ |
| continue; |
| } |
| IkReal x1521=x1522.value; |
| if( IKabs((new_r01*x1521)) < IKFAST_ATAN2_MAGTHRESH && IKabs(((0.9999999992)*new_r00*x1521)) < IKFAST_ATAN2_MAGTHRESH && IKabs(IKsqr((new_r01*x1521))+IKsqr(((0.9999999992)*new_r00*x1521))-1) <= IKFAST_SINCOS_THRESH ) |
| continue; |
| j5array[0]=IKatan2((new_r01*x1521), ((0.9999999992)*new_r00*x1521)); |
| sj5array[0]=IKsin(j5array[0]); |
| cj5array[0]=IKcos(j5array[0]); |
| if( j5array[0] > IKPI ) |
| { |
| j5array[0]-=IK2PI; |
| } |
| else if( j5array[0] < -IKPI ) |
| { j5array[0]+=IK2PI; |
| } |
| j5valid[0] = true; |
| for(int ij5 = 0; ij5 < 1; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < 1; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| { |
| IkReal evalcond[10]; |
| IkReal x1523=IKcos(j5); |
| IkReal x1524=IKsin(j5); |
| IkReal x1525=((1.0)*gconst19); |
| IkReal x1526=((1.0000000008)*gconst19); |
| IkReal x1527=(new_r00*x1523); |
| IkReal x1528=(new_r01*x1523); |
| evalcond[0]=(new_r00*x1524); |
| evalcond[1]=x1528; |
| evalcond[2]=((-1.0)*gconst19*x1523); |
| evalcond[3]=((((-1.0)*x1524*x1525))+new_r01); |
| evalcond[4]=((((-1.0)*x1525))+((new_r01*x1524))); |
| evalcond[5]=(x1524*x1526); |
| evalcond[6]=((1.0000000008)*x1528); |
| evalcond[7]=((((-1.0)*x1523*x1526))+new_r00); |
| evalcond[8]=((((-1.0)*x1526))+x1527); |
| evalcond[9]=((((-1.0)*x1525))+(((1.0000000008)*x1527))); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[2]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[3]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[4]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[5]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[6]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[7]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[8]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[9]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| |
| } |
| } while(0); |
| if( bgotonextstatement ) |
| { |
| bool bgotonextstatement = true; |
| do |
| { |
| if( 1 ) |
| { |
| bgotonextstatement=false; |
| continue; // branch miss [j5] |
| |
| } |
| } while(0); |
| if( bgotonextstatement ) |
| { |
| } |
| } |
| } |
| } |
| } |
| |
| } else |
| { |
| { |
| IkReal j5array[1], cj5array[1], sj5array[1]; |
| bool j5valid[1]={false}; |
| _nj5 = 1; |
| CheckValue<IkReal> x1534=IKPowWithIntegerCheck(new_r00,-1); |
| if(!x1534.valid){ |
| continue; |
| } |
| IkReal x1529=x1534.value; |
| IkReal x1530=((25000.0)*new_r10); |
| IkReal x1531=((25000.0)*gconst18*gconst19); |
| CheckValue<IkReal> x1535=IKPowWithIntegerCheck(((((-25000.00002)*gconst18*new_r00))+((gconst19*x1530))),-1); |
| if(!x1535.valid){ |
| continue; |
| } |
| IkReal x1532=x1535.value; |
| IkReal x1533=(new_r10*x1532); |
| CheckValue<IkReal> x1536=IKPowWithIntegerCheck(((((-25000.00002)*gconst18*new_r00))+(((25000.0)*gconst19*new_r10))),-1); |
| if(!x1536.valid){ |
| continue; |
| } |
| CheckValue<IkReal> x1537=IKPowWithIntegerCheck(((((-25000.00002)*gconst18*new_r00))+(((25000.0)*gconst19*new_r10))),-1); |
| if(!x1537.valid){ |
| continue; |
| } |
| if( IKabs((((gconst18*gconst19*x1529*x1530*(x1536.value)))+(((-1.0)*gconst18*x1529))+((new_r01*x1530*(x1537.value))))) < IKFAST_ATAN2_MAGTHRESH && IKabs((x1532*(((((-25000.0)*new_r00*new_r01))+(((-1.0)*x1531)))))) < IKFAST_ATAN2_MAGTHRESH && IKabs(IKsqr((((gconst18*gconst19*x1529*x1530*(x1536.value)))+(((-1.0)*gconst18*x1529))+((new_r01*x1530*(x1537.value)))))+IKsqr((x1532*(((((-25000.0)*new_r00*new_r01))+(((-1.0)*x1531))))))-1) <= IKFAST_SINCOS_THRESH ) |
| continue; |
| j5array[0]=IKatan2((((gconst18*gconst19*x1529*x1530*(x1536.value)))+(((-1.0)*gconst18*x1529))+((new_r01*x1530*(x1537.value)))), (x1532*(((((-25000.0)*new_r00*new_r01))+(((-1.0)*x1531)))))); |
| sj5array[0]=IKsin(j5array[0]); |
| cj5array[0]=IKcos(j5array[0]); |
| if( j5array[0] > IKPI ) |
| { |
| j5array[0]-=IK2PI; |
| } |
| else if( j5array[0] < -IKPI ) |
| { j5array[0]+=IK2PI; |
| } |
| j5valid[0] = true; |
| for(int ij5 = 0; ij5 < 1; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < 1; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| { |
| IkReal evalcond[10]; |
| IkReal x1538=IKcos(j5); |
| IkReal x1539=IKsin(j5); |
| IkReal x1540=((1.0)*gconst19); |
| IkReal x1541=((1.0000000008)*gconst19); |
| IkReal x1542=(new_r11*x1539); |
| IkReal x1543=(gconst18*x1538); |
| IkReal x1544=(new_r01*x1538); |
| IkReal x1545=(new_r00*x1538); |
| IkReal x1546=(gconst18*x1539); |
| IkReal x1547=(new_r10*x1539); |
| evalcond[0]=(gconst18+((new_r00*x1539))+((new_r10*x1538))); |
| evalcond[1]=(((new_r01*x1539))+((new_r11*x1538))+(((-1.0)*x1540))); |
| evalcond[2]=(x1546+new_r00+(((-1.0)*x1538*x1541))); |
| evalcond[3]=(((x1539*x1541))+x1543+new_r10); |
| evalcond[4]=((((-1.0)*x1539*x1540))+new_r01+(((-1.0000000008)*x1543))); |
| evalcond[5]=((((1.0000000008)*x1546))+new_r11+(((-1.0)*x1538*x1540))); |
| evalcond[6]=((((-1.0)*x1547))+x1545+(((-1.0)*x1541))); |
| evalcond[7]=((((-1.0)*x1542))+(((-1.0000000008)*gconst18))+x1544); |
| evalcond[8]=((((1.0000000008)*x1545))+(((-1.0)*x1540))+(((-1.0000000008)*x1547))); |
| evalcond[9]=((((1.0000000008)*x1544))+(((-1.0)*gconst18))+(((-1.0000000008)*x1542))); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[2]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[3]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[4]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[5]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[6]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[7]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[8]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[9]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| |
| } |
| |
| } |
| |
| } else |
| { |
| { |
| IkReal j5array[1], cj5array[1], sj5array[1]; |
| bool j5valid[1]={false}; |
| _nj5 = 1; |
| CheckValue<IkReal> x1552=IKPowWithIntegerCheck(new_r00,-1); |
| if(!x1552.valid){ |
| continue; |
| } |
| IkReal x1548=x1552.value; |
| IkReal x1549=gconst18*gconst18; |
| CheckValue<IkReal> x1553=IKPowWithIntegerCheck(((((25000.00002)*gconst19*new_r00))+(((25000.0)*gconst18*new_r10))),-1); |
| if(!x1553.valid){ |
| continue; |
| } |
| IkReal x1550=x1553.value; |
| IkReal x1551=((25000.0)*new_r10*x1550); |
| CheckValue<IkReal> x1554=IKPowWithIntegerCheck(x1548,-2); |
| if(!x1554.valid){ |
| continue; |
| } |
| if( IKabs((((x1548*x1549*x1551))+(((-1.0)*gconst18*x1548))+(((-1.0)*new_r00*x1551)))) < IKFAST_ATAN2_MAGTHRESH && IKabs((x1550*(((((25000.0)*(x1554.value)))+(((-25000.0)*x1549)))))) < IKFAST_ATAN2_MAGTHRESH && IKabs(IKsqr((((x1548*x1549*x1551))+(((-1.0)*gconst18*x1548))+(((-1.0)*new_r00*x1551))))+IKsqr((x1550*(((((25000.0)*(x1554.value)))+(((-25000.0)*x1549))))))-1) <= IKFAST_SINCOS_THRESH ) |
| continue; |
| j5array[0]=IKatan2((((x1548*x1549*x1551))+(((-1.0)*gconst18*x1548))+(((-1.0)*new_r00*x1551))), (x1550*(((((25000.0)*(x1554.value)))+(((-25000.0)*x1549)))))); |
| sj5array[0]=IKsin(j5array[0]); |
| cj5array[0]=IKcos(j5array[0]); |
| if( j5array[0] > IKPI ) |
| { |
| j5array[0]-=IK2PI; |
| } |
| else if( j5array[0] < -IKPI ) |
| { j5array[0]+=IK2PI; |
| } |
| j5valid[0] = true; |
| for(int ij5 = 0; ij5 < 1; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < 1; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| { |
| IkReal evalcond[10]; |
| IkReal x1555=IKcos(j5); |
| IkReal x1556=IKsin(j5); |
| IkReal x1557=((1.0)*gconst19); |
| IkReal x1558=((1.0000000008)*gconst19); |
| IkReal x1559=(new_r11*x1556); |
| IkReal x1560=(gconst18*x1555); |
| IkReal x1561=(new_r01*x1555); |
| IkReal x1562=(new_r00*x1555); |
| IkReal x1563=(gconst18*x1556); |
| IkReal x1564=(new_r10*x1556); |
| evalcond[0]=(((new_r00*x1556))+gconst18+((new_r10*x1555))); |
| evalcond[1]=(((new_r01*x1556))+((new_r11*x1555))+(((-1.0)*x1557))); |
| evalcond[2]=((((-1.0)*x1555*x1558))+x1563+new_r00); |
| evalcond[3]=(((x1556*x1558))+x1560+new_r10); |
| evalcond[4]=((((-1.0)*x1556*x1557))+new_r01+(((-1.0000000008)*x1560))); |
| evalcond[5]=((((1.0000000008)*x1563))+(((-1.0)*x1555*x1557))+new_r11); |
| evalcond[6]=(x1562+(((-1.0)*x1558))+(((-1.0)*x1564))); |
| evalcond[7]=((((-1.0)*x1559))+(((-1.0000000008)*gconst18))+x1561); |
| evalcond[8]=((((1.0000000008)*x1562))+(((-1.0)*x1557))+(((-1.0000000008)*x1564))); |
| evalcond[9]=((((1.0000000008)*x1561))+(((-1.0)*gconst18))+(((-1.0000000008)*x1559))); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[2]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[3]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[4]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[5]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[6]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[7]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[8]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[9]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| |
| } |
| |
| } |
| |
| } else |
| { |
| { |
| IkReal j5array[1], cj5array[1], sj5array[1]; |
| bool j5valid[1]={false}; |
| _nj5 = 1; |
| IkReal x1565=((1.0)*new_r00); |
| CheckValue<IkReal> x1566 = IKatan2WithCheck(IkReal((((gconst18*new_r11))+((gconst19*new_r10)))),IkReal(((((-1.0)*gconst19*x1565))+(((-1.0)*gconst18*new_r01)))),IKFAST_ATAN2_MAGTHRESH); |
| if(!x1566.valid){ |
| continue; |
| } |
| CheckValue<IkReal> x1567=IKPowWithIntegerCheck(IKsign(((((-1.0)*new_r11*x1565))+((new_r01*new_r10)))),-1); |
| if(!x1567.valid){ |
| continue; |
| } |
| j5array[0]=((-1.5707963267949)+(x1566.value)+(((1.5707963267949)*(x1567.value)))); |
| sj5array[0]=IKsin(j5array[0]); |
| cj5array[0]=IKcos(j5array[0]); |
| if( j5array[0] > IKPI ) |
| { |
| j5array[0]-=IK2PI; |
| } |
| else if( j5array[0] < -IKPI ) |
| { j5array[0]+=IK2PI; |
| } |
| j5valid[0] = true; |
| for(int ij5 = 0; ij5 < 1; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < 1; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| { |
| IkReal evalcond[10]; |
| IkReal x1568=IKcos(j5); |
| IkReal x1569=IKsin(j5); |
| IkReal x1570=((1.0)*gconst19); |
| IkReal x1571=((1.0000000008)*gconst19); |
| IkReal x1572=(new_r11*x1569); |
| IkReal x1573=(gconst18*x1568); |
| IkReal x1574=(new_r01*x1568); |
| IkReal x1575=(new_r00*x1568); |
| IkReal x1576=(gconst18*x1569); |
| IkReal x1577=(new_r10*x1569); |
| evalcond[0]=(((new_r00*x1569))+((new_r10*x1568))+gconst18); |
| evalcond[1]=(((new_r01*x1569))+((new_r11*x1568))+(((-1.0)*x1570))); |
| evalcond[2]=((((-1.0)*x1568*x1571))+x1576+new_r00); |
| evalcond[3]=(((x1569*x1571))+x1573+new_r10); |
| evalcond[4]=((((-1.0)*x1569*x1570))+new_r01+(((-1.0000000008)*x1573))); |
| evalcond[5]=((((1.0000000008)*x1576))+(((-1.0)*x1568*x1570))+new_r11); |
| evalcond[6]=(x1575+(((-1.0)*x1571))+(((-1.0)*x1577))); |
| evalcond[7]=((((-1.0000000008)*gconst18))+x1574+(((-1.0)*x1572))); |
| evalcond[8]=((((1.0000000008)*x1575))+(((-1.0)*x1570))+(((-1.0000000008)*x1577))); |
| evalcond[9]=((((1.0000000008)*x1574))+(((-1.0)*gconst18))+(((-1.0000000008)*x1572))); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[2]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[3]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[4]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[5]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[6]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[7]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[8]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[9]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| |
| } |
| |
| } |
| |
| } |
| } while(0); |
| if( bgotonextstatement ) |
| { |
| bool bgotonextstatement = true; |
| do |
| { |
| evalcond[0]=((IKabs(new_r11))+(IKabs(new_r01))); |
| if( IKabs(evalcond[0]) < 0.0000050000000000 ) |
| { |
| bgotonextstatement=false; |
| { |
| IkReal j5eval[1]; |
| sj4=4.0e-5; |
| cj4=1.0; |
| j4=4.0e-5; |
| new_r11=0; |
| new_r01=0; |
| new_r22=0; |
| new_r20=0; |
| j5eval[0]=((IKabs(new_r10))+(IKabs(new_r00))); |
| if( IKabs(j5eval[0]) < 0.0000010000000000 ) |
| { |
| { |
| IkReal j5eval[1]; |
| sj4=4.0e-5; |
| cj4=1.0; |
| j4=4.0e-5; |
| new_r11=0; |
| new_r01=0; |
| new_r22=0; |
| new_r20=0; |
| j5eval[0]=1.0; |
| if( IKabs(j5eval[0]) < 0.0000010000000000 ) |
| { |
| continue; // no branches [j5] |
| |
| } else |
| { |
| { |
| IkReal j5array[2], cj5array[2], sj5array[2]; |
| bool j5valid[2]={false}; |
| _nj5 = 2; |
| CheckValue<IkReal> x1579 = IKatan2WithCheck(IkReal(((1.0000000008)*new_r00)),IkReal(((-1.0000000008)*new_r10)),IKFAST_ATAN2_MAGTHRESH); |
| if(!x1579.valid){ |
| continue; |
| } |
| IkReal x1578=x1579.value; |
| j5array[0]=((-1.0)*x1578); |
| sj5array[0]=IKsin(j5array[0]); |
| cj5array[0]=IKcos(j5array[0]); |
| j5array[1]=((3.14159265358979)+(((-1.0)*x1578))); |
| sj5array[1]=IKsin(j5array[1]); |
| cj5array[1]=IKcos(j5array[1]); |
| if( j5array[0] > IKPI ) |
| { |
| j5array[0]-=IK2PI; |
| } |
| else if( j5array[0] < -IKPI ) |
| { j5array[0]+=IK2PI; |
| } |
| j5valid[0] = true; |
| if( j5array[1] > IKPI ) |
| { |
| j5array[1]-=IK2PI; |
| } |
| else if( j5array[1] < -IKPI ) |
| { j5array[1]+=IK2PI; |
| } |
| j5valid[1] = true; |
| for(int ij5 = 0; ij5 < 2; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < 2; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| { |
| IkReal evalcond[2]; |
| IkReal x1580=IKcos(j5); |
| IkReal x1581=IKsin(j5); |
| evalcond[0]=(((new_r10*x1580))+((new_r00*x1581))); |
| evalcond[1]=((((-1.0)*new_r10*x1581))+((new_r00*x1580))); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| |
| } |
| |
| } |
| |
| } else |
| { |
| { |
| IkReal j5array[2], cj5array[2], sj5array[2]; |
| bool j5valid[2]={false}; |
| _nj5 = 2; |
| CheckValue<IkReal> x1583 = IKatan2WithCheck(IkReal(new_r10),IkReal(new_r00),IKFAST_ATAN2_MAGTHRESH); |
| if(!x1583.valid){ |
| continue; |
| } |
| IkReal x1582=x1583.value; |
| j5array[0]=((-1.0)*x1582); |
| sj5array[0]=IKsin(j5array[0]); |
| cj5array[0]=IKcos(j5array[0]); |
| j5array[1]=((3.14159265358979)+(((-1.0)*x1582))); |
| sj5array[1]=IKsin(j5array[1]); |
| cj5array[1]=IKcos(j5array[1]); |
| if( j5array[0] > IKPI ) |
| { |
| j5array[0]-=IK2PI; |
| } |
| else if( j5array[0] < -IKPI ) |
| { j5array[0]+=IK2PI; |
| } |
| j5valid[0] = true; |
| if( j5array[1] > IKPI ) |
| { |
| j5array[1]-=IK2PI; |
| } |
| else if( j5array[1] < -IKPI ) |
| { j5array[1]+=IK2PI; |
| } |
| j5valid[1] = true; |
| for(int ij5 = 0; ij5 < 2; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < 2; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| { |
| IkReal evalcond[2]; |
| IkReal x1584=IKcos(j5); |
| IkReal x1585=IKsin(j5); |
| IkReal x1586=(new_r00*x1584); |
| IkReal x1587=(new_r10*x1585); |
| evalcond[0]=(x1586+(((-1.0)*x1587))); |
| evalcond[1]=((((-1.0000000008)*x1587))+(((1.0000000008)*x1586))); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| |
| } |
| |
| } |
| |
| } |
| } while(0); |
| if( bgotonextstatement ) |
| { |
| bool bgotonextstatement = true; |
| do |
| { |
| evalcond[0]=((IKabs(new_r11))+(IKabs(new_r10))); |
| if( IKabs(evalcond[0]) < 0.0000050000000000 ) |
| { |
| bgotonextstatement=false; |
| { |
| IkReal j5eval[1]; |
| sj4=4.0e-5; |
| cj4=1.0; |
| j4=4.0e-5; |
| new_r11=0; |
| new_r10=0; |
| new_r22=0; |
| new_r02=0; |
| j5eval[0]=new_r00; |
| if( IKabs(j5eval[0]) < 0.0000010000000000 ) |
| { |
| { |
| IkReal j5eval[2]; |
| sj4=4.0e-5; |
| cj4=1.0; |
| j4=4.0e-5; |
| new_r11=0; |
| new_r10=0; |
| new_r22=0; |
| new_r02=0; |
| j5eval[0]=new_r00; |
| j5eval[1]=new_r01; |
| if( IKabs(j5eval[0]) < 0.0000010000000000 || IKabs(j5eval[1]) < 0.0000010000000000 ) |
| { |
| continue; // no branches [j5] |
| |
| } else |
| { |
| { |
| IkReal j5array[1], cj5array[1], sj5array[1]; |
| bool j5valid[1]={false}; |
| _nj5 = 1; |
| CheckValue<IkReal> x1588=IKPowWithIntegerCheck(new_r00,-1); |
| if(!x1588.valid){ |
| continue; |
| } |
| CheckValue<IkReal> x1589=IKPowWithIntegerCheck(new_r01,-1); |
| if(!x1589.valid){ |
| continue; |
| } |
| if( IKabs(((-1.0)*sj3*(x1588.value))) < IKFAST_ATAN2_MAGTHRESH && IKabs(((1.0000000008)*sj3*(x1589.value))) < IKFAST_ATAN2_MAGTHRESH && IKabs(IKsqr(((-1.0)*sj3*(x1588.value)))+IKsqr(((1.0000000008)*sj3*(x1589.value)))-1) <= IKFAST_SINCOS_THRESH ) |
| continue; |
| j5array[0]=IKatan2(((-1.0)*sj3*(x1588.value)), ((1.0000000008)*sj3*(x1589.value))); |
| sj5array[0]=IKsin(j5array[0]); |
| cj5array[0]=IKcos(j5array[0]); |
| if( j5array[0] > IKPI ) |
| { |
| j5array[0]-=IK2PI; |
| } |
| else if( j5array[0] < -IKPI ) |
| { j5array[0]+=IK2PI; |
| } |
| j5valid[0] = true; |
| for(int ij5 = 0; ij5 < 1; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < 1; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| { |
| IkReal evalcond[10]; |
| IkReal x1590=IKsin(j5); |
| IkReal x1591=IKcos(j5); |
| IkReal x1592=((1.0)*cj3); |
| IkReal x1593=((1.0000000008)*cj3); |
| IkReal x1594=((1.0000000008)*sj3); |
| IkReal x1595=(new_r00*x1591); |
| IkReal x1596=(sj3*x1591); |
| IkReal x1597=(new_r01*x1591); |
| evalcond[0]=(sj3+((new_r00*x1590))); |
| evalcond[1]=((((-1.0)*x1592))+((new_r01*x1590))); |
| evalcond[2]=((((-1.0)*x1593))+x1595); |
| evalcond[3]=((((-1.0)*x1594))+x1597); |
| evalcond[4]=((((-1.0)*x1592))+(((1.0000000008)*x1595))); |
| evalcond[5]=((((-1.0)*sj3))+(((1.0000000008)*x1597))); |
| evalcond[6]=(((x1590*x1593))+x1596); |
| evalcond[7]=((((-1.0)*x1591*x1593))+new_r00+((sj3*x1590))); |
| evalcond[8]=(((x1590*x1594))+(((-1.0)*x1591*x1592))); |
| evalcond[9]=((((-1.0)*x1591*x1594))+(((-1.0)*x1590*x1592))+new_r01); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[2]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[3]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[4]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[5]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[6]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[7]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[8]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[9]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| |
| } |
| |
| } |
| |
| } else |
| { |
| { |
| IkReal j5array[1], cj5array[1], sj5array[1]; |
| bool j5valid[1]={false}; |
| _nj5 = 1; |
| CheckValue<IkReal> x1599=IKPowWithIntegerCheck(new_r00,-1); |
| if(!x1599.valid){ |
| continue; |
| } |
| IkReal x1598=x1599.value; |
| if( IKabs(((-1.0)*sj3*x1598)) < IKFAST_ATAN2_MAGTHRESH && IKabs(((1.0000000008)*cj3*x1598)) < IKFAST_ATAN2_MAGTHRESH && IKabs(IKsqr(((-1.0)*sj3*x1598))+IKsqr(((1.0000000008)*cj3*x1598))-1) <= IKFAST_SINCOS_THRESH ) |
| continue; |
| j5array[0]=IKatan2(((-1.0)*sj3*x1598), ((1.0000000008)*cj3*x1598)); |
| sj5array[0]=IKsin(j5array[0]); |
| cj5array[0]=IKcos(j5array[0]); |
| if( j5array[0] > IKPI ) |
| { |
| j5array[0]-=IK2PI; |
| } |
| else if( j5array[0] < -IKPI ) |
| { j5array[0]+=IK2PI; |
| } |
| j5valid[0] = true; |
| for(int ij5 = 0; ij5 < 1; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < 1; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| { |
| IkReal evalcond[10]; |
| IkReal x1600=IKsin(j5); |
| IkReal x1601=IKcos(j5); |
| IkReal x1602=((1.0)*cj3); |
| IkReal x1603=((1.0000000008)*cj3); |
| IkReal x1604=((1.0000000008)*sj3); |
| IkReal x1605=(new_r00*x1601); |
| IkReal x1606=(sj3*x1601); |
| IkReal x1607=(new_r01*x1601); |
| evalcond[0]=(sj3+((new_r00*x1600))); |
| evalcond[1]=((((-1.0)*x1602))+((new_r01*x1600))); |
| evalcond[2]=((((-1.0)*x1603))+x1605); |
| evalcond[3]=((((-1.0)*x1604))+x1607); |
| evalcond[4]=((((-1.0)*x1602))+(((1.0000000008)*x1605))); |
| evalcond[5]=((((-1.0)*sj3))+(((1.0000000008)*x1607))); |
| evalcond[6]=(x1606+((x1600*x1603))); |
| evalcond[7]=(((sj3*x1600))+(((-1.0)*x1601*x1603))+new_r00); |
| evalcond[8]=(((x1600*x1604))+(((-1.0)*x1601*x1602))); |
| evalcond[9]=((((-1.0)*x1601*x1604))+(((-1.0)*x1600*x1602))+new_r01); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[2]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[3]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[4]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[5]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[6]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[7]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[8]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[9]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| |
| } |
| |
| } |
| |
| } |
| } while(0); |
| if( bgotonextstatement ) |
| { |
| bool bgotonextstatement = true; |
| do |
| { |
| evalcond[0]=((IKabs(new_r00))+(IKabs(new_r01))); |
| if( IKabs(evalcond[0]) < 0.0000050000000000 ) |
| { |
| bgotonextstatement=false; |
| { |
| IkReal j5eval[1]; |
| sj4=4.0e-5; |
| cj4=1.0; |
| j4=4.0e-5; |
| new_r00=0; |
| new_r01=0; |
| new_r12=0; |
| new_r22=0; |
| j5eval[0]=new_r10; |
| if( IKabs(j5eval[0]) < 0.0000010000000000 ) |
| { |
| { |
| IkReal j5eval[2]; |
| sj4=4.0e-5; |
| cj4=1.0; |
| j4=4.0e-5; |
| new_r00=0; |
| new_r01=0; |
| new_r12=0; |
| new_r22=0; |
| j5eval[0]=new_r11; |
| j5eval[1]=new_r10; |
| if( IKabs(j5eval[0]) < 0.0000010000000000 || IKabs(j5eval[1]) < 0.0000010000000000 ) |
| { |
| continue; // no branches [j5] |
| |
| } else |
| { |
| { |
| IkReal j5array[1], cj5array[1], sj5array[1]; |
| bool j5valid[1]={false}; |
| _nj5 = 1; |
| CheckValue<IkReal> x1608=IKPowWithIntegerCheck(new_r11,-1); |
| if(!x1608.valid){ |
| continue; |
| } |
| CheckValue<IkReal> x1609=IKPowWithIntegerCheck(new_r10,-1); |
| if(!x1609.valid){ |
| continue; |
| } |
| if( IKabs(((-1.0000000008)*sj3*(x1608.value))) < IKFAST_ATAN2_MAGTHRESH && IKabs(((-1.0)*sj3*(x1609.value))) < IKFAST_ATAN2_MAGTHRESH && IKabs(IKsqr(((-1.0000000008)*sj3*(x1608.value)))+IKsqr(((-1.0)*sj3*(x1609.value)))-1) <= IKFAST_SINCOS_THRESH ) |
| continue; |
| j5array[0]=IKatan2(((-1.0000000008)*sj3*(x1608.value)), ((-1.0)*sj3*(x1609.value))); |
| sj5array[0]=IKsin(j5array[0]); |
| cj5array[0]=IKcos(j5array[0]); |
| if( j5array[0] > IKPI ) |
| { |
| j5array[0]-=IK2PI; |
| } |
| else if( j5array[0] < -IKPI ) |
| { j5array[0]+=IK2PI; |
| } |
| j5valid[0] = true; |
| for(int ij5 = 0; ij5 < 1; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < 1; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| { |
| IkReal evalcond[10]; |
| IkReal x1610=IKcos(j5); |
| IkReal x1611=IKsin(j5); |
| IkReal x1612=((1.0)*cj3); |
| IkReal x1613=((1.0000000008)*cj3); |
| IkReal x1614=((1.0000000008)*sj3); |
| IkReal x1615=(sj3*x1610); |
| IkReal x1616=(new_r10*x1611); |
| IkReal x1617=(new_r11*x1611); |
| evalcond[0]=(sj3+((new_r10*x1610))); |
| evalcond[1]=(((new_r11*x1610))+(((-1.0)*x1612))); |
| evalcond[2]=((((-1.0)*x1616))+(((-1.0)*x1613))); |
| evalcond[3]=((((-1.0)*x1617))+(((-1.0)*x1614))); |
| evalcond[4]=((((-1.0)*x1612))+(((-1.0000000008)*x1616))); |
| evalcond[5]=((((-1.0)*sj3))+(((-1.0000000008)*x1617))); |
| evalcond[6]=(((sj3*x1611))+(((-1.0)*x1610*x1613))); |
| evalcond[7]=(x1615+new_r10+((x1611*x1613))); |
| evalcond[8]=((((-1.0)*x1611*x1612))+(((-1.0)*x1610*x1614))); |
| evalcond[9]=((((-1.0)*x1610*x1612))+new_r11+((x1611*x1614))); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[2]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[3]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[4]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[5]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[6]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[7]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[8]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[9]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| |
| } |
| |
| } |
| |
| } else |
| { |
| { |
| IkReal j5array[1], cj5array[1], sj5array[1]; |
| bool j5valid[1]={false}; |
| _nj5 = 1; |
| CheckValue<IkReal> x1619=IKPowWithIntegerCheck(new_r10,-1); |
| if(!x1619.valid){ |
| continue; |
| } |
| IkReal x1618=x1619.value; |
| if( IKabs(((-1.0000000008)*cj3*x1618)) < IKFAST_ATAN2_MAGTHRESH && IKabs(((-1.0)*sj3*x1618)) < IKFAST_ATAN2_MAGTHRESH && IKabs(IKsqr(((-1.0000000008)*cj3*x1618))+IKsqr(((-1.0)*sj3*x1618))-1) <= IKFAST_SINCOS_THRESH ) |
| continue; |
| j5array[0]=IKatan2(((-1.0000000008)*cj3*x1618), ((-1.0)*sj3*x1618)); |
| sj5array[0]=IKsin(j5array[0]); |
| cj5array[0]=IKcos(j5array[0]); |
| if( j5array[0] > IKPI ) |
| { |
| j5array[0]-=IK2PI; |
| } |
| else if( j5array[0] < -IKPI ) |
| { j5array[0]+=IK2PI; |
| } |
| j5valid[0] = true; |
| for(int ij5 = 0; ij5 < 1; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < 1; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| { |
| IkReal evalcond[10]; |
| IkReal x1620=IKcos(j5); |
| IkReal x1621=IKsin(j5); |
| IkReal x1622=((1.0)*cj3); |
| IkReal x1623=((1.0000000008)*cj3); |
| IkReal x1624=((1.0000000008)*sj3); |
| IkReal x1625=(sj3*x1620); |
| IkReal x1626=(new_r10*x1621); |
| IkReal x1627=(new_r11*x1621); |
| evalcond[0]=(sj3+((new_r10*x1620))); |
| evalcond[1]=(((new_r11*x1620))+(((-1.0)*x1622))); |
| evalcond[2]=((((-1.0)*x1626))+(((-1.0)*x1623))); |
| evalcond[3]=((((-1.0)*x1627))+(((-1.0)*x1624))); |
| evalcond[4]=((((-1.0)*x1622))+(((-1.0000000008)*x1626))); |
| evalcond[5]=((((-1.0)*sj3))+(((-1.0000000008)*x1627))); |
| evalcond[6]=(((sj3*x1621))+(((-1.0)*x1620*x1623))); |
| evalcond[7]=(x1625+new_r10+((x1621*x1623))); |
| evalcond[8]=((((-1.0)*x1621*x1622))+(((-1.0)*x1620*x1624))); |
| evalcond[9]=((((-1.0)*x1620*x1622))+new_r11+((x1621*x1624))); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[2]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[3]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[4]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[5]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[6]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[7]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[8]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[9]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| |
| } |
| |
| } |
| |
| } |
| } while(0); |
| if( bgotonextstatement ) |
| { |
| bool bgotonextstatement = true; |
| do |
| { |
| evalcond[0]=((IKabs(new_r10))+(IKabs(new_r00))); |
| if( IKabs(evalcond[0]) < 0.0000050000000000 ) |
| { |
| bgotonextstatement=false; |
| { |
| IkReal j5eval[1]; |
| sj4=4.0e-5; |
| cj4=1.0; |
| j4=4.0e-5; |
| new_r00=0; |
| new_r10=0; |
| new_r21=0; |
| new_r22=0; |
| j5eval[0]=((IKabs(new_r11))+(IKabs(new_r01))); |
| if( IKabs(j5eval[0]) < 0.0000010000000000 ) |
| { |
| { |
| IkReal j5eval[1]; |
| sj4=4.0e-5; |
| cj4=1.0; |
| j4=4.0e-5; |
| new_r00=0; |
| new_r10=0; |
| new_r21=0; |
| new_r22=0; |
| j5eval[0]=1.0; |
| if( IKabs(j5eval[0]) < 0.0000010000000000 ) |
| { |
| continue; // no branches [j5] |
| |
| } else |
| { |
| { |
| IkReal j5array[2], cj5array[2], sj5array[2]; |
| bool j5valid[2]={false}; |
| _nj5 = 2; |
| CheckValue<IkReal> x1629 = IKatan2WithCheck(IkReal(((1.0000000008)*new_r01)),IkReal(((-1.0000000008)*new_r11)),IKFAST_ATAN2_MAGTHRESH); |
| if(!x1629.valid){ |
| continue; |
| } |
| IkReal x1628=x1629.value; |
| j5array[0]=((-1.0)*x1628); |
| sj5array[0]=IKsin(j5array[0]); |
| cj5array[0]=IKcos(j5array[0]); |
| j5array[1]=((3.14159265358979)+(((-1.0)*x1628))); |
| sj5array[1]=IKsin(j5array[1]); |
| cj5array[1]=IKcos(j5array[1]); |
| if( j5array[0] > IKPI ) |
| { |
| j5array[0]-=IK2PI; |
| } |
| else if( j5array[0] < -IKPI ) |
| { j5array[0]+=IK2PI; |
| } |
| j5valid[0] = true; |
| if( j5array[1] > IKPI ) |
| { |
| j5array[1]-=IK2PI; |
| } |
| else if( j5array[1] < -IKPI ) |
| { j5array[1]+=IK2PI; |
| } |
| j5valid[1] = true; |
| for(int ij5 = 0; ij5 < 2; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < 2; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| { |
| IkReal evalcond[2]; |
| IkReal x1630=IKcos(j5); |
| IkReal x1631=IKsin(j5); |
| evalcond[0]=(((new_r11*x1630))+((new_r01*x1631))); |
| evalcond[1]=(((new_r01*x1630))+(((-1.0)*new_r11*x1631))); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| |
| } |
| |
| } |
| |
| } else |
| { |
| { |
| IkReal j5array[2], cj5array[2], sj5array[2]; |
| bool j5valid[2]={false}; |
| _nj5 = 2; |
| CheckValue<IkReal> x1633 = IKatan2WithCheck(IkReal(new_r11),IkReal(new_r01),IKFAST_ATAN2_MAGTHRESH); |
| if(!x1633.valid){ |
| continue; |
| } |
| IkReal x1632=x1633.value; |
| j5array[0]=((-1.0)*x1632); |
| sj5array[0]=IKsin(j5array[0]); |
| cj5array[0]=IKcos(j5array[0]); |
| j5array[1]=((3.14159265358979)+(((-1.0)*x1632))); |
| sj5array[1]=IKsin(j5array[1]); |
| cj5array[1]=IKcos(j5array[1]); |
| if( j5array[0] > IKPI ) |
| { |
| j5array[0]-=IK2PI; |
| } |
| else if( j5array[0] < -IKPI ) |
| { j5array[0]+=IK2PI; |
| } |
| j5valid[0] = true; |
| if( j5array[1] > IKPI ) |
| { |
| j5array[1]-=IK2PI; |
| } |
| else if( j5array[1] < -IKPI ) |
| { j5array[1]+=IK2PI; |
| } |
| j5valid[1] = true; |
| for(int ij5 = 0; ij5 < 2; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < 2; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| { |
| IkReal evalcond[2]; |
| IkReal x1634=IKcos(j5); |
| IkReal x1635=IKsin(j5); |
| IkReal x1636=(new_r11*x1635); |
| IkReal x1637=(new_r01*x1634); |
| evalcond[0]=(x1637+(((-1.0)*x1636))); |
| evalcond[1]=((((-1.0000000008)*x1636))+(((1.0000000008)*x1637))); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| |
| } |
| |
| } |
| |
| } |
| } while(0); |
| if( bgotonextstatement ) |
| { |
| bool bgotonextstatement = true; |
| do |
| { |
| if( 1 ) |
| { |
| bgotonextstatement=false; |
| continue; // branch miss [j5] |
| |
| } |
| } while(0); |
| if( bgotonextstatement ) |
| { |
| } |
| } |
| } |
| } |
| } |
| } |
| } |
| } |
| } |
| } |
| } |
| } |
| } |
| } |
| |
| } else |
| { |
| { |
| IkReal j5array[1], cj5array[1], sj5array[1]; |
| bool j5valid[1]={false}; |
| _nj5 = 1; |
| CheckValue<IkReal> x1643=IKPowWithIntegerCheck(new_r00,-1); |
| if(!x1643.valid){ |
| continue; |
| } |
| IkReal x1638=x1643.value; |
| IkReal x1639=((25000.0)*new_r01); |
| IkReal x1640=((25000.0)*cj3*sj3); |
| CheckValue<IkReal> x1644=IKPowWithIntegerCheck(((((25000.0)*cj3*new_r10))+(((-25000.00002)*new_r00*sj3))),-1); |
| if(!x1644.valid){ |
| continue; |
| } |
| IkReal x1641=x1644.value; |
| IkReal x1642=(new_r10*x1641); |
| if( IKabs(((((-1.0)*sj3*x1638))+((x1639*x1642))+((x1638*x1640*x1642)))) < IKFAST_ATAN2_MAGTHRESH && IKabs((x1641*(((((-1.0)*new_r00*x1639))+(((-1.0)*x1640)))))) < IKFAST_ATAN2_MAGTHRESH && IKabs(IKsqr(((((-1.0)*sj3*x1638))+((x1639*x1642))+((x1638*x1640*x1642))))+IKsqr((x1641*(((((-1.0)*new_r00*x1639))+(((-1.0)*x1640))))))-1) <= IKFAST_SINCOS_THRESH ) |
| continue; |
| j5array[0]=IKatan2(((((-1.0)*sj3*x1638))+((x1639*x1642))+((x1638*x1640*x1642))), (x1641*(((((-1.0)*new_r00*x1639))+(((-1.0)*x1640)))))); |
| sj5array[0]=IKsin(j5array[0]); |
| cj5array[0]=IKcos(j5array[0]); |
| if( j5array[0] > IKPI ) |
| { |
| j5array[0]-=IK2PI; |
| } |
| else if( j5array[0] < -IKPI ) |
| { j5array[0]+=IK2PI; |
| } |
| j5valid[0] = true; |
| for(int ij5 = 0; ij5 < 1; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < 1; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| { |
| IkReal evalcond[10]; |
| IkReal x1645=IKcos(j5); |
| IkReal x1646=IKsin(j5); |
| IkReal x1647=((1.0)*cj3); |
| IkReal x1648=((1.0000000008)*cj3); |
| IkReal x1649=(cj3*x1645); |
| IkReal x1650=(new_r11*x1646); |
| IkReal x1651=(sj3*x1646); |
| IkReal x1652=(new_r01*x1645); |
| IkReal x1653=(new_r00*x1645); |
| IkReal x1654=(sj3*x1645); |
| IkReal x1655=(new_r10*x1646); |
| evalcond[0]=(((new_r10*x1645))+sj3+((new_r00*x1646))); |
| evalcond[1]=(((new_r11*x1645))+(((-1.0)*x1647))+((new_r01*x1646))); |
| evalcond[2]=(x1651+(((-1.0)*x1645*x1648))+new_r00); |
| evalcond[3]=(x1654+((x1646*x1648))+new_r10); |
| evalcond[4]=((((-1.0)*x1646*x1647))+(((-1.0000000008)*x1654))+new_r01); |
| evalcond[5]=((((-1.0)*x1645*x1647))+(((1.0000000008)*x1651))+new_r11); |
| evalcond[6]=(x1653+(((-1.0)*x1655))+(((-1.0)*x1648))); |
| evalcond[7]=(x1652+(((-1.0)*x1650))+(((-1.0000000008)*sj3))); |
| evalcond[8]=((((-1.0000000008)*x1655))+(((-1.0)*x1647))+(((1.0000000008)*x1653))); |
| evalcond[9]=((((-1.0)*sj3))+(((-1.0000000008)*x1650))+(((1.0000000008)*x1652))); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[2]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[3]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[4]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[5]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[6]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[7]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[8]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[9]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| |
| } |
| |
| } |
| |
| } else |
| { |
| { |
| IkReal j5array[1], cj5array[1], sj5array[1]; |
| bool j5valid[1]={false}; |
| _nj5 = 1; |
| IkReal x1656=new_r00*new_r00; |
| IkReal x1657=cj3*cj3; |
| IkReal x1658=new_r10*new_r10; |
| IkReal x1659=((625000000.0)*new_r00); |
| IkReal x1660=((25000.00002)*cj3); |
| IkReal x1661=((625000000.5)*cj3); |
| IkReal x1662=((25000.0)*new_r00); |
| IkReal x1663=((625000000.0)*x1656); |
| CheckValue<IkReal> x1664=IKPowWithIntegerCheck(((((-625000001.0)*x1657*x1658))+x1663+(((-1.0)*x1657*x1663))),-1); |
| if(!x1664.valid){ |
| continue; |
| } |
| CheckValue<IkReal> x1665=IKPowWithIntegerCheck((((sj3*x1662))+(((-1.0)*new_r10*x1660))),-1); |
| if(!x1665.valid){ |
| continue; |
| } |
| if( IKabs(((x1664.value)*(((((-1.0)*x1659*(sj3*sj3*sj3)))+((x1661*(new_r10*new_r10*new_r10)))+((new_r10*x1661*(cj3*cj3)))+(((-1.0)*new_r10*x1661))+((sj3*x1658*x1659)))))) < IKFAST_ATAN2_MAGTHRESH && IKabs(((x1665.value)*((((sj3*x1660))+(((-1.0)*new_r10*x1662)))))) < IKFAST_ATAN2_MAGTHRESH && IKabs(IKsqr(((x1664.value)*(((((-1.0)*x1659*(sj3*sj3*sj3)))+((x1661*(new_r10*new_r10*new_r10)))+((new_r10*x1661*(cj3*cj3)))+(((-1.0)*new_r10*x1661))+((sj3*x1658*x1659))))))+IKsqr(((x1665.value)*((((sj3*x1660))+(((-1.0)*new_r10*x1662))))))-1) <= IKFAST_SINCOS_THRESH ) |
| continue; |
| j5array[0]=IKatan2(((x1664.value)*(((((-1.0)*x1659*(sj3*sj3*sj3)))+((x1661*(new_r10*new_r10*new_r10)))+((new_r10*x1661*(cj3*cj3)))+(((-1.0)*new_r10*x1661))+((sj3*x1658*x1659))))), ((x1665.value)*((((sj3*x1660))+(((-1.0)*new_r10*x1662)))))); |
| sj5array[0]=IKsin(j5array[0]); |
| cj5array[0]=IKcos(j5array[0]); |
| if( j5array[0] > IKPI ) |
| { |
| j5array[0]-=IK2PI; |
| } |
| else if( j5array[0] < -IKPI ) |
| { j5array[0]+=IK2PI; |
| } |
| j5valid[0] = true; |
| for(int ij5 = 0; ij5 < 1; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < 1; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| { |
| IkReal evalcond[10]; |
| IkReal x1666=IKcos(j5); |
| IkReal x1667=IKsin(j5); |
| IkReal x1668=((1.0)*cj3); |
| IkReal x1669=((1.0000000008)*cj3); |
| IkReal x1670=(cj3*x1666); |
| IkReal x1671=(new_r11*x1667); |
| IkReal x1672=(sj3*x1667); |
| IkReal x1673=(new_r01*x1666); |
| IkReal x1674=(new_r00*x1666); |
| IkReal x1675=(sj3*x1666); |
| IkReal x1676=(new_r10*x1667); |
| evalcond[0]=(sj3+((new_r00*x1667))+((new_r10*x1666))); |
| evalcond[1]=(((new_r11*x1666))+((new_r01*x1667))+(((-1.0)*x1668))); |
| evalcond[2]=(x1672+new_r00+(((-1.0)*x1666*x1669))); |
| evalcond[3]=(x1675+((x1667*x1669))+new_r10); |
| evalcond[4]=((((-1.0)*x1667*x1668))+new_r01+(((-1.0000000008)*x1675))); |
| evalcond[5]=((((1.0000000008)*x1672))+new_r11+(((-1.0)*x1666*x1668))); |
| evalcond[6]=(x1674+(((-1.0)*x1676))+(((-1.0)*x1669))); |
| evalcond[7]=(x1673+(((-1.0)*x1671))+(((-1.0000000008)*sj3))); |
| evalcond[8]=((((1.0000000008)*x1674))+(((-1.0)*x1668))+(((-1.0000000008)*x1676))); |
| evalcond[9]=((((-1.0)*sj3))+(((1.0000000008)*x1673))+(((-1.0000000008)*x1671))); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[2]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[3]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[4]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[5]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[6]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[7]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[8]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[9]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| |
| } |
| |
| } |
| |
| } else |
| { |
| { |
| IkReal j5array[1], cj5array[1], sj5array[1]; |
| bool j5valid[1]={false}; |
| _nj5 = 1; |
| IkReal x1677=((1.0)*new_r00); |
| CheckValue<IkReal> x1678 = IKatan2WithCheck(IkReal((((new_r11*sj3))+((cj3*new_r10)))),IkReal(((((-1.0)*new_r01*sj3))+(((-1.0)*cj3*x1677)))),IKFAST_ATAN2_MAGTHRESH); |
| if(!x1678.valid){ |
| continue; |
| } |
| CheckValue<IkReal> x1679=IKPowWithIntegerCheck(IKsign((((new_r01*new_r10))+(((-1.0)*new_r11*x1677)))),-1); |
| if(!x1679.valid){ |
| continue; |
| } |
| j5array[0]=((-1.5707963267949)+(x1678.value)+(((1.5707963267949)*(x1679.value)))); |
| sj5array[0]=IKsin(j5array[0]); |
| cj5array[0]=IKcos(j5array[0]); |
| if( j5array[0] > IKPI ) |
| { |
| j5array[0]-=IK2PI; |
| } |
| else if( j5array[0] < -IKPI ) |
| { j5array[0]+=IK2PI; |
| } |
| j5valid[0] = true; |
| for(int ij5 = 0; ij5 < 1; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < 1; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| { |
| IkReal evalcond[10]; |
| IkReal x1680=IKcos(j5); |
| IkReal x1681=IKsin(j5); |
| IkReal x1682=((1.0)*cj3); |
| IkReal x1683=((1.0000000008)*cj3); |
| IkReal x1684=(cj3*x1680); |
| IkReal x1685=(new_r11*x1681); |
| IkReal x1686=(sj3*x1681); |
| IkReal x1687=(new_r01*x1680); |
| IkReal x1688=(new_r00*x1680); |
| IkReal x1689=(sj3*x1680); |
| IkReal x1690=(new_r10*x1681); |
| evalcond[0]=(((new_r00*x1681))+sj3+((new_r10*x1680))); |
| evalcond[1]=((((-1.0)*x1682))+((new_r11*x1680))+((new_r01*x1681))); |
| evalcond[2]=(x1686+(((-1.0)*x1680*x1683))+new_r00); |
| evalcond[3]=(((x1681*x1683))+x1689+new_r10); |
| evalcond[4]=((((-1.0)*x1681*x1682))+(((-1.0000000008)*x1689))+new_r01); |
| evalcond[5]=((((-1.0)*x1680*x1682))+new_r11+(((1.0000000008)*x1686))); |
| evalcond[6]=((((-1.0)*x1683))+x1688+(((-1.0)*x1690))); |
| evalcond[7]=(x1687+(((-1.0)*x1685))+(((-1.0000000008)*sj3))); |
| evalcond[8]=((((-1.0)*x1682))+(((1.0000000008)*x1688))+(((-1.0000000008)*x1690))); |
| evalcond[9]=((((-1.0)*sj3))+(((-1.0000000008)*x1685))+(((1.0000000008)*x1687))); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[2]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[3]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[4]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[5]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[6]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[7]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[8]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[9]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| |
| } |
| |
| } |
| |
| } |
| } while(0); |
| if( bgotonextstatement ) |
| { |
| bool bgotonextstatement = true; |
| do |
| { |
| evalcond[0]=((-3.14159265358979)+(IKfmod(((3.14159265358979)+(IKabs(((-3.14163265358977)+j4)))), 6.28318530717959))); |
| evalcond[1]=new_r02; |
| evalcond[2]=new_r12; |
| evalcond[3]=new_r20; |
| evalcond[4]=new_r21; |
| if( IKabs(evalcond[0]) < 0.0000050000000000 && IKabs(evalcond[1]) < 0.0000050000000000 && IKabs(evalcond[2]) < 0.0000050000000000 && IKabs(evalcond[3]) < 0.0000050000000000 && IKabs(evalcond[4]) < 0.0000050000000000 ) |
| { |
| bgotonextstatement=false; |
| { |
| IkReal j5eval[3]; |
| sj4=-4.0e-5; |
| cj4=-1.0; |
| j4=3.14163265; |
| IkReal x1691=((1.0)*new_r00); |
| IkReal x1692=((((-1.0)*new_r11*x1691))+((new_r01*new_r10))); |
| j5eval[0]=x1692; |
| j5eval[1]=IKsign(x1692); |
| j5eval[2]=((IKabs((((new_r11*sj3))+((cj3*new_r10)))))+(IKabs(((((-1.0)*new_r01*sj3))+(((-1.0)*cj3*x1691)))))); |
| if( IKabs(j5eval[0]) < 0.0000010000000000 || IKabs(j5eval[1]) < 0.0000010000000000 || IKabs(j5eval[2]) < 0.0000010000000000 ) |
| { |
| { |
| IkReal j5eval[2]; |
| sj4=-4.0e-5; |
| cj4=-1.0; |
| j4=3.14163265; |
| j5eval[0]=((((1.0000000008)*new_r00*sj3))+((cj3*new_r10))); |
| j5eval[1]=new_r00; |
| if( IKabs(j5eval[0]) < 0.0000010000000000 || IKabs(j5eval[1]) < 0.0000010000000000 ) |
| { |
| { |
| IkReal j5eval[2]; |
| sj4=-4.0e-5; |
| cj4=-1.0; |
| j4=3.14163265; |
| j5eval[0]=new_r00; |
| j5eval[1]=(((new_r00*sj3))+(((1.0000000008)*cj3*new_r10))); |
| if( IKabs(j5eval[0]) < 0.0000010000000000 || IKabs(j5eval[1]) < 0.0000010000000000 ) |
| { |
| { |
| IkReal evalcond[1]; |
| bool bgotonextstatement = true; |
| do |
| { |
| IkReal x1694 = ((((1.0000000016)*(new_r10*new_r10)))+(new_r00*new_r00)); |
| if(IKabs(x1694)==0){ |
| continue; |
| } |
| IkReal x1693=pow(x1694,-0.5); |
| CheckValue<IkReal> x1695 = IKatan2WithCheck(IkReal(((1.0000000008)*new_r10)),IkReal(new_r00),IKFAST_ATAN2_MAGTHRESH); |
| if(!x1695.valid){ |
| continue; |
| } |
| IkReal gconst20=((-1.0)*(x1695.value)); |
| IkReal gconst21=((-1.0000000008)*new_r10*x1693); |
| IkReal gconst22=(new_r00*x1693); |
| CheckValue<IkReal> x1696 = IKatan2WithCheck(IkReal(((1.0000000008)*new_r10)),IkReal(new_r00),IKFAST_ATAN2_MAGTHRESH); |
| if(!x1696.valid){ |
| continue; |
| } |
| evalcond[0]=((-3.14159265358979)+(IKfmod(((3.14159265358979)+(IKabs(((x1696.value)+j3)))), 6.28318530717959))); |
| if( IKabs(evalcond[0]) < 0.0000050000000000 ) |
| { |
| bgotonextstatement=false; |
| { |
| IkReal j5eval[3]; |
| IkReal x1697=x1693; |
| sj4=-4.0e-5; |
| cj4=-1.0; |
| j4=3.14163265; |
| sj3=gconst21; |
| cj3=gconst22; |
| CheckValue<IkReal> x1698 = IKatan2WithCheck(IkReal(new_r10),IkReal(new_r00),IKFAST_ATAN2_MAGTHRESH); |
| if(!x1698.valid){ |
| continue; |
| } |
| j3=((-1.0)*(x1698.value)); |
| CheckValue<IkReal> x1699 = IKatan2WithCheck(IkReal(((1.0000000008)*new_r10)),IkReal(new_r00),IKFAST_ATAN2_MAGTHRESH); |
| if(!x1699.valid){ |
| continue; |
| } |
| IkReal gconst20=((-1.0)*(x1699.value)); |
| IkReal gconst21=((-1.0000000008)*new_r10*x1697); |
| IkReal gconst22=(new_r00*x1697); |
| IkReal x1700=new_r00*new_r00; |
| IkReal x1701=(new_r01*new_r10); |
| IkReal x1702=(x1701+(((-1.0)*new_r00*new_r11))); |
| IkReal x1705 = ((((625000000.0)*x1700))+(((625000001.0)*(new_r10*new_r10)))); |
| if(IKabs(x1705)==0){ |
| continue; |
| } |
| IkReal x1703=pow(x1705,-0.5); |
| IkReal x1704=(new_r10*x1703); |
| j5eval[0]=x1702; |
| j5eval[1]=IKsign(x1702); |
| j5eval[2]=((IKabs(((((25000.0)*new_r00*x1704))+(((-25000.00002)*new_r11*x1704)))))+(IKabs(((((-25000.0)*x1700*x1703))+(((25000.00002)*x1701*x1703)))))); |
| if( IKabs(j5eval[0]) < 0.0000010000000000 || IKabs(j5eval[1]) < 0.0000010000000000 || IKabs(j5eval[2]) < 0.0000010000000000 ) |
| { |
| { |
| IkReal j5eval[2]; |
| IkReal x1706=x1693; |
| sj4=-4.0e-5; |
| cj4=-1.0; |
| j4=3.14163265; |
| sj3=gconst21; |
| cj3=gconst22; |
| CheckValue<IkReal> x1707 = IKatan2WithCheck(IkReal(new_r10),IkReal(new_r00),IKFAST_ATAN2_MAGTHRESH); |
| if(!x1707.valid){ |
| continue; |
| } |
| j3=((-1.0)*(x1707.value)); |
| CheckValue<IkReal> x1708 = IKatan2WithCheck(IkReal(((1.0000000008)*new_r10)),IkReal(new_r00),IKFAST_ATAN2_MAGTHRESH); |
| if(!x1708.valid){ |
| continue; |
| } |
| IkReal gconst20=((-1.0)*(x1708.value)); |
| IkReal gconst21=((-1.0000000008)*new_r10*x1706); |
| IkReal gconst22=(new_r00*x1706); |
| j5eval[0]=new_r00; |
| IkReal x1709 = ((((1.0000000016)*(new_r10*new_r10)))+(new_r00*new_r00)); |
| if(IKabs(x1709)==0){ |
| continue; |
| } |
| j5eval[1]=((-1.6e-9)*new_r00*new_r10*(pow(x1709,-0.5))); |
| if( IKabs(j5eval[0]) < 0.0000010000000000 || IKabs(j5eval[1]) < 0.0000010000000000 ) |
| { |
| { |
| IkReal j5eval[1]; |
| IkReal x1710=x1693; |
| sj4=-4.0e-5; |
| cj4=-1.0; |
| j4=3.14163265; |
| sj3=gconst21; |
| cj3=gconst22; |
| CheckValue<IkReal> x1711 = IKatan2WithCheck(IkReal(new_r10),IkReal(new_r00),IKFAST_ATAN2_MAGTHRESH); |
| if(!x1711.valid){ |
| continue; |
| } |
| j3=((-1.0)*(x1711.value)); |
| CheckValue<IkReal> x1712 = IKatan2WithCheck(IkReal(((1.0000000008)*new_r10)),IkReal(new_r00),IKFAST_ATAN2_MAGTHRESH); |
| if(!x1712.valid){ |
| continue; |
| } |
| IkReal gconst20=((-1.0)*(x1712.value)); |
| IkReal gconst21=((-1.0000000008)*new_r10*x1710); |
| IkReal gconst22=(new_r00*x1710); |
| j5eval[0]=new_r00; |
| if( IKabs(j5eval[0]) < 0.0000010000000000 ) |
| { |
| { |
| IkReal evalcond[1]; |
| bool bgotonextstatement = true; |
| do |
| { |
| evalcond[0]=IKabs(new_r00); |
| if( IKabs(evalcond[0]) < 0.0000050000000000 ) |
| { |
| bgotonextstatement=false; |
| { |
| IkReal j5eval[1]; |
| sj4=-4.0e-5; |
| cj4=-1.0; |
| j4=3.14163265; |
| sj3=gconst21; |
| cj3=gconst22; |
| CheckValue<IkReal> x1713 = IKatan2WithCheck(IkReal(new_r10),IkReal(0),IKFAST_ATAN2_MAGTHRESH); |
| if(!x1713.valid){ |
| continue; |
| } |
| j3=((-1.0)*(x1713.value)); |
| new_r00=0; |
| CheckValue<IkReal> x1714 = IKatan2WithCheck(IkReal(((1.0000000008)*new_r10)),IkReal(0),IKFAST_ATAN2_MAGTHRESH); |
| if(!x1714.valid){ |
| continue; |
| } |
| IkReal gconst20=((-1.0)*(x1714.value)); |
| IkReal x1715 = new_r10*new_r10; |
| if(IKabs(x1715)==0){ |
| continue; |
| } |
| IkReal gconst21=((-1.0)*new_r10*(pow(x1715,-0.5))); |
| IkReal gconst22=0; |
| j5eval[0]=new_r10; |
| if( IKabs(j5eval[0]) < 0.0000010000000000 ) |
| { |
| { |
| IkReal j5array[1], cj5array[1], sj5array[1]; |
| bool j5valid[1]={false}; |
| _nj5 = 1; |
| CheckValue<IkReal> x1717=IKPowWithIntegerCheck(gconst21,-1); |
| if(!x1717.valid){ |
| continue; |
| } |
| IkReal x1716=x1717.value; |
| if( IKabs(((0.9999999992)*new_r11*x1716)) < IKFAST_ATAN2_MAGTHRESH && IKabs(((-1.0)*new_r10*x1716)) < IKFAST_ATAN2_MAGTHRESH && IKabs(IKsqr(((0.9999999992)*new_r11*x1716))+IKsqr(((-1.0)*new_r10*x1716))-1) <= IKFAST_SINCOS_THRESH ) |
| continue; |
| j5array[0]=IKatan2(((0.9999999992)*new_r11*x1716), ((-1.0)*new_r10*x1716)); |
| sj5array[0]=IKsin(j5array[0]); |
| cj5array[0]=IKcos(j5array[0]); |
| if( j5array[0] > IKPI ) |
| { |
| j5array[0]-=IK2PI; |
| } |
| else if( j5array[0] < -IKPI ) |
| { j5array[0]+=IK2PI; |
| } |
| j5valid[0] = true; |
| for(int ij5 = 0; ij5 < 1; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < 1; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| { |
| IkReal evalcond[10]; |
| IkReal x1718=IKsin(j5); |
| IkReal x1719=IKcos(j5); |
| IkReal x1720=(new_r10*x1718); |
| IkReal x1721=((1.0000000008)*x1719); |
| IkReal x1722=(new_r11*x1718); |
| IkReal x1723=(gconst21*x1718); |
| evalcond[0]=x1723; |
| evalcond[1]=((-1.0)*x1720); |
| evalcond[2]=(((new_r10*x1719))+gconst21); |
| evalcond[3]=(((gconst21*x1719))+new_r10); |
| evalcond[4]=((1.0000000008)*x1720); |
| evalcond[5]=(((new_r11*x1719))+((new_r01*x1718))); |
| evalcond[6]=(((gconst21*x1721))+new_r01); |
| evalcond[7]=((((-1.0000000008)*x1723))+new_r11); |
| evalcond[8]=(((new_r01*x1719))+(((1.0000000008)*gconst21))+(((-1.0)*x1722))); |
| evalcond[9]=((((-1.0)*new_r01*x1721))+(((1.0000000008)*x1722))+(((-1.0)*gconst21))); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[2]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[3]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[4]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[5]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[6]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[7]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[8]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[9]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| |
| } else |
| { |
| { |
| IkReal j5array[1], cj5array[1], sj5array[1]; |
| bool j5valid[1]={false}; |
| _nj5 = 1; |
| CheckValue<IkReal> x1724=IKPowWithIntegerCheck(gconst21,-1); |
| if(!x1724.valid){ |
| continue; |
| } |
| CheckValue<IkReal> x1725=IKPowWithIntegerCheck(new_r10,-1); |
| if(!x1725.valid){ |
| continue; |
| } |
| if( IKabs(((0.9999999992)*new_r11*(x1724.value))) < IKFAST_ATAN2_MAGTHRESH && IKabs(((-1.0)*gconst21*(x1725.value))) < IKFAST_ATAN2_MAGTHRESH && IKabs(IKsqr(((0.9999999992)*new_r11*(x1724.value)))+IKsqr(((-1.0)*gconst21*(x1725.value)))-1) <= IKFAST_SINCOS_THRESH ) |
| continue; |
| j5array[0]=IKatan2(((0.9999999992)*new_r11*(x1724.value)), ((-1.0)*gconst21*(x1725.value))); |
| sj5array[0]=IKsin(j5array[0]); |
| cj5array[0]=IKcos(j5array[0]); |
| if( j5array[0] > IKPI ) |
| { |
| j5array[0]-=IK2PI; |
| } |
| else if( j5array[0] < -IKPI ) |
| { j5array[0]+=IK2PI; |
| } |
| j5valid[0] = true; |
| for(int ij5 = 0; ij5 < 1; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < 1; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| { |
| IkReal evalcond[10]; |
| IkReal x1726=IKsin(j5); |
| IkReal x1727=IKcos(j5); |
| IkReal x1728=(new_r10*x1726); |
| IkReal x1729=((1.0000000008)*x1727); |
| IkReal x1730=(new_r11*x1726); |
| IkReal x1731=(gconst21*x1726); |
| evalcond[0]=x1731; |
| evalcond[1]=((-1.0)*x1728); |
| evalcond[2]=(gconst21+((new_r10*x1727))); |
| evalcond[3]=(((gconst21*x1727))+new_r10); |
| evalcond[4]=((1.0000000008)*x1728); |
| evalcond[5]=(((new_r11*x1727))+((new_r01*x1726))); |
| evalcond[6]=(((gconst21*x1729))+new_r01); |
| evalcond[7]=((((-1.0000000008)*x1731))+new_r11); |
| evalcond[8]=((((1.0000000008)*gconst21))+(((-1.0)*x1730))+((new_r01*x1727))); |
| evalcond[9]=((((-1.0)*new_r01*x1729))+(((1.0000000008)*x1730))+(((-1.0)*gconst21))); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[2]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[3]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[4]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[5]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[6]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[7]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[8]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[9]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| |
| } |
| |
| } |
| |
| } |
| } while(0); |
| if( bgotonextstatement ) |
| { |
| bool bgotonextstatement = true; |
| do |
| { |
| evalcond[0]=((IKabs(new_r11))+(IKabs(new_r01))); |
| if( IKabs(evalcond[0]) < 0.0000050000000000 ) |
| { |
| bgotonextstatement=false; |
| { |
| IkReal j5eval[5]; |
| IkReal x1733 = ((1.0)+(((1.6e-9)*(new_r10*new_r10)))); |
| if(IKabs(x1733)==0){ |
| continue; |
| } |
| IkReal x1732=pow(x1733,-0.5); |
| sj4=-4.0e-5; |
| cj4=-1.0; |
| j4=3.14163265; |
| sj3=gconst21; |
| cj3=gconst22; |
| CheckValue<IkReal> x1734 = IKatan2WithCheck(IkReal(new_r10),IkReal(new_r00),IKFAST_ATAN2_MAGTHRESH); |
| if(!x1734.valid){ |
| continue; |
| } |
| j3=((-1.0)*(x1734.value)); |
| new_r11=0; |
| new_r01=0; |
| new_r22=0; |
| new_r20=0; |
| CheckValue<IkReal> x1735 = IKatan2WithCheck(IkReal(((1.0000000008)*new_r10)),IkReal(new_r00),IKFAST_ATAN2_MAGTHRESH); |
| if(!x1735.valid){ |
| continue; |
| } |
| IkReal gconst20=((-1.0)*(x1735.value)); |
| IkReal gconst21=((-1.0000000008)*new_r10*x1732); |
| IkReal gconst22=(new_r00*x1732); |
| j5eval[0]=1.0; |
| j5eval[1]=1.0; |
| j5eval[2]=3.90625000625e+17; |
| j5eval[3]=((1.0)+(((1.6e-9)*(new_r10*new_r10)))); |
| j5eval[4]=1.0; |
| if( IKabs(j5eval[0]) < 0.0000010000000000 || IKabs(j5eval[1]) < 0.0000010000000000 || IKabs(j5eval[2]) < 0.0000010000000000 || IKabs(j5eval[3]) < 0.0000010000000000 || IKabs(j5eval[4]) < 0.0000010000000000 ) |
| { |
| { |
| IkReal j5eval[1]; |
| IkReal x1737 = ((1.0)+(((1.6e-9)*(new_r10*new_r10)))); |
| if(IKabs(x1737)==0){ |
| continue; |
| } |
| IkReal x1736=pow(x1737,-0.5); |
| sj4=-4.0e-5; |
| cj4=-1.0; |
| j4=3.14163265; |
| sj3=gconst21; |
| cj3=gconst22; |
| CheckValue<IkReal> x1738 = IKatan2WithCheck(IkReal(new_r10),IkReal(new_r00),IKFAST_ATAN2_MAGTHRESH); |
| if(!x1738.valid){ |
| continue; |
| } |
| j3=((-1.0)*(x1738.value)); |
| new_r11=0; |
| new_r01=0; |
| new_r22=0; |
| new_r20=0; |
| CheckValue<IkReal> x1739 = IKatan2WithCheck(IkReal(((1.0000000008)*new_r10)),IkReal(new_r00),IKFAST_ATAN2_MAGTHRESH); |
| if(!x1739.valid){ |
| continue; |
| } |
| IkReal gconst20=((-1.0)*(x1739.value)); |
| IkReal gconst21=((-1.0000000008)*new_r10*x1736); |
| IkReal gconst22=(new_r00*x1736); |
| IkReal x1740=new_r10*new_r10; |
| CheckValue<IkReal> x1742=IKPowWithIntegerCheck(((1.0)+(((1.6e-9)*x1740))),-1); |
| if(!x1742.valid){ |
| continue; |
| } |
| IkReal x1741=x1742.value; |
| IkReal x1743=((1.0)+(((-1.0)*x1740))); |
| j5eval[0]=IKsign(((((625000002.0)*x1741*(x1740*x1740)))+(((-625000000.0)*x1741*(x1743*x1743))))); |
| if( IKabs(j5eval[0]) < 0.0000010000000000 ) |
| { |
| { |
| IkReal j5eval[2]; |
| IkReal x1745 = ((1.0)+(((1.6e-9)*(new_r10*new_r10)))); |
| if(IKabs(x1745)==0){ |
| continue; |
| } |
| IkReal x1744=pow(x1745,-0.5); |
| sj4=-4.0e-5; |
| cj4=-1.0; |
| j4=3.14163265; |
| sj3=gconst21; |
| cj3=gconst22; |
| CheckValue<IkReal> x1746 = IKatan2WithCheck(IkReal(new_r10),IkReal(new_r00),IKFAST_ATAN2_MAGTHRESH); |
| if(!x1746.valid){ |
| continue; |
| } |
| j3=((-1.0)*(x1746.value)); |
| new_r11=0; |
| new_r01=0; |
| new_r22=0; |
| new_r20=0; |
| CheckValue<IkReal> x1747 = IKatan2WithCheck(IkReal(((1.0000000008)*new_r10)),IkReal(new_r00),IKFAST_ATAN2_MAGTHRESH); |
| if(!x1747.valid){ |
| continue; |
| } |
| IkReal gconst20=((-1.0)*(x1747.value)); |
| IkReal gconst21=((-1.0000000008)*new_r10*x1744); |
| IkReal gconst22=(new_r00*x1744); |
| IkReal x1748=new_r10*new_r10; |
| IkReal x1749=((1.0)+(((1.6e-9)*x1748))); |
| CheckValue<IkReal> x1750=IKPowWithIntegerCheck(x1749,-1); |
| if(!x1750.valid){ |
| continue; |
| } |
| j5eval[0]=((-3.20000000256e-9)*x1748*(x1750.value)*(((1.0)+(((-1.0)*x1748))))); |
| IkReal x1751 = x1749; |
| if(IKabs(x1751)==0){ |
| continue; |
| } |
| j5eval[1]=((-1.6e-9)*new_r00*new_r10*(pow(x1751,-0.5))); |
| if( IKabs(j5eval[0]) < 0.0000010000000000 || IKabs(j5eval[1]) < 0.0000010000000000 ) |
| { |
| continue; // 3 cases reached |
| |
| } else |
| { |
| { |
| IkReal j5array[1], cj5array[1], sj5array[1]; |
| bool j5valid[1]={false}; |
| _nj5 = 1; |
| IkReal x1752=gconst21*gconst21; |
| IkReal x1753=(gconst22*new_r10); |
| CheckValue<IkReal> x1754=IKPowWithIntegerCheck(((((-625000001.0)*x1752*(new_r00*new_r00)))+(((625000000.0)*(x1753*x1753)))),-1); |
| if(!x1754.valid){ |
| continue; |
| } |
| CheckValue<IkReal> x1755=IKPowWithIntegerCheck(((((25000.00002)*gconst21*new_r00))+(((25000.0)*x1753))),-1); |
| if(!x1755.valid){ |
| continue; |
| } |
| if( IKabs(((x1754.value)*(((((-625000000.5)*x1752*x1753))+(((625000001.0)*new_r00*(gconst21*gconst21*gconst21))))))) < IKFAST_ATAN2_MAGTHRESH && IKabs(((-25000.0)*gconst21*gconst22*(x1755.value))) < IKFAST_ATAN2_MAGTHRESH && IKabs(IKsqr(((x1754.value)*(((((-625000000.5)*x1752*x1753))+(((625000001.0)*new_r00*(gconst21*gconst21*gconst21)))))))+IKsqr(((-25000.0)*gconst21*gconst22*(x1755.value)))-1) <= IKFAST_SINCOS_THRESH ) |
| continue; |
| j5array[0]=IKatan2(((x1754.value)*(((((-625000000.5)*x1752*x1753))+(((625000001.0)*new_r00*(gconst21*gconst21*gconst21)))))), ((-25000.0)*gconst21*gconst22*(x1755.value))); |
| sj5array[0]=IKsin(j5array[0]); |
| cj5array[0]=IKcos(j5array[0]); |
| if( j5array[0] > IKPI ) |
| { |
| j5array[0]-=IK2PI; |
| } |
| else if( j5array[0] < -IKPI ) |
| { j5array[0]+=IK2PI; |
| } |
| j5valid[0] = true; |
| for(int ij5 = 0; ij5 < 1; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < 1; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| { |
| IkReal evalcond[7]; |
| IkReal x1756=IKcos(j5); |
| IkReal x1757=IKsin(j5); |
| IkReal x1758=((1.0)*gconst22); |
| IkReal x1759=((1.0000000008)*gconst22); |
| IkReal x1760=((1.0000000008)*x1757); |
| IkReal x1761=(gconst21*x1756); |
| IkReal x1762=(new_r00*x1756); |
| evalcond[0]=(gconst21+((new_r00*x1757))+((new_r10*x1756))); |
| evalcond[1]=(((gconst21*x1757))+new_r00+((x1756*x1759))); |
| evalcond[2]=((((-1.0)*x1757*x1759))+x1761+new_r10); |
| evalcond[3]=((((-1.0)*x1757*x1758))+(((1.0000000008)*x1761))); |
| evalcond[4]=((((-1.0)*gconst21*x1760))+(((-1.0)*x1756*x1758))); |
| evalcond[5]=(x1762+x1759+(((-1.0)*new_r10*x1757))); |
| evalcond[6]=((((-1.0000000008)*x1762))+((new_r10*x1760))+(((-1.0)*x1758))); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[2]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[3]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[4]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[5]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[6]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| |
| } |
| |
| } |
| |
| } else |
| { |
| { |
| IkReal j5array[1], cj5array[1], sj5array[1]; |
| bool j5valid[1]={false}; |
| _nj5 = 1; |
| IkReal x1763=gconst22*gconst22; |
| IkReal x1764=gconst21*gconst21; |
| IkReal x1765=((625000000.0)*x1763); |
| IkReal x1766=((625000000.5)*gconst22*x1764); |
| CheckValue<IkReal> x1767 = IKatan2WithCheck(IkReal((((gconst21*new_r00*x1765))+((new_r10*x1766)))),IkReal(((((-625000001.0)*new_r10*(gconst21*gconst21*gconst21)))+(((-1.0)*new_r00*x1766)))),IKFAST_ATAN2_MAGTHRESH); |
| if(!x1767.valid){ |
| continue; |
| } |
| CheckValue<IkReal> x1768=IKPowWithIntegerCheck(IKsign(((((625000001.0)*x1764*(new_r10*new_r10)))+(((-1.0)*x1765*(new_r00*new_r00))))),-1); |
| if(!x1768.valid){ |
| continue; |
| } |
| j5array[0]=((-1.5707963267949)+(x1767.value)+(((1.5707963267949)*(x1768.value)))); |
| sj5array[0]=IKsin(j5array[0]); |
| cj5array[0]=IKcos(j5array[0]); |
| if( j5array[0] > IKPI ) |
| { |
| j5array[0]-=IK2PI; |
| } |
| else if( j5array[0] < -IKPI ) |
| { j5array[0]+=IK2PI; |
| } |
| j5valid[0] = true; |
| for(int ij5 = 0; ij5 < 1; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < 1; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| { |
| IkReal evalcond[7]; |
| IkReal x1769=IKcos(j5); |
| IkReal x1770=IKsin(j5); |
| IkReal x1771=((1.0)*gconst22); |
| IkReal x1772=((1.0000000008)*gconst22); |
| IkReal x1773=((1.0000000008)*x1770); |
| IkReal x1774=(gconst21*x1769); |
| IkReal x1775=(new_r00*x1769); |
| evalcond[0]=(((new_r00*x1770))+((new_r10*x1769))+gconst21); |
| evalcond[1]=(new_r00+((gconst21*x1770))+((x1769*x1772))); |
| evalcond[2]=(x1774+(((-1.0)*x1770*x1772))+new_r10); |
| evalcond[3]=((((-1.0)*x1770*x1771))+(((1.0000000008)*x1774))); |
| evalcond[4]=((((-1.0)*gconst21*x1773))+(((-1.0)*x1769*x1771))); |
| evalcond[5]=(x1775+x1772+(((-1.0)*new_r10*x1770))); |
| evalcond[6]=((((-1.0000000008)*x1775))+(((-1.0)*x1771))+((new_r10*x1773))); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[2]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[3]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[4]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[5]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[6]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| |
| } |
| |
| } |
| |
| } else |
| { |
| { |
| IkReal j5array[1], cj5array[1], sj5array[1]; |
| bool j5valid[1]={false}; |
| _nj5 = 1; |
| IkReal x1776=((25000.00002)*gconst22); |
| IkReal x1777=((25000.0)*gconst21); |
| CheckValue<IkReal> x1778=IKPowWithIntegerCheck(IKsign(((((25000.0)*(new_r10*new_r10)))+(((25000.0)*(new_r00*new_r00))))),-1); |
| if(!x1778.valid){ |
| continue; |
| } |
| CheckValue<IkReal> x1779 = IKatan2WithCheck(IkReal((((new_r10*x1776))+(((-1.0)*new_r00*x1777)))),IkReal(((((-1.0)*new_r10*x1777))+(((-1.0)*new_r00*x1776)))),IKFAST_ATAN2_MAGTHRESH); |
| if(!x1779.valid){ |
| continue; |
| } |
| j5array[0]=((-1.5707963267949)+(((1.5707963267949)*(x1778.value)))+(x1779.value)); |
| sj5array[0]=IKsin(j5array[0]); |
| cj5array[0]=IKcos(j5array[0]); |
| if( j5array[0] > IKPI ) |
| { |
| j5array[0]-=IK2PI; |
| } |
| else if( j5array[0] < -IKPI ) |
| { j5array[0]+=IK2PI; |
| } |
| j5valid[0] = true; |
| for(int ij5 = 0; ij5 < 1; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < 1; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| { |
| IkReal evalcond[7]; |
| IkReal x1780=IKcos(j5); |
| IkReal x1781=IKsin(j5); |
| IkReal x1782=((1.0)*gconst22); |
| IkReal x1783=((1.0000000008)*gconst22); |
| IkReal x1784=((1.0000000008)*x1781); |
| IkReal x1785=(gconst21*x1780); |
| IkReal x1786=(new_r00*x1780); |
| evalcond[0]=(gconst21+((new_r10*x1780))+((new_r00*x1781))); |
| evalcond[1]=(((gconst21*x1781))+new_r00+((x1780*x1783))); |
| evalcond[2]=(x1785+new_r10+(((-1.0)*x1781*x1783))); |
| evalcond[3]=((((1.0000000008)*x1785))+(((-1.0)*x1781*x1782))); |
| evalcond[4]=((((-1.0)*gconst21*x1784))+(((-1.0)*x1780*x1782))); |
| evalcond[5]=(x1783+x1786+(((-1.0)*new_r10*x1781))); |
| evalcond[6]=((((-1.0)*x1782))+((new_r10*x1784))+(((-1.0000000008)*x1786))); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[2]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[3]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[4]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[5]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[6]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| |
| } |
| |
| } |
| |
| } |
| } while(0); |
| if( bgotonextstatement ) |
| { |
| bool bgotonextstatement = true; |
| do |
| { |
| evalcond[0]=((IKabs(new_r11))+(IKabs(new_r10))); |
| if( IKabs(evalcond[0]) < 0.0000050000000000 ) |
| { |
| bgotonextstatement=false; |
| { |
| IkReal j5array[1], cj5array[1], sj5array[1]; |
| bool j5valid[1]={false}; |
| _nj5 = 1; |
| CheckValue<IkReal> x1788=IKPowWithIntegerCheck(gconst22,-1); |
| if(!x1788.valid){ |
| continue; |
| } |
| IkReal x1787=x1788.value; |
| if( IKabs((new_r01*x1787)) < IKFAST_ATAN2_MAGTHRESH && IKabs(((-0.9999999992)*new_r00*x1787)) < IKFAST_ATAN2_MAGTHRESH && IKabs(IKsqr((new_r01*x1787))+IKsqr(((-0.9999999992)*new_r00*x1787))-1) <= IKFAST_SINCOS_THRESH ) |
| continue; |
| j5array[0]=IKatan2((new_r01*x1787), ((-0.9999999992)*new_r00*x1787)); |
| sj5array[0]=IKsin(j5array[0]); |
| cj5array[0]=IKcos(j5array[0]); |
| if( j5array[0] > IKPI ) |
| { |
| j5array[0]-=IK2PI; |
| } |
| else if( j5array[0] < -IKPI ) |
| { j5array[0]+=IK2PI; |
| } |
| j5valid[0] = true; |
| for(int ij5 = 0; ij5 < 1; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < 1; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| { |
| IkReal evalcond[10]; |
| IkReal x1789=IKcos(j5); |
| IkReal x1790=IKsin(j5); |
| IkReal x1791=((1.0)*gconst22); |
| IkReal x1792=(gconst22*x1790); |
| IkReal x1793=(gconst22*x1789); |
| IkReal x1794=(new_r00*x1789); |
| IkReal x1795=(new_r01*x1789); |
| evalcond[0]=(new_r00*x1790); |
| evalcond[1]=x1795; |
| evalcond[2]=((-1.0)*x1793); |
| evalcond[3]=((((-1.0)*x1790*x1791))+new_r01); |
| evalcond[4]=((((-1.0)*x1791))+((new_r01*x1790))); |
| evalcond[5]=((-1.0000000008)*x1792); |
| evalcond[6]=((-1.0000000008)*x1795); |
| evalcond[7]=((((1.0000000008)*x1793))+new_r00); |
| evalcond[8]=(x1794+(((1.0000000008)*gconst22))); |
| evalcond[9]=((((-1.0)*x1791))+(((-1.0000000008)*x1794))); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[2]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[3]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[4]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[5]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[6]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[7]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[8]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[9]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| |
| } |
| } while(0); |
| if( bgotonextstatement ) |
| { |
| bool bgotonextstatement = true; |
| do |
| { |
| if( 1 ) |
| { |
| bgotonextstatement=false; |
| continue; // branch miss [j5] |
| |
| } |
| } while(0); |
| if( bgotonextstatement ) |
| { |
| } |
| } |
| } |
| } |
| } |
| |
| } else |
| { |
| { |
| IkReal j5array[1], cj5array[1], sj5array[1]; |
| bool j5valid[1]={false}; |
| _nj5 = 1; |
| CheckValue<IkReal> x1802=IKPowWithIntegerCheck(new_r00,-1); |
| if(!x1802.valid){ |
| continue; |
| } |
| IkReal x1796=x1802.value; |
| IkReal x1797=gconst21*gconst21; |
| IkReal x1798=((25000.0)*new_r10); |
| IkReal x1799=((25000.0)*x1797); |
| CheckValue<IkReal> x1803=IKPowWithIntegerCheck(((((-1.0)*gconst21*x1798))+(((25000.00002)*gconst22*new_r00))),-1); |
| if(!x1803.valid){ |
| continue; |
| } |
| IkReal x1800=x1803.value; |
| CheckValue<IkReal> x1804=IKPowWithIntegerCheck(((((-25000.0)*gconst21*new_r10))+(((25000.00002)*gconst22*new_r00))),-1); |
| if(!x1804.valid){ |
| continue; |
| } |
| IkReal x1801=(x1798*(x1804.value)); |
| CheckValue<IkReal> x1805=IKPowWithIntegerCheck(x1796,-2); |
| if(!x1805.valid){ |
| continue; |
| } |
| if( IKabs((((new_r00*x1801))+(((-1.0)*gconst21*x1796))+(((-1.0)*x1796*x1797*x1801)))) < IKFAST_ATAN2_MAGTHRESH && IKabs((x1800*((x1799+(((-25000.0)*(x1805.value))))))) < IKFAST_ATAN2_MAGTHRESH && IKabs(IKsqr((((new_r00*x1801))+(((-1.0)*gconst21*x1796))+(((-1.0)*x1796*x1797*x1801))))+IKsqr((x1800*((x1799+(((-25000.0)*(x1805.value)))))))-1) <= IKFAST_SINCOS_THRESH ) |
| continue; |
| j5array[0]=IKatan2((((new_r00*x1801))+(((-1.0)*gconst21*x1796))+(((-1.0)*x1796*x1797*x1801))), (x1800*((x1799+(((-25000.0)*(x1805.value))))))); |
| sj5array[0]=IKsin(j5array[0]); |
| cj5array[0]=IKcos(j5array[0]); |
| if( j5array[0] > IKPI ) |
| { |
| j5array[0]-=IK2PI; |
| } |
| else if( j5array[0] < -IKPI ) |
| { j5array[0]+=IK2PI; |
| } |
| j5valid[0] = true; |
| for(int ij5 = 0; ij5 < 1; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < 1; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| { |
| IkReal evalcond[10]; |
| IkReal x1806=IKcos(j5); |
| IkReal x1807=IKsin(j5); |
| IkReal x1808=((1.0)*gconst22); |
| IkReal x1809=((1.0000000008)*gconst21); |
| IkReal x1810=((1.0000000008)*gconst22); |
| IkReal x1811=(gconst22*x1807); |
| IkReal x1812=(new_r11*x1807); |
| IkReal x1813=(gconst21*x1807); |
| IkReal x1814=(new_r01*x1806); |
| IkReal x1815=(new_r00*x1806); |
| IkReal x1816=(new_r10*x1807); |
| evalcond[0]=(((new_r00*x1807))+gconst21+((new_r10*x1806))); |
| evalcond[1]=((((-1.0)*x1808))+((new_r11*x1806))+((new_r01*x1807))); |
| evalcond[2]=(x1813+new_r00+((x1806*x1810))); |
| evalcond[3]=((((-1.0)*x1807*x1810))+((gconst21*x1806))+new_r10); |
| evalcond[4]=(((x1806*x1809))+new_r01+(((-1.0)*x1807*x1808))); |
| evalcond[5]=((((-1.0)*x1806*x1808))+new_r11+(((-1.0)*x1807*x1809))); |
| evalcond[6]=(x1815+x1810+(((-1.0)*x1816))); |
| evalcond[7]=(x1814+x1809+(((-1.0)*x1812))); |
| evalcond[8]=((((-1.0)*x1808))+(((1.0000000008)*x1816))+(((-1.0000000008)*x1815))); |
| evalcond[9]=((((-1.0)*gconst21))+(((1.0000000008)*x1812))+(((-1.0000000008)*x1814))); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[2]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[3]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[4]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[5]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[6]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[7]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[8]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[9]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| |
| } |
| |
| } |
| |
| } else |
| { |
| { |
| IkReal j5array[1], cj5array[1], sj5array[1]; |
| bool j5valid[1]={false}; |
| _nj5 = 1; |
| CheckValue<IkReal> x1822=IKPowWithIntegerCheck(new_r00,-1); |
| if(!x1822.valid){ |
| continue; |
| } |
| IkReal x1817=x1822.value; |
| IkReal x1818=(gconst21*x1817); |
| IkReal x1819=((25000.0)*new_r01); |
| IkReal x1820=((25000.0)*gconst22*new_r10); |
| CheckValue<IkReal> x1823=IKPowWithIntegerCheck((x1820+(((25000.00002)*gconst21*new_r00))),-1); |
| if(!x1823.valid){ |
| continue; |
| } |
| IkReal x1821=x1823.value; |
| if( IKabs((((new_r10*x1819*x1821))+((x1818*x1820*x1821))+(((-1.0)*x1818)))) < IKFAST_ATAN2_MAGTHRESH && IKabs((x1821*(((((-25000.0)*gconst21*gconst22))+(((-1.0)*new_r00*x1819)))))) < IKFAST_ATAN2_MAGTHRESH && IKabs(IKsqr((((new_r10*x1819*x1821))+((x1818*x1820*x1821))+(((-1.0)*x1818))))+IKsqr((x1821*(((((-25000.0)*gconst21*gconst22))+(((-1.0)*new_r00*x1819))))))-1) <= IKFAST_SINCOS_THRESH ) |
| continue; |
| j5array[0]=IKatan2((((new_r10*x1819*x1821))+((x1818*x1820*x1821))+(((-1.0)*x1818))), (x1821*(((((-25000.0)*gconst21*gconst22))+(((-1.0)*new_r00*x1819)))))); |
| sj5array[0]=IKsin(j5array[0]); |
| cj5array[0]=IKcos(j5array[0]); |
| if( j5array[0] > IKPI ) |
| { |
| j5array[0]-=IK2PI; |
| } |
| else if( j5array[0] < -IKPI ) |
| { j5array[0]+=IK2PI; |
| } |
| j5valid[0] = true; |
| for(int ij5 = 0; ij5 < 1; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < 1; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| { |
| IkReal evalcond[10]; |
| IkReal x1824=IKcos(j5); |
| IkReal x1825=IKsin(j5); |
| IkReal x1826=((1.0)*gconst22); |
| IkReal x1827=((1.0000000008)*gconst21); |
| IkReal x1828=((1.0000000008)*gconst22); |
| IkReal x1829=(gconst22*x1825); |
| IkReal x1830=(new_r11*x1825); |
| IkReal x1831=(gconst21*x1825); |
| IkReal x1832=(new_r01*x1824); |
| IkReal x1833=(new_r00*x1824); |
| IkReal x1834=(new_r10*x1825); |
| evalcond[0]=(((new_r10*x1824))+((new_r00*x1825))+gconst21); |
| evalcond[1]=((((-1.0)*x1826))+((new_r01*x1825))+((new_r11*x1824))); |
| evalcond[2]=(((x1824*x1828))+x1831+new_r00); |
| evalcond[3]=((((-1.0)*x1825*x1828))+((gconst21*x1824))+new_r10); |
| evalcond[4]=(((x1824*x1827))+(((-1.0)*x1825*x1826))+new_r01); |
| evalcond[5]=((((-1.0)*x1825*x1827))+(((-1.0)*x1824*x1826))+new_r11); |
| evalcond[6]=((((-1.0)*x1834))+x1828+x1833); |
| evalcond[7]=((((-1.0)*x1830))+x1827+x1832); |
| evalcond[8]=((((-1.0)*x1826))+(((1.0000000008)*x1834))+(((-1.0000000008)*x1833))); |
| evalcond[9]=((((1.0000000008)*x1830))+(((-1.0000000008)*x1832))+(((-1.0)*gconst21))); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[2]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[3]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[4]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[5]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[6]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[7]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[8]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[9]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| |
| } |
| |
| } |
| |
| } else |
| { |
| { |
| IkReal j5array[1], cj5array[1], sj5array[1]; |
| bool j5valid[1]={false}; |
| _nj5 = 1; |
| IkReal x1835=((1.0)*new_r00); |
| CheckValue<IkReal> x1836=IKPowWithIntegerCheck(IKsign(((((-1.0)*new_r11*x1835))+((new_r01*new_r10)))),-1); |
| if(!x1836.valid){ |
| continue; |
| } |
| CheckValue<IkReal> x1837 = IKatan2WithCheck(IkReal((((gconst21*new_r11))+((gconst22*new_r10)))),IkReal(((((-1.0)*gconst21*new_r01))+(((-1.0)*gconst22*x1835)))),IKFAST_ATAN2_MAGTHRESH); |
| if(!x1837.valid){ |
| continue; |
| } |
| j5array[0]=((-1.5707963267949)+(((1.5707963267949)*(x1836.value)))+(x1837.value)); |
| sj5array[0]=IKsin(j5array[0]); |
| cj5array[0]=IKcos(j5array[0]); |
| if( j5array[0] > IKPI ) |
| { |
| j5array[0]-=IK2PI; |
| } |
| else if( j5array[0] < -IKPI ) |
| { j5array[0]+=IK2PI; |
| } |
| j5valid[0] = true; |
| for(int ij5 = 0; ij5 < 1; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < 1; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| { |
| IkReal evalcond[10]; |
| IkReal x1838=IKcos(j5); |
| IkReal x1839=IKsin(j5); |
| IkReal x1840=((1.0)*gconst22); |
| IkReal x1841=((1.0000000008)*gconst21); |
| IkReal x1842=((1.0000000008)*gconst22); |
| IkReal x1843=(gconst22*x1839); |
| IkReal x1844=(new_r11*x1839); |
| IkReal x1845=(gconst21*x1839); |
| IkReal x1846=(new_r01*x1838); |
| IkReal x1847=(new_r00*x1838); |
| IkReal x1848=(new_r10*x1839); |
| evalcond[0]=(((new_r00*x1839))+gconst21+((new_r10*x1838))); |
| evalcond[1]=(((new_r01*x1839))+(((-1.0)*x1840))+((new_r11*x1838))); |
| evalcond[2]=(((x1838*x1842))+x1845+new_r00); |
| evalcond[3]=((((-1.0)*x1839*x1842))+new_r10+((gconst21*x1838))); |
| evalcond[4]=(((x1838*x1841))+(((-1.0)*x1839*x1840))+new_r01); |
| evalcond[5]=((((-1.0)*x1839*x1841))+new_r11+(((-1.0)*x1838*x1840))); |
| evalcond[6]=(x1842+x1847+(((-1.0)*x1848))); |
| evalcond[7]=(x1841+x1846+(((-1.0)*x1844))); |
| evalcond[8]=((((-1.0000000008)*x1847))+(((-1.0)*x1840))+(((1.0000000008)*x1848))); |
| evalcond[9]=((((-1.0000000008)*x1846))+(((1.0000000008)*x1844))+(((-1.0)*gconst21))); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[2]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[3]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[4]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[5]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[6]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[7]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[8]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[9]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| |
| } |
| |
| } |
| |
| } |
| } while(0); |
| if( bgotonextstatement ) |
| { |
| bool bgotonextstatement = true; |
| do |
| { |
| IkReal x1850 = ((((1.0000000016)*(new_r10*new_r10)))+(new_r00*new_r00)); |
| if(IKabs(x1850)==0){ |
| continue; |
| } |
| IkReal x1849=pow(x1850,-0.5); |
| CheckValue<IkReal> x1851 = IKatan2WithCheck(IkReal(((1.0000000008)*new_r10)),IkReal(new_r00),IKFAST_ATAN2_MAGTHRESH); |
| if(!x1851.valid){ |
| continue; |
| } |
| IkReal gconst23=((3.14159265358979)+(((-1.0)*(x1851.value)))); |
| IkReal gconst24=((1.0000000008)*new_r10*x1849); |
| IkReal gconst25=((-1.0)*new_r00*x1849); |
| CheckValue<IkReal> x1852 = IKatan2WithCheck(IkReal(((1.0000000008)*new_r10)),IkReal(new_r00),IKFAST_ATAN2_MAGTHRESH); |
| if(!x1852.valid){ |
| continue; |
| } |
| evalcond[0]=((-3.14159265358979)+(IKfmod(((3.14159265358979)+(IKabs(((-3.14159265358979)+(x1852.value)+j3)))), 6.28318530717959))); |
| if( IKabs(evalcond[0]) < 0.0000050000000000 ) |
| { |
| bgotonextstatement=false; |
| { |
| IkReal j5eval[2]; |
| IkReal x1853=x1849; |
| sj4=-4.0e-5; |
| cj4=-1.0; |
| j4=3.14163265; |
| sj3=gconst24; |
| cj3=gconst25; |
| CheckValue<IkReal> x1854 = IKatan2WithCheck(IkReal(new_r10),IkReal(new_r00),IKFAST_ATAN2_MAGTHRESH); |
| if(!x1854.valid){ |
| continue; |
| } |
| j3=((3.14159265)+(((-1.0)*(x1854.value)))); |
| CheckValue<IkReal> x1855 = IKatan2WithCheck(IkReal(((1.0000000008)*new_r10)),IkReal(new_r00),IKFAST_ATAN2_MAGTHRESH); |
| if(!x1855.valid){ |
| continue; |
| } |
| IkReal gconst23=((3.14159265358979)+(((-1.0)*(x1855.value)))); |
| IkReal gconst24=((1.0000000008)*new_r10*x1853); |
| IkReal gconst25=((-1.0)*new_r00*x1853); |
| IkReal x1856=(((new_r01*new_r10))+(((-1.0)*new_r00*new_r11))); |
| j5eval[0]=x1856; |
| j5eval[1]=IKsign(x1856); |
| if( IKabs(j5eval[0]) < 0.0000010000000000 || IKabs(j5eval[1]) < 0.0000010000000000 ) |
| { |
| { |
| IkReal j5eval[2]; |
| IkReal x1857=x1849; |
| sj4=-4.0e-5; |
| cj4=-1.0; |
| j4=3.14163265; |
| sj3=gconst24; |
| cj3=gconst25; |
| CheckValue<IkReal> x1858 = IKatan2WithCheck(IkReal(new_r10),IkReal(new_r00),IKFAST_ATAN2_MAGTHRESH); |
| if(!x1858.valid){ |
| continue; |
| } |
| j3=((3.14159265)+(((-1.0)*(x1858.value)))); |
| CheckValue<IkReal> x1859 = IKatan2WithCheck(IkReal(((1.0000000008)*new_r10)),IkReal(new_r00),IKFAST_ATAN2_MAGTHRESH); |
| if(!x1859.valid){ |
| continue; |
| } |
| IkReal gconst23=((3.14159265358979)+(((-1.0)*(x1859.value)))); |
| IkReal gconst24=((1.0000000008)*new_r10*x1857); |
| IkReal gconst25=((-1.0)*new_r00*x1857); |
| j5eval[0]=new_r00; |
| IkReal x1860 = ((((1.0000000016)*(new_r10*new_r10)))+(new_r00*new_r00)); |
| if(IKabs(x1860)==0){ |
| continue; |
| } |
| j5eval[1]=((1.60000013238459e-9)*new_r00*new_r10*(pow(x1860,-0.5))); |
| if( IKabs(j5eval[0]) < 0.0000010000000000 || IKabs(j5eval[1]) < 0.0000010000000000 ) |
| { |
| { |
| IkReal j5eval[1]; |
| IkReal x1861=x1849; |
| sj4=-4.0e-5; |
| cj4=-1.0; |
| j4=3.14163265; |
| sj3=gconst24; |
| cj3=gconst25; |
| CheckValue<IkReal> x1862 = IKatan2WithCheck(IkReal(new_r10),IkReal(new_r00),IKFAST_ATAN2_MAGTHRESH); |
| if(!x1862.valid){ |
| continue; |
| } |
| j3=((3.14159265)+(((-1.0)*(x1862.value)))); |
| CheckValue<IkReal> x1863 = IKatan2WithCheck(IkReal(((1.0000000008)*new_r10)),IkReal(new_r00),IKFAST_ATAN2_MAGTHRESH); |
| if(!x1863.valid){ |
| continue; |
| } |
| IkReal gconst23=((3.14159265358979)+(((-1.0)*(x1863.value)))); |
| IkReal gconst24=((1.0000000008)*new_r10*x1861); |
| IkReal gconst25=((-1.0)*new_r00*x1861); |
| j5eval[0]=new_r00; |
| if( IKabs(j5eval[0]) < 0.0000010000000000 ) |
| { |
| { |
| IkReal evalcond[1]; |
| bool bgotonextstatement = true; |
| do |
| { |
| evalcond[0]=IKabs(new_r00); |
| if( IKabs(evalcond[0]) < 0.0000050000000000 ) |
| { |
| bgotonextstatement=false; |
| { |
| IkReal j5eval[1]; |
| sj4=-4.0e-5; |
| cj4=-1.0; |
| j4=3.14163265; |
| sj3=gconst24; |
| cj3=gconst25; |
| CheckValue<IkReal> x1864 = IKatan2WithCheck(IkReal(new_r10),IkReal(0),IKFAST_ATAN2_MAGTHRESH); |
| if(!x1864.valid){ |
| continue; |
| } |
| j3=((3.14159265)+(((-1.0)*(x1864.value)))); |
| new_r00=0; |
| CheckValue<IkReal> x1865 = IKatan2WithCheck(IkReal(((1.0000000008)*new_r10)),IkReal(0),IKFAST_ATAN2_MAGTHRESH); |
| if(!x1865.valid){ |
| continue; |
| } |
| IkReal gconst23=((3.14159265358979)+(((-1.0)*(x1865.value)))); |
| IkReal x1866 = new_r10*new_r10; |
| if(IKabs(x1866)==0){ |
| continue; |
| } |
| IkReal gconst24=((1.0)*new_r10*(pow(x1866,-0.5))); |
| IkReal gconst25=0; |
| j5eval[0]=new_r10; |
| if( IKabs(j5eval[0]) < 0.0000010000000000 ) |
| { |
| { |
| IkReal j5array[1], cj5array[1], sj5array[1]; |
| bool j5valid[1]={false}; |
| _nj5 = 1; |
| CheckValue<IkReal> x1868=IKPowWithIntegerCheck(gconst24,-1); |
| if(!x1868.valid){ |
| continue; |
| } |
| IkReal x1867=x1868.value; |
| if( IKabs(((0.9999999992)*new_r11*x1867)) < IKFAST_ATAN2_MAGTHRESH && IKabs(((-1.0)*new_r10*x1867)) < IKFAST_ATAN2_MAGTHRESH && IKabs(IKsqr(((0.9999999992)*new_r11*x1867))+IKsqr(((-1.0)*new_r10*x1867))-1) <= IKFAST_SINCOS_THRESH ) |
| continue; |
| j5array[0]=IKatan2(((0.9999999992)*new_r11*x1867), ((-1.0)*new_r10*x1867)); |
| sj5array[0]=IKsin(j5array[0]); |
| cj5array[0]=IKcos(j5array[0]); |
| if( j5array[0] > IKPI ) |
| { |
| j5array[0]-=IK2PI; |
| } |
| else if( j5array[0] < -IKPI ) |
| { j5array[0]+=IK2PI; |
| } |
| j5valid[0] = true; |
| for(int ij5 = 0; ij5 < 1; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < 1; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| { |
| IkReal evalcond[10]; |
| IkReal x1869=IKsin(j5); |
| IkReal x1870=IKcos(j5); |
| IkReal x1871=((1.0000000008)*x1869); |
| IkReal x1872=((1.0000000008)*x1870); |
| evalcond[0]=(gconst24*x1869); |
| evalcond[1]=((-1.0)*new_r10*x1869); |
| evalcond[2]=(((new_r10*x1870))+gconst24); |
| evalcond[3]=(((gconst24*x1870))+new_r10); |
| evalcond[4]=(new_r10*x1871); |
| evalcond[5]=(((new_r01*x1869))+((new_r11*x1870))); |
| evalcond[6]=(((gconst24*x1872))+new_r01); |
| evalcond[7]=((((-1.0)*gconst24*x1871))+new_r11); |
| evalcond[8]=((((1.0000000008)*gconst24))+((new_r01*x1870))+(((-1.0)*new_r11*x1869))); |
| evalcond[9]=((((-1.0)*gconst24))+((new_r11*x1871))+(((-1.0)*new_r01*x1872))); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[2]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[3]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[4]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[5]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[6]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[7]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[8]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[9]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| |
| } else |
| { |
| { |
| IkReal j5array[1], cj5array[1], sj5array[1]; |
| bool j5valid[1]={false}; |
| _nj5 = 1; |
| CheckValue<IkReal> x1873=IKPowWithIntegerCheck(gconst24,-1); |
| if(!x1873.valid){ |
| continue; |
| } |
| CheckValue<IkReal> x1874=IKPowWithIntegerCheck(new_r10,-1); |
| if(!x1874.valid){ |
| continue; |
| } |
| if( IKabs(((0.9999999992)*new_r11*(x1873.value))) < IKFAST_ATAN2_MAGTHRESH && IKabs(((-1.0)*gconst24*(x1874.value))) < IKFAST_ATAN2_MAGTHRESH && IKabs(IKsqr(((0.9999999992)*new_r11*(x1873.value)))+IKsqr(((-1.0)*gconst24*(x1874.value)))-1) <= IKFAST_SINCOS_THRESH ) |
| continue; |
| j5array[0]=IKatan2(((0.9999999992)*new_r11*(x1873.value)), ((-1.0)*gconst24*(x1874.value))); |
| sj5array[0]=IKsin(j5array[0]); |
| cj5array[0]=IKcos(j5array[0]); |
| if( j5array[0] > IKPI ) |
| { |
| j5array[0]-=IK2PI; |
| } |
| else if( j5array[0] < -IKPI ) |
| { j5array[0]+=IK2PI; |
| } |
| j5valid[0] = true; |
| for(int ij5 = 0; ij5 < 1; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < 1; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| { |
| IkReal evalcond[10]; |
| IkReal x1875=IKsin(j5); |
| IkReal x1876=IKcos(j5); |
| IkReal x1877=((1.0000000008)*x1875); |
| IkReal x1878=((1.0000000008)*x1876); |
| evalcond[0]=(gconst24*x1875); |
| evalcond[1]=((-1.0)*new_r10*x1875); |
| evalcond[2]=(((new_r10*x1876))+gconst24); |
| evalcond[3]=(((gconst24*x1876))+new_r10); |
| evalcond[4]=(new_r10*x1877); |
| evalcond[5]=(((new_r01*x1875))+((new_r11*x1876))); |
| evalcond[6]=(((gconst24*x1878))+new_r01); |
| evalcond[7]=((((-1.0)*gconst24*x1877))+new_r11); |
| evalcond[8]=((((1.0000000008)*gconst24))+(((-1.0)*new_r11*x1875))+((new_r01*x1876))); |
| evalcond[9]=((((-1.0)*gconst24))+((new_r11*x1877))+(((-1.0)*new_r01*x1878))); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[2]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[3]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[4]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[5]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[6]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[7]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[8]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[9]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| |
| } |
| |
| } |
| |
| } |
| } while(0); |
| if( bgotonextstatement ) |
| { |
| bool bgotonextstatement = true; |
| do |
| { |
| evalcond[0]=((IKabs(new_r11))+(IKabs(new_r01))); |
| if( IKabs(evalcond[0]) < 0.0000050000000000 ) |
| { |
| bgotonextstatement=false; |
| { |
| IkReal j5eval[3]; |
| IkReal x1880 = ((1.0)+(((1.6e-9)*(new_r10*new_r10)))); |
| if(IKabs(x1880)==0){ |
| continue; |
| } |
| IkReal x1879=pow(x1880,-0.5); |
| sj4=-4.0e-5; |
| cj4=-1.0; |
| j4=3.14163265; |
| sj3=gconst24; |
| cj3=gconst25; |
| CheckValue<IkReal> x1881 = IKatan2WithCheck(IkReal(new_r10),IkReal(new_r00),IKFAST_ATAN2_MAGTHRESH); |
| if(!x1881.valid){ |
| continue; |
| } |
| j3=((3.14159265)+(((-1.0)*(x1881.value)))); |
| new_r11=0; |
| new_r01=0; |
| new_r22=0; |
| new_r20=0; |
| CheckValue<IkReal> x1882 = IKatan2WithCheck(IkReal(((1.0000000008)*new_r10)),IkReal(new_r00),IKFAST_ATAN2_MAGTHRESH); |
| if(!x1882.valid){ |
| continue; |
| } |
| IkReal gconst23=((3.14159265358979)+(((-1.0)*(x1882.value)))); |
| IkReal gconst24=((1.0000000008)*new_r10*x1879); |
| IkReal gconst25=((-1.0)*new_r00*x1879); |
| IkReal x1883=new_r10*new_r10; |
| CheckValue<IkReal> x1887=IKPowWithIntegerCheck(((625000000.0)+(((1.0)*x1883))),-1); |
| if(!x1887.valid){ |
| continue; |
| } |
| IkReal x1884=x1887.value; |
| if((((625000000.0)+x1883)) < -0.00001) |
| continue; |
| IkReal x1885=IKsqrt(((625000000.0)+x1883)); |
| IkReal x1886=(x1884*x1885); |
| j5eval[0]=1.0; |
| j5eval[1]=1.0; |
| IkReal x1888 = ((1.0)+(((1.6e-9)*x1883))); |
| if(IKabs(x1888)==0){ |
| continue; |
| } |
| j5eval[2]=((IKabs(((((-1250000001.0)*x1883*x1886))+(((625000000.5)*x1886)))))+(IKabs(((50000.00004)*new_r00*new_r10*(pow(x1888,-0.5)))))); |
| if( IKabs(j5eval[0]) < 0.0000010000000000 || IKabs(j5eval[1]) < 0.0000010000000000 || IKabs(j5eval[2]) < 0.0000010000000000 ) |
| { |
| { |
| IkReal j5eval[1]; |
| IkReal x1890 = ((1.0)+(((1.6e-9)*(new_r10*new_r10)))); |
| if(IKabs(x1890)==0){ |
| continue; |
| } |
| IkReal x1889=pow(x1890,-0.5); |
| sj4=-4.0e-5; |
| cj4=-1.0; |
| j4=3.14163265; |
| sj3=gconst24; |
| cj3=gconst25; |
| CheckValue<IkReal> x1891 = IKatan2WithCheck(IkReal(new_r10),IkReal(new_r00),IKFAST_ATAN2_MAGTHRESH); |
| if(!x1891.valid){ |
| continue; |
| } |
| j3=((3.14159265)+(((-1.0)*(x1891.value)))); |
| new_r11=0; |
| new_r01=0; |
| new_r22=0; |
| new_r20=0; |
| CheckValue<IkReal> x1892 = IKatan2WithCheck(IkReal(((1.0000000008)*new_r10)),IkReal(new_r00),IKFAST_ATAN2_MAGTHRESH); |
| if(!x1892.valid){ |
| continue; |
| } |
| IkReal gconst23=((3.14159265358979)+(((-1.0)*(x1892.value)))); |
| IkReal gconst24=((1.0000000008)*new_r10*x1889); |
| IkReal gconst25=((-1.0)*new_r00*x1889); |
| IkReal x1893=new_r10*new_r10; |
| CheckValue<IkReal> x1895=IKPowWithIntegerCheck(((1.0)+(((1.6e-9)*x1893))),-1); |
| if(!x1895.valid){ |
| continue; |
| } |
| IkReal x1894=x1895.value; |
| IkReal x1896=((1.0)+(((-1.0)*x1893))); |
| j5eval[0]=IKsign(((((-625000000.0)*x1894*(x1896*x1896)))+(((625000002.0)*x1894*(x1893*x1893))))); |
| if( IKabs(j5eval[0]) < 0.0000010000000000 ) |
| { |
| { |
| IkReal j5eval[2]; |
| IkReal x1898 = ((1.0)+(((1.6e-9)*(new_r10*new_r10)))); |
| if(IKabs(x1898)==0){ |
| continue; |
| } |
| IkReal x1897=pow(x1898,-0.5); |
| sj4=-4.0e-5; |
| cj4=-1.0; |
| j4=3.14163265; |
| sj3=gconst24; |
| cj3=gconst25; |
| CheckValue<IkReal> x1899 = IKatan2WithCheck(IkReal(new_r10),IkReal(new_r00),IKFAST_ATAN2_MAGTHRESH); |
| if(!x1899.valid){ |
| continue; |
| } |
| j3=((3.14159265)+(((-1.0)*(x1899.value)))); |
| new_r11=0; |
| new_r01=0; |
| new_r22=0; |
| new_r20=0; |
| CheckValue<IkReal> x1900 = IKatan2WithCheck(IkReal(((1.0000000008)*new_r10)),IkReal(new_r00),IKFAST_ATAN2_MAGTHRESH); |
| if(!x1900.valid){ |
| continue; |
| } |
| IkReal gconst23=((3.14159265358979)+(((-1.0)*(x1900.value)))); |
| IkReal gconst24=((1.0000000008)*new_r10*x1897); |
| IkReal gconst25=((-1.0)*new_r00*x1897); |
| IkReal x1901=new_r10*new_r10; |
| IkReal x1902=((1.0)+(((1.6e-9)*x1901))); |
| CheckValue<IkReal> x1903=IKPowWithIntegerCheck(x1902,-1); |
| if(!x1903.valid){ |
| continue; |
| } |
| j5eval[0]=((-3.20000004272458e-9)*x1901*(x1903.value)*(((1.0)+(((-1.0)*x1901))))); |
| IkReal x1904 = x1902; |
| if(IKabs(x1904)==0){ |
| continue; |
| } |
| j5eval[1]=((1.60000013238459e-9)*new_r00*new_r10*(pow(x1904,-0.5))); |
| if( IKabs(j5eval[0]) < 0.0000010000000000 || IKabs(j5eval[1]) < 0.0000010000000000 ) |
| { |
| continue; // 3 cases reached |
| |
| } else |
| { |
| { |
| IkReal j5array[1], cj5array[1], sj5array[1]; |
| bool j5valid[1]={false}; |
| _nj5 = 1; |
| IkReal x1905=gconst24*gconst24; |
| IkReal x1906=(gconst25*new_r10); |
| CheckValue<IkReal> x1907=IKPowWithIntegerCheck(((((625000000.0)*(x1906*x1906)))+(((-625000001.0)*x1905*(new_r00*new_r00)))),-1); |
| if(!x1907.valid){ |
| continue; |
| } |
| CheckValue<IkReal> x1908=IKPowWithIntegerCheck(((((25000.0)*x1906))+(((25000.00002)*gconst24*new_r00))),-1); |
| if(!x1908.valid){ |
| continue; |
| } |
| if( IKabs(((x1907.value)*(((((-625000000.5)*x1905*x1906))+(((625000001.0)*new_r00*(gconst24*gconst24*gconst24))))))) < IKFAST_ATAN2_MAGTHRESH && IKabs(((-25000.0)*gconst24*gconst25*(x1908.value))) < IKFAST_ATAN2_MAGTHRESH && IKabs(IKsqr(((x1907.value)*(((((-625000000.5)*x1905*x1906))+(((625000001.0)*new_r00*(gconst24*gconst24*gconst24)))))))+IKsqr(((-25000.0)*gconst24*gconst25*(x1908.value)))-1) <= IKFAST_SINCOS_THRESH ) |
| continue; |
| j5array[0]=IKatan2(((x1907.value)*(((((-625000000.5)*x1905*x1906))+(((625000001.0)*new_r00*(gconst24*gconst24*gconst24)))))), ((-25000.0)*gconst24*gconst25*(x1908.value))); |
| sj5array[0]=IKsin(j5array[0]); |
| cj5array[0]=IKcos(j5array[0]); |
| if( j5array[0] > IKPI ) |
| { |
| j5array[0]-=IK2PI; |
| } |
| else if( j5array[0] < -IKPI ) |
| { j5array[0]+=IK2PI; |
| } |
| j5valid[0] = true; |
| for(int ij5 = 0; ij5 < 1; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < 1; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| { |
| IkReal evalcond[7]; |
| IkReal x1909=IKsin(j5); |
| IkReal x1910=IKcos(j5); |
| IkReal x1911=((1.0)*gconst25); |
| IkReal x1912=((1.0000000008)*x1909); |
| IkReal x1913=((1.0000000008)*x1910); |
| evalcond[0]=(gconst24+((new_r10*x1910))+((new_r00*x1909))); |
| evalcond[1]=(((gconst24*x1909))+((gconst25*x1913))+new_r00); |
| evalcond[2]=((((-1.0)*gconst25*x1912))+((gconst24*x1910))+new_r10); |
| evalcond[3]=(((gconst24*x1913))+(((-1.0)*x1909*x1911))); |
| evalcond[4]=((((-1.0)*x1910*x1911))+(((-1.0)*gconst24*x1912))); |
| evalcond[5]=((((1.0000000008)*gconst25))+(((-1.0)*new_r10*x1909))+((new_r00*x1910))); |
| evalcond[6]=((((-1.0)*new_r00*x1913))+((new_r10*x1912))+(((-1.0)*x1911))); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[2]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[3]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[4]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[5]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[6]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| |
| } |
| |
| } |
| |
| } else |
| { |
| { |
| IkReal j5array[1], cj5array[1], sj5array[1]; |
| bool j5valid[1]={false}; |
| _nj5 = 1; |
| IkReal x1914=gconst25*gconst25; |
| IkReal x1915=gconst24*gconst24; |
| IkReal x1916=((625000000.0)*x1914); |
| IkReal x1917=((625000000.5)*gconst25*x1915); |
| CheckValue<IkReal> x1918 = IKatan2WithCheck(IkReal((((new_r10*x1917))+((gconst24*new_r00*x1916)))),IkReal(((((-625000001.0)*new_r10*(gconst24*gconst24*gconst24)))+(((-1.0)*new_r00*x1917)))),IKFAST_ATAN2_MAGTHRESH); |
| if(!x1918.valid){ |
| continue; |
| } |
| CheckValue<IkReal> x1919=IKPowWithIntegerCheck(IKsign(((((-1.0)*x1916*(new_r00*new_r00)))+(((625000001.0)*x1915*(new_r10*new_r10))))),-1); |
| if(!x1919.valid){ |
| continue; |
| } |
| j5array[0]=((-1.5707963267949)+(x1918.value)+(((1.5707963267949)*(x1919.value)))); |
| sj5array[0]=IKsin(j5array[0]); |
| cj5array[0]=IKcos(j5array[0]); |
| if( j5array[0] > IKPI ) |
| { |
| j5array[0]-=IK2PI; |
| } |
| else if( j5array[0] < -IKPI ) |
| { j5array[0]+=IK2PI; |
| } |
| j5valid[0] = true; |
| for(int ij5 = 0; ij5 < 1; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < 1; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| { |
| IkReal evalcond[7]; |
| IkReal x1920=IKsin(j5); |
| IkReal x1921=IKcos(j5); |
| IkReal x1922=((1.0)*gconst25); |
| IkReal x1923=((1.0000000008)*x1920); |
| IkReal x1924=((1.0000000008)*x1921); |
| evalcond[0]=(gconst24+((new_r00*x1920))+((new_r10*x1921))); |
| evalcond[1]=(((gconst25*x1924))+((gconst24*x1920))+new_r00); |
| evalcond[2]=((((-1.0)*gconst25*x1923))+((gconst24*x1921))+new_r10); |
| evalcond[3]=(((gconst24*x1924))+(((-1.0)*x1920*x1922))); |
| evalcond[4]=((((-1.0)*gconst24*x1923))+(((-1.0)*x1921*x1922))); |
| evalcond[5]=((((1.0000000008)*gconst25))+((new_r00*x1921))+(((-1.0)*new_r10*x1920))); |
| evalcond[6]=((((-1.0)*x1922))+((new_r10*x1923))+(((-1.0)*new_r00*x1924))); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[2]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[3]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[4]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[5]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[6]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| |
| } |
| |
| } |
| |
| } else |
| { |
| { |
| IkReal j5array[1], cj5array[1], sj5array[1]; |
| bool j5valid[1]={false}; |
| _nj5 = 1; |
| IkReal x1925=((25000.00002)*gconst25); |
| IkReal x1926=((25000.0)*gconst24); |
| CheckValue<IkReal> x1927 = IKatan2WithCheck(IkReal((((new_r10*x1925))+(((-1.0)*new_r00*x1926)))),IkReal(((((-1.0)*new_r10*x1926))+(((-1.0)*new_r00*x1925)))),IKFAST_ATAN2_MAGTHRESH); |
| if(!x1927.valid){ |
| continue; |
| } |
| CheckValue<IkReal> x1928=IKPowWithIntegerCheck(IKsign(((((25000.0)*(new_r10*new_r10)))+(((25000.0)*(new_r00*new_r00))))),-1); |
| if(!x1928.valid){ |
| continue; |
| } |
| j5array[0]=((-1.5707963267949)+(x1927.value)+(((1.5707963267949)*(x1928.value)))); |
| sj5array[0]=IKsin(j5array[0]); |
| cj5array[0]=IKcos(j5array[0]); |
| if( j5array[0] > IKPI ) |
| { |
| j5array[0]-=IK2PI; |
| } |
| else if( j5array[0] < -IKPI ) |
| { j5array[0]+=IK2PI; |
| } |
| j5valid[0] = true; |
| for(int ij5 = 0; ij5 < 1; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < 1; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| { |
| IkReal evalcond[7]; |
| IkReal x1929=IKsin(j5); |
| IkReal x1930=IKcos(j5); |
| IkReal x1931=((1.0)*gconst25); |
| IkReal x1932=((1.0000000008)*x1929); |
| IkReal x1933=((1.0000000008)*x1930); |
| evalcond[0]=(gconst24+((new_r10*x1930))+((new_r00*x1929))); |
| evalcond[1]=(((gconst24*x1929))+((gconst25*x1933))+new_r00); |
| evalcond[2]=((((-1.0)*gconst25*x1932))+((gconst24*x1930))+new_r10); |
| evalcond[3]=(((gconst24*x1933))+(((-1.0)*x1929*x1931))); |
| evalcond[4]=((((-1.0)*x1930*x1931))+(((-1.0)*gconst24*x1932))); |
| evalcond[5]=((((1.0000000008)*gconst25))+((new_r00*x1930))+(((-1.0)*new_r10*x1929))); |
| evalcond[6]=((((-1.0)*new_r00*x1933))+((new_r10*x1932))+(((-1.0)*x1931))); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[2]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[3]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[4]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[5]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[6]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| |
| } |
| |
| } |
| |
| } |
| } while(0); |
| if( bgotonextstatement ) |
| { |
| bool bgotonextstatement = true; |
| do |
| { |
| evalcond[0]=((IKabs(new_r11))+(IKabs(new_r10))); |
| if( IKabs(evalcond[0]) < 0.0000050000000000 ) |
| { |
| bgotonextstatement=false; |
| { |
| IkReal j5array[1], cj5array[1], sj5array[1]; |
| bool j5valid[1]={false}; |
| _nj5 = 1; |
| CheckValue<IkReal> x1935=IKPowWithIntegerCheck(gconst25,-1); |
| if(!x1935.valid){ |
| continue; |
| } |
| IkReal x1934=x1935.value; |
| if( IKabs((new_r01*x1934)) < IKFAST_ATAN2_MAGTHRESH && IKabs(((-0.9999999992)*new_r00*x1934)) < IKFAST_ATAN2_MAGTHRESH && IKabs(IKsqr((new_r01*x1934))+IKsqr(((-0.9999999992)*new_r00*x1934))-1) <= IKFAST_SINCOS_THRESH ) |
| continue; |
| j5array[0]=IKatan2((new_r01*x1934), ((-0.9999999992)*new_r00*x1934)); |
| sj5array[0]=IKsin(j5array[0]); |
| cj5array[0]=IKcos(j5array[0]); |
| if( j5array[0] > IKPI ) |
| { |
| j5array[0]-=IK2PI; |
| } |
| else if( j5array[0] < -IKPI ) |
| { j5array[0]+=IK2PI; |
| } |
| j5valid[0] = true; |
| for(int ij5 = 0; ij5 < 1; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < 1; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| { |
| IkReal evalcond[10]; |
| IkReal x1936=IKcos(j5); |
| IkReal x1937=IKsin(j5); |
| IkReal x1938=((1.0)*gconst25); |
| IkReal x1939=(gconst25*x1936); |
| IkReal x1940=(new_r00*x1936); |
| IkReal x1941=(new_r01*x1936); |
| evalcond[0]=(new_r00*x1937); |
| evalcond[1]=x1941; |
| evalcond[2]=((-1.0)*x1939); |
| evalcond[3]=((((-1.0)*x1937*x1938))+new_r01); |
| evalcond[4]=(((new_r01*x1937))+(((-1.0)*x1938))); |
| evalcond[5]=((-1.0000000008)*gconst25*x1937); |
| evalcond[6]=((-1.0000000008)*x1941); |
| evalcond[7]=((((1.0000000008)*x1939))+new_r00); |
| evalcond[8]=((((1.0000000008)*gconst25))+x1940); |
| evalcond[9]=((((-1.0000000008)*x1940))+(((-1.0)*x1938))); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[2]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[3]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[4]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[5]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[6]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[7]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[8]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[9]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| |
| } |
| } while(0); |
| if( bgotonextstatement ) |
| { |
| bool bgotonextstatement = true; |
| do |
| { |
| if( 1 ) |
| { |
| bgotonextstatement=false; |
| continue; // branch miss [j5] |
| |
| } |
| } while(0); |
| if( bgotonextstatement ) |
| { |
| } |
| } |
| } |
| } |
| } |
| |
| } else |
| { |
| { |
| IkReal j5array[1], cj5array[1], sj5array[1]; |
| bool j5valid[1]={false}; |
| _nj5 = 1; |
| CheckValue<IkReal> x1946=IKPowWithIntegerCheck(new_r00,-1); |
| if(!x1946.valid){ |
| continue; |
| } |
| IkReal x1942=x1946.value; |
| IkReal x1943=gconst24*gconst24; |
| IkReal x1944=((25000.0)*new_r10); |
| CheckValue<IkReal> x1947=IKPowWithIntegerCheck(((((-1.0)*gconst24*x1944))+(((25000.00002)*gconst25*new_r00))),-1); |
| if(!x1947.valid){ |
| continue; |
| } |
| IkReal x1945=x1947.value; |
| CheckValue<IkReal> x1948=IKPowWithIntegerCheck(((((-25000.0)*gconst24*new_r10))+(((25000.00002)*gconst25*new_r00))),-1); |
| if(!x1948.valid){ |
| continue; |
| } |
| CheckValue<IkReal> x1949=IKPowWithIntegerCheck(((((-25000.0)*gconst24*new_r10))+(((25000.00002)*gconst25*new_r00))),-1); |
| if(!x1949.valid){ |
| continue; |
| } |
| CheckValue<IkReal> x1950=IKPowWithIntegerCheck(x1942,-2); |
| if(!x1950.valid){ |
| continue; |
| } |
| if( IKabs(((((-1.0)*gconst24*x1942))+((new_r00*x1944*(x1948.value)))+(((-1.0)*x1942*x1943*x1944*(x1949.value))))) < IKFAST_ATAN2_MAGTHRESH && IKabs((x1945*(((((25000.0)*x1943))+(((-25000.0)*(x1950.value))))))) < IKFAST_ATAN2_MAGTHRESH && IKabs(IKsqr(((((-1.0)*gconst24*x1942))+((new_r00*x1944*(x1948.value)))+(((-1.0)*x1942*x1943*x1944*(x1949.value)))))+IKsqr((x1945*(((((25000.0)*x1943))+(((-25000.0)*(x1950.value)))))))-1) <= IKFAST_SINCOS_THRESH ) |
| continue; |
| j5array[0]=IKatan2(((((-1.0)*gconst24*x1942))+((new_r00*x1944*(x1948.value)))+(((-1.0)*x1942*x1943*x1944*(x1949.value)))), (x1945*(((((25000.0)*x1943))+(((-25000.0)*(x1950.value))))))); |
| sj5array[0]=IKsin(j5array[0]); |
| cj5array[0]=IKcos(j5array[0]); |
| if( j5array[0] > IKPI ) |
| { |
| j5array[0]-=IK2PI; |
| } |
| else if( j5array[0] < -IKPI ) |
| { j5array[0]+=IK2PI; |
| } |
| j5valid[0] = true; |
| for(int ij5 = 0; ij5 < 1; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < 1; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| { |
| IkReal evalcond[10]; |
| IkReal x1951=IKcos(j5); |
| IkReal x1952=IKsin(j5); |
| IkReal x1953=((1.0)*gconst25); |
| IkReal x1954=((1.0000000008)*gconst25); |
| IkReal x1955=((1.0000000008)*gconst24); |
| IkReal x1956=(new_r11*x1952); |
| IkReal x1957=(new_r01*x1951); |
| IkReal x1958=(new_r00*x1951); |
| IkReal x1959=(new_r10*x1952); |
| evalcond[0]=(((new_r10*x1951))+((new_r00*x1952))+gconst24); |
| evalcond[1]=(((new_r11*x1951))+(((-1.0)*x1953))+((new_r01*x1952))); |
| evalcond[2]=(((gconst24*x1952))+((x1951*x1954))+new_r00); |
| evalcond[3]=((((-1.0)*x1952*x1954))+((gconst24*x1951))+new_r10); |
| evalcond[4]=((((-1.0)*x1952*x1953))+((x1951*x1955))+new_r01); |
| evalcond[5]=((((-1.0)*x1952*x1955))+(((-1.0)*x1951*x1953))+new_r11); |
| evalcond[6]=(x1954+x1958+(((-1.0)*x1959))); |
| evalcond[7]=(x1955+x1957+(((-1.0)*x1956))); |
| evalcond[8]=((((1.0000000008)*x1959))+(((-1.0)*x1953))+(((-1.0000000008)*x1958))); |
| evalcond[9]=((((1.0000000008)*x1956))+(((-1.0000000008)*x1957))+(((-1.0)*gconst24))); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[2]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[3]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[4]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[5]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[6]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[7]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[8]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[9]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| |
| } |
| |
| } |
| |
| } else |
| { |
| { |
| IkReal j5array[1], cj5array[1], sj5array[1]; |
| bool j5valid[1]={false}; |
| _nj5 = 1; |
| CheckValue<IkReal> x1964=IKPowWithIntegerCheck(new_r00,-1); |
| if(!x1964.valid){ |
| continue; |
| } |
| IkReal x1960=x1964.value; |
| IkReal x1961=((25000.0)*new_r10); |
| IkReal x1962=(gconst24*x1960); |
| CheckValue<IkReal> x1965=IKPowWithIntegerCheck((((gconst25*x1961))+(((25000.00002)*gconst24*new_r00))),-1); |
| if(!x1965.valid){ |
| continue; |
| } |
| IkReal x1963=x1965.value; |
| if( IKabs(((((-1.0)*x1962))+((new_r01*x1961*x1963))+((gconst25*x1961*x1962*x1963)))) < IKFAST_ATAN2_MAGTHRESH && IKabs((x1963*(((((-25000.0)*new_r00*new_r01))+(((-25000.0)*gconst24*gconst25)))))) < IKFAST_ATAN2_MAGTHRESH && IKabs(IKsqr(((((-1.0)*x1962))+((new_r01*x1961*x1963))+((gconst25*x1961*x1962*x1963))))+IKsqr((x1963*(((((-25000.0)*new_r00*new_r01))+(((-25000.0)*gconst24*gconst25))))))-1) <= IKFAST_SINCOS_THRESH ) |
| continue; |
| j5array[0]=IKatan2(((((-1.0)*x1962))+((new_r01*x1961*x1963))+((gconst25*x1961*x1962*x1963))), (x1963*(((((-25000.0)*new_r00*new_r01))+(((-25000.0)*gconst24*gconst25)))))); |
| sj5array[0]=IKsin(j5array[0]); |
| cj5array[0]=IKcos(j5array[0]); |
| if( j5array[0] > IKPI ) |
| { |
| j5array[0]-=IK2PI; |
| } |
| else if( j5array[0] < -IKPI ) |
| { j5array[0]+=IK2PI; |
| } |
| j5valid[0] = true; |
| for(int ij5 = 0; ij5 < 1; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < 1; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| { |
| IkReal evalcond[10]; |
| IkReal x1966=IKcos(j5); |
| IkReal x1967=IKsin(j5); |
| IkReal x1968=((1.0)*gconst25); |
| IkReal x1969=((1.0000000008)*gconst25); |
| IkReal x1970=((1.0000000008)*gconst24); |
| IkReal x1971=(new_r11*x1967); |
| IkReal x1972=(new_r01*x1966); |
| IkReal x1973=(new_r00*x1966); |
| IkReal x1974=(new_r10*x1967); |
| evalcond[0]=(((new_r00*x1967))+gconst24+((new_r10*x1966))); |
| evalcond[1]=(((new_r11*x1966))+((new_r01*x1967))+(((-1.0)*x1968))); |
| evalcond[2]=(((gconst24*x1967))+((x1966*x1969))+new_r00); |
| evalcond[3]=(((gconst24*x1966))+new_r10+(((-1.0)*x1967*x1969))); |
| evalcond[4]=(((x1966*x1970))+new_r01+(((-1.0)*x1967*x1968))); |
| evalcond[5]=((((-1.0)*x1966*x1968))+new_r11+(((-1.0)*x1967*x1970))); |
| evalcond[6]=((((-1.0)*x1974))+x1969+x1973); |
| evalcond[7]=((((-1.0)*x1971))+x1972+x1970); |
| evalcond[8]=((((-1.0)*x1968))+(((-1.0000000008)*x1973))+(((1.0000000008)*x1974))); |
| evalcond[9]=((((-1.0)*gconst24))+(((-1.0000000008)*x1972))+(((1.0000000008)*x1971))); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[2]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[3]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[4]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[5]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[6]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[7]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[8]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[9]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| |
| } |
| |
| } |
| |
| } else |
| { |
| { |
| IkReal j5array[1], cj5array[1], sj5array[1]; |
| bool j5valid[1]={false}; |
| _nj5 = 1; |
| IkReal x1975=((1.0)*new_r00); |
| CheckValue<IkReal> x1976 = IKatan2WithCheck(IkReal((((gconst25*new_r10))+((gconst24*new_r11)))),IkReal(((((-1.0)*gconst24*new_r01))+(((-1.0)*gconst25*x1975)))),IKFAST_ATAN2_MAGTHRESH); |
| if(!x1976.valid){ |
| continue; |
| } |
| CheckValue<IkReal> x1977=IKPowWithIntegerCheck(IKsign(((((-1.0)*new_r11*x1975))+((new_r01*new_r10)))),-1); |
| if(!x1977.valid){ |
| continue; |
| } |
| j5array[0]=((-1.5707963267949)+(x1976.value)+(((1.5707963267949)*(x1977.value)))); |
| sj5array[0]=IKsin(j5array[0]); |
| cj5array[0]=IKcos(j5array[0]); |
| if( j5array[0] > IKPI ) |
| { |
| j5array[0]-=IK2PI; |
| } |
| else if( j5array[0] < -IKPI ) |
| { j5array[0]+=IK2PI; |
| } |
| j5valid[0] = true; |
| for(int ij5 = 0; ij5 < 1; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < 1; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| { |
| IkReal evalcond[10]; |
| IkReal x1978=IKcos(j5); |
| IkReal x1979=IKsin(j5); |
| IkReal x1980=((1.0)*gconst25); |
| IkReal x1981=((1.0000000008)*gconst25); |
| IkReal x1982=((1.0000000008)*gconst24); |
| IkReal x1983=(new_r11*x1979); |
| IkReal x1984=(new_r01*x1978); |
| IkReal x1985=(new_r00*x1978); |
| IkReal x1986=(new_r10*x1979); |
| evalcond[0]=(((new_r10*x1978))+((new_r00*x1979))+gconst24); |
| evalcond[1]=(((new_r01*x1979))+((new_r11*x1978))+(((-1.0)*x1980))); |
| evalcond[2]=(((gconst24*x1979))+((x1978*x1981))+new_r00); |
| evalcond[3]=(((gconst24*x1978))+(((-1.0)*x1979*x1981))+new_r10); |
| evalcond[4]=((((-1.0)*x1979*x1980))+((x1978*x1982))+new_r01); |
| evalcond[5]=((((-1.0)*x1979*x1982))+new_r11+(((-1.0)*x1978*x1980))); |
| evalcond[6]=(x1985+x1981+(((-1.0)*x1986))); |
| evalcond[7]=(x1984+x1982+(((-1.0)*x1983))); |
| evalcond[8]=((((1.0000000008)*x1986))+(((-1.0)*x1980))+(((-1.0000000008)*x1985))); |
| evalcond[9]=((((1.0000000008)*x1983))+(((-1.0000000008)*x1984))+(((-1.0)*gconst24))); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[2]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[3]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[4]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[5]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[6]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[7]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[8]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[9]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| |
| } |
| |
| } |
| |
| } |
| } while(0); |
| if( bgotonextstatement ) |
| { |
| bool bgotonextstatement = true; |
| do |
| { |
| IkReal x1987=((1.0000000008)*new_r00); |
| IkReal x1989 = ((((1.0000000016)*(new_r00*new_r00)))+(new_r10*new_r10)); |
| if(IKabs(x1989)==0){ |
| continue; |
| } |
| IkReal x1988=pow(x1989,-0.5); |
| CheckValue<IkReal> x1990 = IKatan2WithCheck(IkReal(new_r10),IkReal(x1987),IKFAST_ATAN2_MAGTHRESH); |
| if(!x1990.valid){ |
| continue; |
| } |
| IkReal gconst26=((-1.0)*(x1990.value)); |
| IkReal gconst27=((-1.0)*new_r10*x1988); |
| IkReal gconst28=(x1987*x1988); |
| CheckValue<IkReal> x1991 = IKatan2WithCheck(IkReal(new_r10),IkReal(((1.0000000008)*new_r00)),IKFAST_ATAN2_MAGTHRESH); |
| if(!x1991.valid){ |
| continue; |
| } |
| evalcond[0]=((-3.14159265358979)+(IKfmod(((3.14159265358979)+(IKabs(((x1991.value)+j3)))), 6.28318530717959))); |
| if( IKabs(evalcond[0]) < 0.0000050000000000 ) |
| { |
| bgotonextstatement=false; |
| { |
| IkReal j5eval[3]; |
| IkReal x1992=((1.0000000008)*new_r00); |
| IkReal x1993=x1988; |
| sj4=-4.0e-5; |
| cj4=-1.0; |
| j4=3.14163265; |
| sj3=gconst27; |
| cj3=gconst28; |
| CheckValue<IkReal> x1994 = IKatan2WithCheck(IkReal(new_r10),IkReal(new_r00),IKFAST_ATAN2_MAGTHRESH); |
| if(!x1994.valid){ |
| continue; |
| } |
| j3=((-1.0)*(x1994.value)); |
| CheckValue<IkReal> x1995 = IKatan2WithCheck(IkReal(new_r10),IkReal(x1992),IKFAST_ATAN2_MAGTHRESH); |
| if(!x1995.valid){ |
| continue; |
| } |
| IkReal gconst26=((-1.0)*(x1995.value)); |
| IkReal gconst27=((-1.0)*new_r10*x1993); |
| IkReal gconst28=(x1992*x1993); |
| IkReal x1996=new_r00*new_r00; |
| IkReal x1997=(new_r01*new_r10); |
| IkReal x1998=(x1997+(((-1.0)*new_r00*new_r11))); |
| IkReal x2001 = ((((625000000.0)*(new_r10*new_r10)))+(((625000001.0)*x1996))); |
| if(IKabs(x2001)==0){ |
| continue; |
| } |
| IkReal x1999=pow(x2001,-0.5); |
| IkReal x2000=(new_r10*x1999); |
| j5eval[0]=x1998; |
| j5eval[1]=IKsign(x1998); |
| j5eval[2]=((IKabs(((((25000.00002)*new_r00*x2000))+(((-25000.0)*new_r11*x2000)))))+(IKabs(((((25000.0)*x1997*x1999))+(((-25000.00002)*x1996*x1999)))))); |
| if( IKabs(j5eval[0]) < 0.0000010000000000 || IKabs(j5eval[1]) < 0.0000010000000000 || IKabs(j5eval[2]) < 0.0000010000000000 ) |
| { |
| { |
| IkReal j5eval[1]; |
| IkReal x2002=((1.0000000008)*new_r00); |
| IkReal x2003=x1988; |
| sj4=-4.0e-5; |
| cj4=-1.0; |
| j4=3.14163265; |
| sj3=gconst27; |
| cj3=gconst28; |
| CheckValue<IkReal> x2004 = IKatan2WithCheck(IkReal(new_r10),IkReal(new_r00),IKFAST_ATAN2_MAGTHRESH); |
| if(!x2004.valid){ |
| continue; |
| } |
| j3=((-1.0)*(x2004.value)); |
| CheckValue<IkReal> x2005 = IKatan2WithCheck(IkReal(new_r10),IkReal(x2002),IKFAST_ATAN2_MAGTHRESH); |
| if(!x2005.valid){ |
| continue; |
| } |
| IkReal gconst26=((-1.0)*(x2005.value)); |
| IkReal gconst27=((-1.0)*new_r10*x2003); |
| IkReal gconst28=(x2002*x2003); |
| j5eval[0]=new_r00; |
| if( IKabs(j5eval[0]) < 0.0000010000000000 ) |
| { |
| { |
| IkReal j5eval[2]; |
| IkReal x2006=((1.0000000008)*new_r00); |
| IkReal x2007=x1988; |
| sj4=-4.0e-5; |
| cj4=-1.0; |
| j4=3.14163265; |
| sj3=gconst27; |
| cj3=gconst28; |
| CheckValue<IkReal> x2008 = IKatan2WithCheck(IkReal(new_r10),IkReal(new_r00),IKFAST_ATAN2_MAGTHRESH); |
| if(!x2008.valid){ |
| continue; |
| } |
| j3=((-1.0)*(x2008.value)); |
| CheckValue<IkReal> x2009 = IKatan2WithCheck(IkReal(new_r10),IkReal(x2006),IKFAST_ATAN2_MAGTHRESH); |
| if(!x2009.valid){ |
| continue; |
| } |
| IkReal gconst26=((-1.0)*(x2009.value)); |
| IkReal gconst27=((-1.0)*new_r10*x2007); |
| IkReal gconst28=(x2006*x2007); |
| j5eval[0]=new_r00; |
| IkReal x2010 = ((((1.0000000016)*(new_r00*new_r00)))+(new_r10*new_r10)); |
| if(IKabs(x2010)==0){ |
| continue; |
| } |
| j5eval[1]=((1.6e-9)*new_r00*new_r10*(pow(x2010,-0.5))); |
| if( IKabs(j5eval[0]) < 0.0000010000000000 || IKabs(j5eval[1]) < 0.0000010000000000 ) |
| { |
| { |
| IkReal evalcond[1]; |
| bool bgotonextstatement = true; |
| do |
| { |
| evalcond[0]=IKabs(new_r00); |
| if( IKabs(evalcond[0]) < 0.0000050000000000 ) |
| { |
| bgotonextstatement=false; |
| { |
| IkReal j5eval[1]; |
| CheckValue<IkReal> x2012 = IKatan2WithCheck(IkReal(new_r10),IkReal(0),IKFAST_ATAN2_MAGTHRESH); |
| if(!x2012.valid){ |
| continue; |
| } |
| IkReal x2011=((-1.0)*(x2012.value)); |
| sj4=-4.0e-5; |
| cj4=-1.0; |
| j4=3.14163265; |
| sj3=gconst27; |
| cj3=gconst28; |
| j3=x2011; |
| new_r00=0; |
| IkReal gconst26=x2011; |
| IkReal x2013 = new_r10*new_r10; |
| if(IKabs(x2013)==0){ |
| continue; |
| } |
| IkReal gconst27=((-1.0)*new_r10*(pow(x2013,-0.5))); |
| IkReal gconst28=0; |
| j5eval[0]=new_r10; |
| if( IKabs(j5eval[0]) < 0.0000010000000000 ) |
| { |
| { |
| IkReal j5array[1], cj5array[1], sj5array[1]; |
| bool j5valid[1]={false}; |
| _nj5 = 1; |
| CheckValue<IkReal> x2015=IKPowWithIntegerCheck(gconst27,-1); |
| if(!x2015.valid){ |
| continue; |
| } |
| IkReal x2014=x2015.value; |
| if( IKabs(((0.9999999992)*new_r11*x2014)) < IKFAST_ATAN2_MAGTHRESH && IKabs(((-1.0)*new_r10*x2014)) < IKFAST_ATAN2_MAGTHRESH && IKabs(IKsqr(((0.9999999992)*new_r11*x2014))+IKsqr(((-1.0)*new_r10*x2014))-1) <= IKFAST_SINCOS_THRESH ) |
| continue; |
| j5array[0]=IKatan2(((0.9999999992)*new_r11*x2014), ((-1.0)*new_r10*x2014)); |
| sj5array[0]=IKsin(j5array[0]); |
| cj5array[0]=IKcos(j5array[0]); |
| if( j5array[0] > IKPI ) |
| { |
| j5array[0]-=IK2PI; |
| } |
| else if( j5array[0] < -IKPI ) |
| { j5array[0]+=IK2PI; |
| } |
| j5valid[0] = true; |
| for(int ij5 = 0; ij5 < 1; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < 1; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| { |
| IkReal evalcond[10]; |
| IkReal x2016=IKsin(j5); |
| IkReal x2017=IKcos(j5); |
| IkReal x2018=((1.0000000008)*x2016); |
| IkReal x2019=(gconst27*x2017); |
| IkReal x2020=(new_r01*x2017); |
| evalcond[0]=(gconst27*x2016); |
| evalcond[1]=((-1.0)*new_r10*x2016); |
| evalcond[2]=(gconst27+((new_r10*x2017))); |
| evalcond[3]=(x2019+new_r10); |
| evalcond[4]=(new_r10*x2018); |
| evalcond[5]=(((new_r11*x2017))+((new_r01*x2016))); |
| evalcond[6]=((((1.0000000008)*x2019))+new_r01); |
| evalcond[7]=(new_r11+(((-1.0)*gconst27*x2018))); |
| evalcond[8]=(x2020+(((1.0000000008)*gconst27))+(((-1.0)*new_r11*x2016))); |
| evalcond[9]=(((new_r11*x2018))+(((-1.0000000008)*x2020))+(((-1.0)*gconst27))); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[2]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[3]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[4]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[5]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[6]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[7]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[8]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[9]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| |
| } else |
| { |
| { |
| IkReal j5array[1], cj5array[1], sj5array[1]; |
| bool j5valid[1]={false}; |
| _nj5 = 1; |
| CheckValue<IkReal> x2021=IKPowWithIntegerCheck(gconst27,-1); |
| if(!x2021.valid){ |
| continue; |
| } |
| CheckValue<IkReal> x2022=IKPowWithIntegerCheck(new_r10,-1); |
| if(!x2022.valid){ |
| continue; |
| } |
| if( IKabs(((0.9999999992)*new_r11*(x2021.value))) < IKFAST_ATAN2_MAGTHRESH && IKabs(((-1.0)*gconst27*(x2022.value))) < IKFAST_ATAN2_MAGTHRESH && IKabs(IKsqr(((0.9999999992)*new_r11*(x2021.value)))+IKsqr(((-1.0)*gconst27*(x2022.value)))-1) <= IKFAST_SINCOS_THRESH ) |
| continue; |
| j5array[0]=IKatan2(((0.9999999992)*new_r11*(x2021.value)), ((-1.0)*gconst27*(x2022.value))); |
| sj5array[0]=IKsin(j5array[0]); |
| cj5array[0]=IKcos(j5array[0]); |
| if( j5array[0] > IKPI ) |
| { |
| j5array[0]-=IK2PI; |
| } |
| else if( j5array[0] < -IKPI ) |
| { j5array[0]+=IK2PI; |
| } |
| j5valid[0] = true; |
| for(int ij5 = 0; ij5 < 1; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < 1; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| { |
| IkReal evalcond[10]; |
| IkReal x2023=IKsin(j5); |
| IkReal x2024=IKcos(j5); |
| IkReal x2025=((1.0000000008)*x2023); |
| IkReal x2026=(gconst27*x2024); |
| IkReal x2027=(new_r01*x2024); |
| evalcond[0]=(gconst27*x2023); |
| evalcond[1]=((-1.0)*new_r10*x2023); |
| evalcond[2]=(((new_r10*x2024))+gconst27); |
| evalcond[3]=(x2026+new_r10); |
| evalcond[4]=(new_r10*x2025); |
| evalcond[5]=(((new_r01*x2023))+((new_r11*x2024))); |
| evalcond[6]=((((1.0000000008)*x2026))+new_r01); |
| evalcond[7]=((((-1.0)*gconst27*x2025))+new_r11); |
| evalcond[8]=(x2027+(((1.0000000008)*gconst27))+(((-1.0)*new_r11*x2023))); |
| evalcond[9]=((((-1.0000000008)*x2027))+((new_r11*x2025))+(((-1.0)*gconst27))); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[2]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[3]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[4]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[5]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[6]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[7]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[8]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[9]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| |
| } |
| |
| } |
| |
| } |
| } while(0); |
| if( bgotonextstatement ) |
| { |
| bool bgotonextstatement = true; |
| do |
| { |
| evalcond[0]=((IKabs(new_r11))+(IKabs(new_r01))); |
| if( IKabs(evalcond[0]) < 0.0000050000000000 ) |
| { |
| bgotonextstatement=false; |
| { |
| IkReal j5eval[3]; |
| IkReal x2028=((1.0000000008)*new_r00); |
| IkReal x2030 = ((1.0000000016)+(((-1.6e-9)*(new_r10*new_r10)))); |
| if(IKabs(x2030)==0){ |
| continue; |
| } |
| IkReal x2029=pow(x2030,-0.5); |
| sj4=-4.0e-5; |
| cj4=-1.0; |
| j4=3.14163265; |
| sj3=gconst27; |
| cj3=gconst28; |
| CheckValue<IkReal> x2031 = IKatan2WithCheck(IkReal(new_r10),IkReal(new_r00),IKFAST_ATAN2_MAGTHRESH); |
| if(!x2031.valid){ |
| continue; |
| } |
| j3=((-1.0)*(x2031.value)); |
| new_r11=0; |
| new_r01=0; |
| new_r22=0; |
| new_r20=0; |
| CheckValue<IkReal> x2032 = IKatan2WithCheck(IkReal(new_r10),IkReal(x2028),IKFAST_ATAN2_MAGTHRESH); |
| if(!x2032.valid){ |
| continue; |
| } |
| IkReal gconst26=((-1.0)*(x2032.value)); |
| IkReal gconst27=((-1.0)*new_r10*x2029); |
| IkReal gconst28=(x2028*x2029); |
| IkReal x2033=new_r10*new_r10; |
| CheckValue<IkReal> x2037=IKPowWithIntegerCheck(((-625000001.0)+x2033),-1); |
| if(!x2037.valid){ |
| continue; |
| } |
| IkReal x2034=x2037.value; |
| if((((625000001.0)+(((-1.0)*x2033)))) < -0.00001) |
| continue; |
| IkReal x2035=IKsqrt(((625000001.0)+(((-1.0)*x2033)))); |
| IkReal x2036=(x2034*x2035); |
| j5eval[0]=1.0; |
| j5eval[1]=1.0; |
| IkReal x2038 = ((1.0000000016)+(((-1.6e-9)*x2033))); |
| if(IKabs(x2038)==0){ |
| continue; |
| } |
| j5eval[2]=((((50000.00004)*(IKabs((new_r00*new_r10*(pow(x2038,-0.5)))))))+(IKabs(((((-1250000001.0)*x2033*x2036))+(((625000001.0)*x2036)))))); |
| if( IKabs(j5eval[0]) < 0.0000010000000000 || IKabs(j5eval[1]) < 0.0000010000000000 || IKabs(j5eval[2]) < 0.0000010000000000 ) |
| { |
| { |
| IkReal j5eval[1]; |
| IkReal x2039=((1.0000000008)*new_r00); |
| IkReal x2041 = ((1.0000000016)+(((-1.6e-9)*(new_r10*new_r10)))); |
| if(IKabs(x2041)==0){ |
| continue; |
| } |
| IkReal x2040=pow(x2041,-0.5); |
| sj4=-4.0e-5; |
| cj4=-1.0; |
| j4=3.14163265; |
| sj3=gconst27; |
| cj3=gconst28; |
| CheckValue<IkReal> x2042 = IKatan2WithCheck(IkReal(new_r10),IkReal(new_r00),IKFAST_ATAN2_MAGTHRESH); |
| if(!x2042.valid){ |
| continue; |
| } |
| j3=((-1.0)*(x2042.value)); |
| new_r11=0; |
| new_r01=0; |
| new_r22=0; |
| new_r20=0; |
| CheckValue<IkReal> x2043 = IKatan2WithCheck(IkReal(new_r10),IkReal(x2039),IKFAST_ATAN2_MAGTHRESH); |
| if(!x2043.valid){ |
| continue; |
| } |
| IkReal gconst26=((-1.0)*(x2043.value)); |
| IkReal gconst27=((-1.0)*new_r10*x2040); |
| IkReal gconst28=(x2039*x2040); |
| IkReal x2044=new_r10*new_r10; |
| CheckValue<IkReal> x2047=IKPowWithIntegerCheck(((1.0000000016)+(((-1.6e-9)*x2044))),-1); |
| if(!x2047.valid){ |
| continue; |
| } |
| IkReal x2045=x2047.value; |
| IkReal x2046=((625000001.0)*x2045); |
| IkReal x2048=((1.0)+(((-1.0)*x2044))); |
| j5eval[0]=IKsign((((x2046*(x2044*x2044)))+(((-1.0)*x2046*(x2048*x2048))))); |
| if( IKabs(j5eval[0]) < 0.0000010000000000 ) |
| { |
| { |
| IkReal j5eval[1]; |
| IkReal x2049=((1.0000000008)*new_r00); |
| IkReal x2051 = ((1.0000000016)+(((-1.6e-9)*(new_r10*new_r10)))); |
| if(IKabs(x2051)==0){ |
| continue; |
| } |
| IkReal x2050=pow(x2051,-0.5); |
| sj4=-4.0e-5; |
| cj4=-1.0; |
| j4=3.14163265; |
| sj3=gconst27; |
| cj3=gconst28; |
| CheckValue<IkReal> x2052 = IKatan2WithCheck(IkReal(new_r10),IkReal(new_r00),IKFAST_ATAN2_MAGTHRESH); |
| if(!x2052.valid){ |
| continue; |
| } |
| j3=((-1.0)*(x2052.value)); |
| new_r11=0; |
| new_r01=0; |
| new_r22=0; |
| new_r20=0; |
| CheckValue<IkReal> x2053 = IKatan2WithCheck(IkReal(new_r10),IkReal(x2049),IKFAST_ATAN2_MAGTHRESH); |
| if(!x2053.valid){ |
| continue; |
| } |
| IkReal gconst26=((-1.0)*(x2053.value)); |
| IkReal gconst27=((-1.0)*new_r10*x2050); |
| IkReal gconst28=(x2049*x2050); |
| j5eval[0]=new_r00; |
| if( IKabs(j5eval[0]) < 0.0000010000000000 ) |
| { |
| continue; // 3 cases reached |
| |
| } else |
| { |
| { |
| IkReal j5array[1], cj5array[1], sj5array[1]; |
| bool j5valid[1]={false}; |
| _nj5 = 1; |
| CheckValue<IkReal> x2060=IKPowWithIntegerCheck(new_r00,-1); |
| if(!x2060.valid){ |
| continue; |
| } |
| IkReal x2054=x2060.value; |
| IkReal x2055=gconst27*gconst27; |
| IkReal x2056=((25000.0)*new_r10); |
| IkReal x2057=((25000.0)*x2055); |
| CheckValue<IkReal> x2061=IKPowWithIntegerCheck(((((-1.0)*gconst27*x2056))+(((25000.00002)*gconst28*new_r00))),-1); |
| if(!x2061.valid){ |
| continue; |
| } |
| IkReal x2058=x2061.value; |
| IkReal x2059=(new_r10*x2058); |
| CheckValue<IkReal> x2062=IKPowWithIntegerCheck(((((-25000.0)*gconst27*new_r10))+(((25000.00002)*gconst28*new_r00))),-1); |
| if(!x2062.valid){ |
| continue; |
| } |
| CheckValue<IkReal> x2063=IKPowWithIntegerCheck(((((-25000.0)*gconst27*new_r10))+(((25000.00002)*gconst28*new_r00))),-1); |
| if(!x2063.valid){ |
| continue; |
| } |
| CheckValue<IkReal> x2064=IKPowWithIntegerCheck(x2054,-2); |
| if(!x2064.valid){ |
| continue; |
| } |
| if( IKabs(((((-1.0)*x2054*x2055*x2056*(x2062.value)))+(((-1.0)*gconst27*x2054))+((new_r00*x2056*(x2063.value))))) < IKFAST_ATAN2_MAGTHRESH && IKabs((x2058*((x2057+(((-25000.0)*(x2064.value))))))) < IKFAST_ATAN2_MAGTHRESH && IKabs(IKsqr(((((-1.0)*x2054*x2055*x2056*(x2062.value)))+(((-1.0)*gconst27*x2054))+((new_r00*x2056*(x2063.value)))))+IKsqr((x2058*((x2057+(((-25000.0)*(x2064.value)))))))-1) <= IKFAST_SINCOS_THRESH ) |
| continue; |
| j5array[0]=IKatan2(((((-1.0)*x2054*x2055*x2056*(x2062.value)))+(((-1.0)*gconst27*x2054))+((new_r00*x2056*(x2063.value)))), (x2058*((x2057+(((-25000.0)*(x2064.value))))))); |
| sj5array[0]=IKsin(j5array[0]); |
| cj5array[0]=IKcos(j5array[0]); |
| if( j5array[0] > IKPI ) |
| { |
| j5array[0]-=IK2PI; |
| } |
| else if( j5array[0] < -IKPI ) |
| { j5array[0]+=IK2PI; |
| } |
| j5valid[0] = true; |
| for(int ij5 = 0; ij5 < 1; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < 1; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| { |
| IkReal evalcond[7]; |
| IkReal x2065=IKcos(j5); |
| IkReal x2066=IKsin(j5); |
| IkReal x2067=((1.0000000008)*gconst28); |
| IkReal x2068=((1.0)*gconst28); |
| IkReal x2069=((1.0000000008)*x2066); |
| IkReal x2070=(gconst27*x2065); |
| IkReal x2071=(new_r00*x2065); |
| evalcond[0]=(gconst27+((new_r10*x2065))+((new_r00*x2066))); |
| evalcond[1]=(((gconst27*x2066))+new_r00+((x2065*x2067))); |
| evalcond[2]=(x2070+new_r10+(((-1.0)*x2066*x2067))); |
| evalcond[3]=((((1.0000000008)*x2070))+(((-1.0)*x2066*x2068))); |
| evalcond[4]=((((-1.0)*gconst27*x2069))+(((-1.0)*x2065*x2068))); |
| evalcond[5]=(x2067+x2071+(((-1.0)*new_r10*x2066))); |
| evalcond[6]=((((-1.0000000008)*x2071))+(((-1.0)*x2068))+((new_r10*x2069))); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[2]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[3]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[4]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[5]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[6]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| |
| } |
| |
| } |
| |
| } else |
| { |
| { |
| IkReal j5array[1], cj5array[1], sj5array[1]; |
| bool j5valid[1]={false}; |
| _nj5 = 1; |
| IkReal x2072=gconst27*gconst27; |
| IkReal x2073=gconst28*gconst28; |
| IkReal x2074=((625000000.0)*x2073); |
| IkReal x2075=((625000000.5)*gconst28*x2072); |
| CheckValue<IkReal> x2076 = IKatan2WithCheck(IkReal((((gconst27*new_r00*x2074))+((new_r10*x2075)))),IkReal(((((-625000001.0)*new_r10*(gconst27*gconst27*gconst27)))+(((-1.0)*new_r00*x2075)))),IKFAST_ATAN2_MAGTHRESH); |
| if(!x2076.valid){ |
| continue; |
| } |
| CheckValue<IkReal> x2077=IKPowWithIntegerCheck(IKsign(((((625000001.0)*x2072*(new_r10*new_r10)))+(((-1.0)*x2074*(new_r00*new_r00))))),-1); |
| if(!x2077.valid){ |
| continue; |
| } |
| j5array[0]=((-1.5707963267949)+(x2076.value)+(((1.5707963267949)*(x2077.value)))); |
| sj5array[0]=IKsin(j5array[0]); |
| cj5array[0]=IKcos(j5array[0]); |
| if( j5array[0] > IKPI ) |
| { |
| j5array[0]-=IK2PI; |
| } |
| else if( j5array[0] < -IKPI ) |
| { j5array[0]+=IK2PI; |
| } |
| j5valid[0] = true; |
| for(int ij5 = 0; ij5 < 1; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < 1; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| { |
| IkReal evalcond[7]; |
| IkReal x2078=IKcos(j5); |
| IkReal x2079=IKsin(j5); |
| IkReal x2080=((1.0000000008)*gconst28); |
| IkReal x2081=((1.0)*gconst28); |
| IkReal x2082=((1.0000000008)*x2079); |
| IkReal x2083=(gconst27*x2078); |
| IkReal x2084=(new_r00*x2078); |
| evalcond[0]=(gconst27+((new_r00*x2079))+((new_r10*x2078))); |
| evalcond[1]=(((gconst27*x2079))+((x2078*x2080))+new_r00); |
| evalcond[2]=(x2083+(((-1.0)*x2079*x2080))+new_r10); |
| evalcond[3]=((((1.0000000008)*x2083))+(((-1.0)*x2079*x2081))); |
| evalcond[4]=((((-1.0)*x2078*x2081))+(((-1.0)*gconst27*x2082))); |
| evalcond[5]=(x2080+x2084+(((-1.0)*new_r10*x2079))); |
| evalcond[6]=((((-1.0000000008)*x2084))+(((-1.0)*x2081))+((new_r10*x2082))); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[2]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[3]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[4]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[5]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[6]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| |
| } |
| |
| } |
| |
| } else |
| { |
| { |
| IkReal j5array[1], cj5array[1], sj5array[1]; |
| bool j5valid[1]={false}; |
| _nj5 = 1; |
| IkReal x2085=((25000.0)*gconst27); |
| IkReal x2086=((25000.00002)*gconst28); |
| CheckValue<IkReal> x2087 = IKatan2WithCheck(IkReal((((new_r10*x2086))+(((-1.0)*new_r00*x2085)))),IkReal(((((-1.0)*new_r10*x2085))+(((-1.0)*new_r00*x2086)))),IKFAST_ATAN2_MAGTHRESH); |
| if(!x2087.valid){ |
| continue; |
| } |
| CheckValue<IkReal> x2088=IKPowWithIntegerCheck(IKsign(((((25000.0)*(new_r10*new_r10)))+(((25000.0)*(new_r00*new_r00))))),-1); |
| if(!x2088.valid){ |
| continue; |
| } |
| j5array[0]=((-1.5707963267949)+(x2087.value)+(((1.5707963267949)*(x2088.value)))); |
| sj5array[0]=IKsin(j5array[0]); |
| cj5array[0]=IKcos(j5array[0]); |
| if( j5array[0] > IKPI ) |
| { |
| j5array[0]-=IK2PI; |
| } |
| else if( j5array[0] < -IKPI ) |
| { j5array[0]+=IK2PI; |
| } |
| j5valid[0] = true; |
| for(int ij5 = 0; ij5 < 1; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < 1; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| { |
| IkReal evalcond[7]; |
| IkReal x2089=IKcos(j5); |
| IkReal x2090=IKsin(j5); |
| IkReal x2091=((1.0000000008)*gconst28); |
| IkReal x2092=((1.0)*gconst28); |
| IkReal x2093=((1.0000000008)*x2090); |
| IkReal x2094=(gconst27*x2089); |
| IkReal x2095=(new_r00*x2089); |
| evalcond[0]=(gconst27+((new_r00*x2090))+((new_r10*x2089))); |
| evalcond[1]=(((gconst27*x2090))+((x2089*x2091))+new_r00); |
| evalcond[2]=((((-1.0)*x2090*x2091))+x2094+new_r10); |
| evalcond[3]=((((-1.0)*x2090*x2092))+(((1.0000000008)*x2094))); |
| evalcond[4]=((((-1.0)*x2089*x2092))+(((-1.0)*gconst27*x2093))); |
| evalcond[5]=(x2095+x2091+(((-1.0)*new_r10*x2090))); |
| evalcond[6]=((((-1.0)*x2092))+((new_r10*x2093))+(((-1.0000000008)*x2095))); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[2]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[3]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[4]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[5]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[6]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| |
| } |
| |
| } |
| |
| } |
| } while(0); |
| if( bgotonextstatement ) |
| { |
| bool bgotonextstatement = true; |
| do |
| { |
| evalcond[0]=((IKabs(new_r11))+(IKabs(new_r10))); |
| if( IKabs(evalcond[0]) < 0.0000050000000000 ) |
| { |
| bgotonextstatement=false; |
| { |
| IkReal j5array[1], cj5array[1], sj5array[1]; |
| bool j5valid[1]={false}; |
| _nj5 = 1; |
| CheckValue<IkReal> x2097=IKPowWithIntegerCheck(gconst28,-1); |
| if(!x2097.valid){ |
| continue; |
| } |
| IkReal x2096=x2097.value; |
| if( IKabs((new_r01*x2096)) < IKFAST_ATAN2_MAGTHRESH && IKabs(((-0.9999999992)*new_r00*x2096)) < IKFAST_ATAN2_MAGTHRESH && IKabs(IKsqr((new_r01*x2096))+IKsqr(((-0.9999999992)*new_r00*x2096))-1) <= IKFAST_SINCOS_THRESH ) |
| continue; |
| j5array[0]=IKatan2((new_r01*x2096), ((-0.9999999992)*new_r00*x2096)); |
| sj5array[0]=IKsin(j5array[0]); |
| cj5array[0]=IKcos(j5array[0]); |
| if( j5array[0] > IKPI ) |
| { |
| j5array[0]-=IK2PI; |
| } |
| else if( j5array[0] < -IKPI ) |
| { j5array[0]+=IK2PI; |
| } |
| j5valid[0] = true; |
| for(int ij5 = 0; ij5 < 1; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < 1; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| { |
| IkReal evalcond[10]; |
| IkReal x2098=IKcos(j5); |
| IkReal x2099=IKsin(j5); |
| IkReal x2100=((1.0)*gconst28); |
| IkReal x2101=((1.0000000008)*gconst28); |
| IkReal x2102=(new_r00*x2098); |
| IkReal x2103=(new_r01*x2098); |
| evalcond[0]=(new_r00*x2099); |
| evalcond[1]=x2103; |
| evalcond[2]=((-1.0)*gconst28*x2098); |
| evalcond[3]=((((-1.0)*x2099*x2100))+new_r01); |
| evalcond[4]=((((-1.0)*x2100))+((new_r01*x2099))); |
| evalcond[5]=((-1.0000000008)*gconst28*x2099); |
| evalcond[6]=((-1.0000000008)*x2103); |
| evalcond[7]=(((x2098*x2101))+new_r00); |
| evalcond[8]=(x2102+x2101); |
| evalcond[9]=((((-1.0)*x2100))+(((-1.0000000008)*x2102))); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[2]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[3]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[4]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[5]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[6]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[7]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[8]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[9]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| |
| } |
| } while(0); |
| if( bgotonextstatement ) |
| { |
| bool bgotonextstatement = true; |
| do |
| { |
| if( 1 ) |
| { |
| bgotonextstatement=false; |
| continue; // branch miss [j5] |
| |
| } |
| } while(0); |
| if( bgotonextstatement ) |
| { |
| } |
| } |
| } |
| } |
| } |
| |
| } else |
| { |
| { |
| IkReal j5array[1], cj5array[1], sj5array[1]; |
| bool j5valid[1]={false}; |
| _nj5 = 1; |
| CheckValue<IkReal> x2109=IKPowWithIntegerCheck(new_r00,-1); |
| if(!x2109.valid){ |
| continue; |
| } |
| IkReal x2104=x2109.value; |
| IkReal x2105=((25000.0)*new_r00); |
| IkReal x2106=(gconst27*x2104); |
| IkReal x2107=((25000.00002)*gconst28); |
| CheckValue<IkReal> x2110=IKPowWithIntegerCheck((((new_r10*x2107))+((gconst27*x2105))),-1); |
| if(!x2110.valid){ |
| continue; |
| } |
| IkReal x2108=x2110.value; |
| if( IKabs(((((25000.0)*x2108*(new_r10*new_r10)))+((new_r10*x2106*x2107*x2108))+(((-1.0)*x2106)))) < IKFAST_ATAN2_MAGTHRESH && IKabs((x2108*(((((-1.0)*gconst27*x2107))+(((-1.0)*new_r10*x2105)))))) < IKFAST_ATAN2_MAGTHRESH && IKabs(IKsqr(((((25000.0)*x2108*(new_r10*new_r10)))+((new_r10*x2106*x2107*x2108))+(((-1.0)*x2106))))+IKsqr((x2108*(((((-1.0)*gconst27*x2107))+(((-1.0)*new_r10*x2105))))))-1) <= IKFAST_SINCOS_THRESH ) |
| continue; |
| j5array[0]=IKatan2(((((25000.0)*x2108*(new_r10*new_r10)))+((new_r10*x2106*x2107*x2108))+(((-1.0)*x2106))), (x2108*(((((-1.0)*gconst27*x2107))+(((-1.0)*new_r10*x2105)))))); |
| sj5array[0]=IKsin(j5array[0]); |
| cj5array[0]=IKcos(j5array[0]); |
| if( j5array[0] > IKPI ) |
| { |
| j5array[0]-=IK2PI; |
| } |
| else if( j5array[0] < -IKPI ) |
| { j5array[0]+=IK2PI; |
| } |
| j5valid[0] = true; |
| for(int ij5 = 0; ij5 < 1; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < 1; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| { |
| IkReal evalcond[10]; |
| IkReal x2111=IKcos(j5); |
| IkReal x2112=IKsin(j5); |
| IkReal x2113=((1.0)*gconst28); |
| IkReal x2114=((1.0000000008)*gconst27); |
| IkReal x2115=(new_r11*x2112); |
| IkReal x2116=((1.0000000008)*x2111); |
| IkReal x2117=((1.0000000008)*x2112); |
| evalcond[0]=(((new_r00*x2112))+gconst27+((new_r10*x2111))); |
| evalcond[1]=(((new_r01*x2112))+((new_r11*x2111))+(((-1.0)*x2113))); |
| evalcond[2]=(((gconst28*x2116))+new_r00+((gconst27*x2112))); |
| evalcond[3]=(new_r10+(((-1.0)*gconst28*x2117))+((gconst27*x2111))); |
| evalcond[4]=((((-1.0)*x2112*x2113))+((x2111*x2114))+new_r01); |
| evalcond[5]=((((-1.0)*x2112*x2114))+(((-1.0)*x2111*x2113))+new_r11); |
| evalcond[6]=(((new_r00*x2111))+(((-1.0)*new_r10*x2112))+(((1.0000000008)*gconst28))); |
| evalcond[7]=(((new_r01*x2111))+x2114+(((-1.0)*x2115))); |
| evalcond[8]=((((-1.0)*new_r00*x2116))+(((-1.0)*x2113))+((new_r10*x2117))); |
| evalcond[9]=((((-1.0)*new_r01*x2116))+(((1.0000000008)*x2115))+(((-1.0)*gconst27))); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[2]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[3]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[4]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[5]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[6]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[7]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[8]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[9]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| |
| } |
| |
| } |
| |
| } else |
| { |
| { |
| IkReal j5array[1], cj5array[1], sj5array[1]; |
| bool j5valid[1]={false}; |
| _nj5 = 1; |
| CheckValue<IkReal> x2124=IKPowWithIntegerCheck(new_r00,-1); |
| if(!x2124.valid){ |
| continue; |
| } |
| IkReal x2118=x2124.value; |
| IkReal x2119=gconst27*gconst27; |
| IkReal x2120=((25000.0)*new_r10); |
| IkReal x2121=((25000.0)*x2119); |
| CheckValue<IkReal> x2125=IKPowWithIntegerCheck(((((-1.0)*gconst27*x2120))+(((25000.00002)*gconst28*new_r00))),-1); |
| if(!x2125.valid){ |
| continue; |
| } |
| IkReal x2122=x2125.value; |
| IkReal x2123=(new_r10*x2122); |
| CheckValue<IkReal> x2126=IKPowWithIntegerCheck(((((-25000.0)*gconst27*new_r10))+(((25000.00002)*gconst28*new_r00))),-1); |
| if(!x2126.valid){ |
| continue; |
| } |
| CheckValue<IkReal> x2127=IKPowWithIntegerCheck(((((-25000.0)*gconst27*new_r10))+(((25000.00002)*gconst28*new_r00))),-1); |
| if(!x2127.valid){ |
| continue; |
| } |
| CheckValue<IkReal> x2128=IKPowWithIntegerCheck(x2118,-2); |
| if(!x2128.valid){ |
| continue; |
| } |
| if( IKabs(((((-1.0)*x2118*x2119*x2120*(x2126.value)))+(((-1.0)*gconst27*x2118))+((new_r00*x2120*(x2127.value))))) < IKFAST_ATAN2_MAGTHRESH && IKabs((x2122*(((((-25000.0)*(x2128.value)))+x2121)))) < IKFAST_ATAN2_MAGTHRESH && IKabs(IKsqr(((((-1.0)*x2118*x2119*x2120*(x2126.value)))+(((-1.0)*gconst27*x2118))+((new_r00*x2120*(x2127.value)))))+IKsqr((x2122*(((((-25000.0)*(x2128.value)))+x2121))))-1) <= IKFAST_SINCOS_THRESH ) |
| continue; |
| j5array[0]=IKatan2(((((-1.0)*x2118*x2119*x2120*(x2126.value)))+(((-1.0)*gconst27*x2118))+((new_r00*x2120*(x2127.value)))), (x2122*(((((-25000.0)*(x2128.value)))+x2121)))); |
| sj5array[0]=IKsin(j5array[0]); |
| cj5array[0]=IKcos(j5array[0]); |
| if( j5array[0] > IKPI ) |
| { |
| j5array[0]-=IK2PI; |
| } |
| else if( j5array[0] < -IKPI ) |
| { j5array[0]+=IK2PI; |
| } |
| j5valid[0] = true; |
| for(int ij5 = 0; ij5 < 1; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < 1; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| { |
| IkReal evalcond[10]; |
| IkReal x2129=IKcos(j5); |
| IkReal x2130=IKsin(j5); |
| IkReal x2131=((1.0)*gconst28); |
| IkReal x2132=((1.0000000008)*gconst27); |
| IkReal x2133=(new_r11*x2130); |
| IkReal x2134=((1.0000000008)*x2129); |
| IkReal x2135=((1.0000000008)*x2130); |
| evalcond[0]=(gconst27+((new_r00*x2130))+((new_r10*x2129))); |
| evalcond[1]=((((-1.0)*x2131))+((new_r11*x2129))+((new_r01*x2130))); |
| evalcond[2]=(((gconst28*x2134))+((gconst27*x2130))+new_r00); |
| evalcond[3]=(((gconst27*x2129))+(((-1.0)*gconst28*x2135))+new_r10); |
| evalcond[4]=((((-1.0)*x2130*x2131))+new_r01+((x2129*x2132))); |
| evalcond[5]=((((-1.0)*x2130*x2132))+(((-1.0)*x2129*x2131))+new_r11); |
| evalcond[6]=((((-1.0)*new_r10*x2130))+(((1.0000000008)*gconst28))+((new_r00*x2129))); |
| evalcond[7]=(x2132+((new_r01*x2129))+(((-1.0)*x2133))); |
| evalcond[8]=(((new_r10*x2135))+(((-1.0)*x2131))+(((-1.0)*new_r00*x2134))); |
| evalcond[9]=((((-1.0)*new_r01*x2134))+(((1.0000000008)*x2133))+(((-1.0)*gconst27))); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[2]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[3]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[4]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[5]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[6]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[7]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[8]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[9]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| |
| } |
| |
| } |
| |
| } else |
| { |
| { |
| IkReal j5array[1], cj5array[1], sj5array[1]; |
| bool j5valid[1]={false}; |
| _nj5 = 1; |
| IkReal x2136=((1.0)*new_r00); |
| CheckValue<IkReal> x2137=IKPowWithIntegerCheck(IKsign((((new_r01*new_r10))+(((-1.0)*new_r11*x2136)))),-1); |
| if(!x2137.valid){ |
| continue; |
| } |
| CheckValue<IkReal> x2138 = IKatan2WithCheck(IkReal((((gconst28*new_r10))+((gconst27*new_r11)))),IkReal(((((-1.0)*gconst27*new_r01))+(((-1.0)*gconst28*x2136)))),IKFAST_ATAN2_MAGTHRESH); |
| if(!x2138.valid){ |
| continue; |
| } |
| j5array[0]=((-1.5707963267949)+(((1.5707963267949)*(x2137.value)))+(x2138.value)); |
| sj5array[0]=IKsin(j5array[0]); |
| cj5array[0]=IKcos(j5array[0]); |
| if( j5array[0] > IKPI ) |
| { |
| j5array[0]-=IK2PI; |
| } |
| else if( j5array[0] < -IKPI ) |
| { j5array[0]+=IK2PI; |
| } |
| j5valid[0] = true; |
| for(int ij5 = 0; ij5 < 1; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < 1; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| { |
| IkReal evalcond[10]; |
| IkReal x2139=IKcos(j5); |
| IkReal x2140=IKsin(j5); |
| IkReal x2141=((1.0)*gconst28); |
| IkReal x2142=((1.0000000008)*gconst27); |
| IkReal x2143=(new_r11*x2140); |
| IkReal x2144=((1.0000000008)*x2139); |
| IkReal x2145=((1.0000000008)*x2140); |
| evalcond[0]=(((new_r00*x2140))+((new_r10*x2139))+gconst27); |
| evalcond[1]=(((new_r11*x2139))+((new_r01*x2140))+(((-1.0)*x2141))); |
| evalcond[2]=(((gconst27*x2140))+new_r00+((gconst28*x2144))); |
| evalcond[3]=(((gconst27*x2139))+new_r10+(((-1.0)*gconst28*x2145))); |
| evalcond[4]=((((-1.0)*x2140*x2141))+new_r01+((x2139*x2142))); |
| evalcond[5]=((((-1.0)*x2140*x2142))+new_r11+(((-1.0)*x2139*x2141))); |
| evalcond[6]=((((1.0000000008)*gconst28))+((new_r00*x2139))+(((-1.0)*new_r10*x2140))); |
| evalcond[7]=((((-1.0)*x2143))+x2142+((new_r01*x2139))); |
| evalcond[8]=((((-1.0)*x2141))+(((-1.0)*new_r00*x2144))+((new_r10*x2145))); |
| evalcond[9]=((((-1.0)*new_r01*x2144))+(((1.0000000008)*x2143))+(((-1.0)*gconst27))); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[2]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[3]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[4]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[5]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[6]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[7]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[8]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[9]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| |
| } |
| |
| } |
| |
| } |
| } while(0); |
| if( bgotonextstatement ) |
| { |
| bool bgotonextstatement = true; |
| do |
| { |
| IkReal x2147 = ((((1.0000000016)*(new_r00*new_r00)))+(new_r10*new_r10)); |
| if(IKabs(x2147)==0){ |
| continue; |
| } |
| IkReal x2146=pow(x2147,-0.5); |
| CheckValue<IkReal> x2148 = IKatan2WithCheck(IkReal(new_r10),IkReal(((1.0000000008)*new_r00)),IKFAST_ATAN2_MAGTHRESH); |
| if(!x2148.valid){ |
| continue; |
| } |
| IkReal gconst29=((3.14159265358979)+(((-1.0)*(x2148.value)))); |
| IkReal gconst30=((1.0)*new_r10*x2146); |
| IkReal gconst31=((-1.0000000008)*new_r00*x2146); |
| CheckValue<IkReal> x2149 = IKatan2WithCheck(IkReal(new_r10),IkReal(((1.0000000008)*new_r00)),IKFAST_ATAN2_MAGTHRESH); |
| if(!x2149.valid){ |
| continue; |
| } |
| evalcond[0]=((-3.14159265358979)+(IKfmod(((3.14159265358979)+(IKabs(((-3.14159265358979)+(x2149.value)+j3)))), 6.28318530717959))); |
| if( IKabs(evalcond[0]) < 0.0000050000000000 ) |
| { |
| bgotonextstatement=false; |
| { |
| IkReal j5eval[2]; |
| IkReal x2150=x2146; |
| sj4=-4.0e-5; |
| cj4=-1.0; |
| j4=3.14163265; |
| sj3=gconst30; |
| cj3=gconst31; |
| CheckValue<IkReal> x2151 = IKatan2WithCheck(IkReal(new_r10),IkReal(new_r00),IKFAST_ATAN2_MAGTHRESH); |
| if(!x2151.valid){ |
| continue; |
| } |
| j3=((3.14159265)+(((-1.0)*(x2151.value)))); |
| CheckValue<IkReal> x2152 = IKatan2WithCheck(IkReal(new_r10),IkReal(((1.0000000008)*new_r00)),IKFAST_ATAN2_MAGTHRESH); |
| if(!x2152.valid){ |
| continue; |
| } |
| IkReal gconst29=((3.14159265358979)+(((-1.0)*(x2152.value)))); |
| IkReal gconst30=((1.0)*new_r10*x2150); |
| IkReal gconst31=((-1.0000000008)*new_r00*x2150); |
| IkReal x2153=(((new_r01*new_r10))+(((-1.0)*new_r00*new_r11))); |
| j5eval[0]=x2153; |
| j5eval[1]=IKsign(x2153); |
| if( IKabs(j5eval[0]) < 0.0000010000000000 || IKabs(j5eval[1]) < 0.0000010000000000 ) |
| { |
| { |
| IkReal j5eval[1]; |
| IkReal x2154=x2146; |
| sj4=-4.0e-5; |
| cj4=-1.0; |
| j4=3.14163265; |
| sj3=gconst30; |
| cj3=gconst31; |
| CheckValue<IkReal> x2155 = IKatan2WithCheck(IkReal(new_r10),IkReal(new_r00),IKFAST_ATAN2_MAGTHRESH); |
| if(!x2155.valid){ |
| continue; |
| } |
| j3=((3.14159265)+(((-1.0)*(x2155.value)))); |
| CheckValue<IkReal> x2156 = IKatan2WithCheck(IkReal(new_r10),IkReal(((1.0000000008)*new_r00)),IKFAST_ATAN2_MAGTHRESH); |
| if(!x2156.valid){ |
| continue; |
| } |
| IkReal gconst29=((3.14159265358979)+(((-1.0)*(x2156.value)))); |
| IkReal gconst30=((1.0)*new_r10*x2154); |
| IkReal gconst31=((-1.0000000008)*new_r00*x2154); |
| j5eval[0]=new_r00; |
| if( IKabs(j5eval[0]) < 0.0000010000000000 ) |
| { |
| { |
| IkReal j5eval[2]; |
| IkReal x2157=x2146; |
| sj4=-4.0e-5; |
| cj4=-1.0; |
| j4=3.14163265; |
| sj3=gconst30; |
| cj3=gconst31; |
| CheckValue<IkReal> x2158 = IKatan2WithCheck(IkReal(new_r10),IkReal(new_r00),IKFAST_ATAN2_MAGTHRESH); |
| if(!x2158.valid){ |
| continue; |
| } |
| j3=((3.14159265)+(((-1.0)*(x2158.value)))); |
| CheckValue<IkReal> x2159 = IKatan2WithCheck(IkReal(new_r10),IkReal(((1.0000000008)*new_r00)),IKFAST_ATAN2_MAGTHRESH); |
| if(!x2159.valid){ |
| continue; |
| } |
| IkReal gconst29=((3.14159265358979)+(((-1.0)*(x2159.value)))); |
| IkReal gconst30=((1.0)*new_r10*x2157); |
| IkReal gconst31=((-1.0000000008)*new_r00*x2157); |
| IkReal x2160 = ((((1.0000000016)*(new_r00*new_r00)))+(new_r10*new_r10)); |
| if(IKabs(x2160)==0){ |
| continue; |
| } |
| j5eval[0]=((-1.60000013238459e-9)*new_r00*new_r10*(pow(x2160,-0.5))); |
| j5eval[1]=new_r00; |
| if( IKabs(j5eval[0]) < 0.0000010000000000 || IKabs(j5eval[1]) < 0.0000010000000000 ) |
| { |
| { |
| IkReal evalcond[1]; |
| bool bgotonextstatement = true; |
| do |
| { |
| evalcond[0]=IKabs(new_r00); |
| if( IKabs(evalcond[0]) < 0.0000050000000000 ) |
| { |
| bgotonextstatement=false; |
| { |
| IkReal j5eval[1]; |
| CheckValue<IkReal> x2162 = IKatan2WithCheck(IkReal(new_r10),IkReal(0),IKFAST_ATAN2_MAGTHRESH); |
| if(!x2162.valid){ |
| continue; |
| } |
| IkReal x2161=((1.0)*(x2162.value)); |
| sj4=-4.0e-5; |
| cj4=-1.0; |
| j4=3.14163265; |
| sj3=gconst30; |
| cj3=gconst31; |
| j3=((3.14159265)+(((-1.0)*x2161))); |
| new_r00=0; |
| IkReal gconst29=((3.14159265358979)+(((-1.0)*x2161))); |
| IkReal x2163 = new_r10*new_r10; |
| if(IKabs(x2163)==0){ |
| continue; |
| } |
| IkReal gconst30=((1.0)*new_r10*(pow(x2163,-0.5))); |
| IkReal gconst31=0; |
| j5eval[0]=new_r10; |
| if( IKabs(j5eval[0]) < 0.0000010000000000 ) |
| { |
| { |
| IkReal j5array[1], cj5array[1], sj5array[1]; |
| bool j5valid[1]={false}; |
| _nj5 = 1; |
| CheckValue<IkReal> x2165=IKPowWithIntegerCheck(gconst30,-1); |
| if(!x2165.valid){ |
| continue; |
| } |
| IkReal x2164=x2165.value; |
| if( IKabs(((0.9999999992)*new_r11*x2164)) < IKFAST_ATAN2_MAGTHRESH && IKabs(((-1.0)*new_r10*x2164)) < IKFAST_ATAN2_MAGTHRESH && IKabs(IKsqr(((0.9999999992)*new_r11*x2164))+IKsqr(((-1.0)*new_r10*x2164))-1) <= IKFAST_SINCOS_THRESH ) |
| continue; |
| j5array[0]=IKatan2(((0.9999999992)*new_r11*x2164), ((-1.0)*new_r10*x2164)); |
| sj5array[0]=IKsin(j5array[0]); |
| cj5array[0]=IKcos(j5array[0]); |
| if( j5array[0] > IKPI ) |
| { |
| j5array[0]-=IK2PI; |
| } |
| else if( j5array[0] < -IKPI ) |
| { j5array[0]+=IK2PI; |
| } |
| j5valid[0] = true; |
| for(int ij5 = 0; ij5 < 1; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < 1; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| { |
| IkReal evalcond[10]; |
| IkReal x2166=IKsin(j5); |
| IkReal x2167=IKcos(j5); |
| IkReal x2168=((1.0000000008)*x2166); |
| IkReal x2169=(gconst30*x2167); |
| IkReal x2170=(new_r01*x2167); |
| evalcond[0]=(gconst30*x2166); |
| evalcond[1]=((-1.0)*new_r10*x2166); |
| evalcond[2]=(gconst30+((new_r10*x2167))); |
| evalcond[3]=(x2169+new_r10); |
| evalcond[4]=(new_r10*x2168); |
| evalcond[5]=(((new_r11*x2167))+((new_r01*x2166))); |
| evalcond[6]=((((1.0000000008)*x2169))+new_r01); |
| evalcond[7]=((((-1.0)*gconst30*x2168))+new_r11); |
| evalcond[8]=((((-1.0)*new_r11*x2166))+x2170+(((1.0000000008)*gconst30))); |
| evalcond[9]=((((-1.0000000008)*x2170))+((new_r11*x2168))+(((-1.0)*gconst30))); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[2]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[3]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[4]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[5]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[6]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[7]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[8]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[9]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| |
| } else |
| { |
| { |
| IkReal j5array[1], cj5array[1], sj5array[1]; |
| bool j5valid[1]={false}; |
| _nj5 = 1; |
| CheckValue<IkReal> x2171=IKPowWithIntegerCheck(gconst30,-1); |
| if(!x2171.valid){ |
| continue; |
| } |
| CheckValue<IkReal> x2172=IKPowWithIntegerCheck(new_r10,-1); |
| if(!x2172.valid){ |
| continue; |
| } |
| if( IKabs(((0.9999999992)*new_r11*(x2171.value))) < IKFAST_ATAN2_MAGTHRESH && IKabs(((-1.0)*gconst30*(x2172.value))) < IKFAST_ATAN2_MAGTHRESH && IKabs(IKsqr(((0.9999999992)*new_r11*(x2171.value)))+IKsqr(((-1.0)*gconst30*(x2172.value)))-1) <= IKFAST_SINCOS_THRESH ) |
| continue; |
| j5array[0]=IKatan2(((0.9999999992)*new_r11*(x2171.value)), ((-1.0)*gconst30*(x2172.value))); |
| sj5array[0]=IKsin(j5array[0]); |
| cj5array[0]=IKcos(j5array[0]); |
| if( j5array[0] > IKPI ) |
| { |
| j5array[0]-=IK2PI; |
| } |
| else if( j5array[0] < -IKPI ) |
| { j5array[0]+=IK2PI; |
| } |
| j5valid[0] = true; |
| for(int ij5 = 0; ij5 < 1; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < 1; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| { |
| IkReal evalcond[10]; |
| IkReal x2173=IKsin(j5); |
| IkReal x2174=IKcos(j5); |
| IkReal x2175=((1.0000000008)*x2173); |
| IkReal x2176=(gconst30*x2174); |
| IkReal x2177=(new_r01*x2174); |
| evalcond[0]=(gconst30*x2173); |
| evalcond[1]=((-1.0)*new_r10*x2173); |
| evalcond[2]=(gconst30+((new_r10*x2174))); |
| evalcond[3]=(x2176+new_r10); |
| evalcond[4]=(new_r10*x2175); |
| evalcond[5]=(((new_r11*x2174))+((new_r01*x2173))); |
| evalcond[6]=((((1.0000000008)*x2176))+new_r01); |
| evalcond[7]=((((-1.0)*gconst30*x2175))+new_r11); |
| evalcond[8]=(x2177+(((-1.0)*new_r11*x2173))+(((1.0000000008)*gconst30))); |
| evalcond[9]=(((new_r11*x2175))+(((-1.0000000008)*x2177))+(((-1.0)*gconst30))); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[2]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[3]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[4]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[5]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[6]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[7]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[8]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[9]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| |
| } |
| |
| } |
| |
| } |
| } while(0); |
| if( bgotonextstatement ) |
| { |
| bool bgotonextstatement = true; |
| do |
| { |
| evalcond[0]=((IKabs(new_r11))+(IKabs(new_r01))); |
| if( IKabs(evalcond[0]) < 0.0000050000000000 ) |
| { |
| bgotonextstatement=false; |
| { |
| IkReal j5eval[3]; |
| IkReal x2179 = ((1.0000000016)+(((-1.6e-9)*(new_r10*new_r10)))); |
| if(IKabs(x2179)==0){ |
| continue; |
| } |
| IkReal x2178=pow(x2179,-0.5); |
| sj4=-4.0e-5; |
| cj4=-1.0; |
| j4=3.14163265; |
| sj3=gconst30; |
| cj3=gconst31; |
| CheckValue<IkReal> x2180 = IKatan2WithCheck(IkReal(new_r10),IkReal(new_r00),IKFAST_ATAN2_MAGTHRESH); |
| if(!x2180.valid){ |
| continue; |
| } |
| j3=((3.14159265)+(((-1.0)*(x2180.value)))); |
| new_r11=0; |
| new_r01=0; |
| new_r22=0; |
| new_r20=0; |
| CheckValue<IkReal> x2181 = IKatan2WithCheck(IkReal(new_r10),IkReal(((1.0000000008)*new_r00)),IKFAST_ATAN2_MAGTHRESH); |
| if(!x2181.valid){ |
| continue; |
| } |
| IkReal gconst29=((3.14159265358979)+(((-1.0)*(x2181.value)))); |
| IkReal gconst30=((1.0)*new_r10*x2178); |
| IkReal gconst31=((-1.0000000008)*new_r00*x2178); |
| IkReal x2182=new_r10*new_r10; |
| CheckValue<IkReal> x2186=IKPowWithIntegerCheck(((-3.90625000625e+17)+(((625000000.0)*x2182))),-1); |
| if(!x2186.valid){ |
| continue; |
| } |
| IkReal x2183=x2186.value; |
| if((((625000001.0)+(((-1.0)*x2182)))) < -0.00001) |
| continue; |
| IkReal x2184=IKsqrt(((625000001.0)+(((-1.0)*x2182)))); |
| IkReal x2185=(x2183*x2184); |
| j5eval[0]=1.0; |
| j5eval[1]=1.0; |
| IkReal x2187 = ((1.0000000016)+(((-1.6e-9)*x2182))); |
| if(IKabs(x2187)==0){ |
| continue; |
| } |
| j5eval[2]=((IKabs(((((-3.90625000625e+17)*x2185))+(((7.81250000625e+17)*x2182*x2185)))))+(IKabs(((50000.00004)*new_r00*new_r10*(pow(x2187,-0.5)))))); |
| if( IKabs(j5eval[0]) < 0.0000010000000000 || IKabs(j5eval[1]) < 0.0000010000000000 || IKabs(j5eval[2]) < 0.0000010000000000 ) |
| { |
| { |
| IkReal j5eval[1]; |
| IkReal x2189 = ((1.0000000016)+(((-1.6e-9)*(new_r10*new_r10)))); |
| if(IKabs(x2189)==0){ |
| continue; |
| } |
| IkReal x2188=pow(x2189,-0.5); |
| sj4=-4.0e-5; |
| cj4=-1.0; |
| j4=3.14163265; |
| sj3=gconst30; |
| cj3=gconst31; |
| CheckValue<IkReal> x2190 = IKatan2WithCheck(IkReal(new_r10),IkReal(new_r00),IKFAST_ATAN2_MAGTHRESH); |
| if(!x2190.valid){ |
| continue; |
| } |
| j3=((3.14159265)+(((-1.0)*(x2190.value)))); |
| new_r11=0; |
| new_r01=0; |
| new_r22=0; |
| new_r20=0; |
| CheckValue<IkReal> x2191 = IKatan2WithCheck(IkReal(new_r10),IkReal(((1.0000000008)*new_r00)),IKFAST_ATAN2_MAGTHRESH); |
| if(!x2191.valid){ |
| continue; |
| } |
| IkReal gconst29=((3.14159265358979)+(((-1.0)*(x2191.value)))); |
| IkReal gconst30=((1.0)*new_r10*x2188); |
| IkReal gconst31=((-1.0000000008)*new_r00*x2188); |
| IkReal x2192=new_r10*new_r10; |
| CheckValue<IkReal> x2194=IKPowWithIntegerCheck(((1.0000000016)+(((-1.6e-9)*x2192))),-1); |
| if(!x2194.valid){ |
| continue; |
| } |
| IkReal x2193=x2194.value; |
| IkReal x2195=((1.0)+(((-1.0)*x2192))); |
| j5eval[0]=IKsign(((((-625000001.0)*x2193*(x2195*x2195)))+(((625000001.0)*x2193*(x2192*x2192))))); |
| if( IKabs(j5eval[0]) < 0.0000010000000000 ) |
| { |
| { |
| IkReal j5eval[1]; |
| IkReal x2197 = ((1.0000000016)+(((-1.6e-9)*(new_r10*new_r10)))); |
| if(IKabs(x2197)==0){ |
| continue; |
| } |
| IkReal x2196=pow(x2197,-0.5); |
| sj4=-4.0e-5; |
| cj4=-1.0; |
| j4=3.14163265; |
| sj3=gconst30; |
| cj3=gconst31; |
| CheckValue<IkReal> x2198 = IKatan2WithCheck(IkReal(new_r10),IkReal(new_r00),IKFAST_ATAN2_MAGTHRESH); |
| if(!x2198.valid){ |
| continue; |
| } |
| j3=((3.14159265)+(((-1.0)*(x2198.value)))); |
| new_r11=0; |
| new_r01=0; |
| new_r22=0; |
| new_r20=0; |
| CheckValue<IkReal> x2199 = IKatan2WithCheck(IkReal(new_r10),IkReal(((1.0000000008)*new_r00)),IKFAST_ATAN2_MAGTHRESH); |
| if(!x2199.valid){ |
| continue; |
| } |
| IkReal gconst29=((3.14159265358979)+(((-1.0)*(x2199.value)))); |
| IkReal gconst30=((1.0)*new_r10*x2196); |
| IkReal gconst31=((-1.0000000008)*new_r00*x2196); |
| j5eval[0]=new_r00; |
| if( IKabs(j5eval[0]) < 0.0000010000000000 ) |
| { |
| continue; // 3 cases reached |
| |
| } else |
| { |
| { |
| IkReal j5array[1], cj5array[1], sj5array[1]; |
| bool j5valid[1]={false}; |
| _nj5 = 1; |
| CheckValue<IkReal> x2206=IKPowWithIntegerCheck(new_r00,-1); |
| if(!x2206.valid){ |
| continue; |
| } |
| IkReal x2200=x2206.value; |
| IkReal x2201=gconst30*gconst30; |
| IkReal x2202=((25000.0)*new_r10); |
| IkReal x2203=((25000.0)*x2201); |
| CheckValue<IkReal> x2207=IKPowWithIntegerCheck(((((-1.0)*gconst30*x2202))+(((25000.00002)*gconst31*new_r00))),-1); |
| if(!x2207.valid){ |
| continue; |
| } |
| IkReal x2204=x2207.value; |
| IkReal x2205=(new_r10*x2204); |
| CheckValue<IkReal> x2208=IKPowWithIntegerCheck(((((-25000.0)*gconst30*new_r10))+(((25000.00002)*gconst31*new_r00))),-1); |
| if(!x2208.valid){ |
| continue; |
| } |
| CheckValue<IkReal> x2209=IKPowWithIntegerCheck(((((-25000.0)*gconst30*new_r10))+(((25000.00002)*gconst31*new_r00))),-1); |
| if(!x2209.valid){ |
| continue; |
| } |
| CheckValue<IkReal> x2210=IKPowWithIntegerCheck(x2200,-2); |
| if(!x2210.valid){ |
| continue; |
| } |
| if( IKabs(((((-1.0)*gconst30*x2200))+((new_r00*x2202*(x2208.value)))+(((-1.0)*x2200*x2201*x2202*(x2209.value))))) < IKFAST_ATAN2_MAGTHRESH && IKabs((x2204*((x2203+(((-25000.0)*(x2210.value))))))) < IKFAST_ATAN2_MAGTHRESH && IKabs(IKsqr(((((-1.0)*gconst30*x2200))+((new_r00*x2202*(x2208.value)))+(((-1.0)*x2200*x2201*x2202*(x2209.value)))))+IKsqr((x2204*((x2203+(((-25000.0)*(x2210.value)))))))-1) <= IKFAST_SINCOS_THRESH ) |
| continue; |
| j5array[0]=IKatan2(((((-1.0)*gconst30*x2200))+((new_r00*x2202*(x2208.value)))+(((-1.0)*x2200*x2201*x2202*(x2209.value)))), (x2204*((x2203+(((-25000.0)*(x2210.value))))))); |
| sj5array[0]=IKsin(j5array[0]); |
| cj5array[0]=IKcos(j5array[0]); |
| if( j5array[0] > IKPI ) |
| { |
| j5array[0]-=IK2PI; |
| } |
| else if( j5array[0] < -IKPI ) |
| { j5array[0]+=IK2PI; |
| } |
| j5valid[0] = true; |
| for(int ij5 = 0; ij5 < 1; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < 1; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| { |
| IkReal evalcond[7]; |
| IkReal x2211=IKsin(j5); |
| IkReal x2212=IKcos(j5); |
| IkReal x2213=((1.0)*gconst31); |
| IkReal x2214=((1.0000000008)*x2212); |
| IkReal x2215=((1.0000000008)*x2211); |
| evalcond[0]=(gconst30+((new_r00*x2211))+((new_r10*x2212))); |
| evalcond[1]=(((gconst31*x2214))+((gconst30*x2211))+new_r00); |
| evalcond[2]=(((gconst30*x2212))+(((-1.0)*gconst31*x2215))+new_r10); |
| evalcond[3]=(((gconst30*x2214))+(((-1.0)*x2211*x2213))); |
| evalcond[4]=((((-1.0)*gconst30*x2215))+(((-1.0)*x2212*x2213))); |
| evalcond[5]=((((-1.0)*new_r10*x2211))+((new_r00*x2212))+(((1.0000000008)*gconst31))); |
| evalcond[6]=((((-1.0)*x2213))+((new_r10*x2215))+(((-1.0)*new_r00*x2214))); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[2]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[3]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[4]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[5]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[6]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| |
| } |
| |
| } |
| |
| } else |
| { |
| { |
| IkReal j5array[1], cj5array[1], sj5array[1]; |
| bool j5valid[1]={false}; |
| _nj5 = 1; |
| IkReal x2216=gconst30*gconst30; |
| IkReal x2217=gconst31*gconst31; |
| IkReal x2218=((625000000.0)*x2217); |
| IkReal x2219=((625000000.5)*gconst31*x2216); |
| CheckValue<IkReal> x2220=IKPowWithIntegerCheck(IKsign(((((625000001.0)*x2216*(new_r10*new_r10)))+(((-1.0)*x2218*(new_r00*new_r00))))),-1); |
| if(!x2220.valid){ |
| continue; |
| } |
| CheckValue<IkReal> x2221 = IKatan2WithCheck(IkReal((((gconst30*new_r00*x2218))+((new_r10*x2219)))),IkReal(((((-625000001.0)*new_r10*(gconst30*gconst30*gconst30)))+(((-1.0)*new_r00*x2219)))),IKFAST_ATAN2_MAGTHRESH); |
| if(!x2221.valid){ |
| continue; |
| } |
| j5array[0]=((-1.5707963267949)+(((1.5707963267949)*(x2220.value)))+(x2221.value)); |
| sj5array[0]=IKsin(j5array[0]); |
| cj5array[0]=IKcos(j5array[0]); |
| if( j5array[0] > IKPI ) |
| { |
| j5array[0]-=IK2PI; |
| } |
| else if( j5array[0] < -IKPI ) |
| { j5array[0]+=IK2PI; |
| } |
| j5valid[0] = true; |
| for(int ij5 = 0; ij5 < 1; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < 1; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| { |
| IkReal evalcond[7]; |
| IkReal x2222=IKsin(j5); |
| IkReal x2223=IKcos(j5); |
| IkReal x2224=((1.0)*gconst31); |
| IkReal x2225=((1.0000000008)*x2223); |
| IkReal x2226=((1.0000000008)*x2222); |
| evalcond[0]=(((new_r00*x2222))+((new_r10*x2223))+gconst30); |
| evalcond[1]=(((gconst30*x2222))+((gconst31*x2225))+new_r00); |
| evalcond[2]=(((gconst30*x2223))+(((-1.0)*gconst31*x2226))+new_r10); |
| evalcond[3]=((((-1.0)*x2222*x2224))+((gconst30*x2225))); |
| evalcond[4]=((((-1.0)*x2223*x2224))+(((-1.0)*gconst30*x2226))); |
| evalcond[5]=(((new_r00*x2223))+(((1.0000000008)*gconst31))+(((-1.0)*new_r10*x2222))); |
| evalcond[6]=((((-1.0)*new_r00*x2225))+((new_r10*x2226))+(((-1.0)*x2224))); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[2]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[3]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[4]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[5]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[6]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| |
| } |
| |
| } |
| |
| } else |
| { |
| { |
| IkReal j5array[1], cj5array[1], sj5array[1]; |
| bool j5valid[1]={false}; |
| _nj5 = 1; |
| IkReal x2227=((25000.0)*gconst30); |
| IkReal x2228=((25000.00002)*gconst31); |
| CheckValue<IkReal> x2229 = IKatan2WithCheck(IkReal(((((-1.0)*new_r00*x2227))+((new_r10*x2228)))),IkReal(((((-1.0)*new_r00*x2228))+(((-1.0)*new_r10*x2227)))),IKFAST_ATAN2_MAGTHRESH); |
| if(!x2229.valid){ |
| continue; |
| } |
| CheckValue<IkReal> x2230=IKPowWithIntegerCheck(IKsign(((((25000.0)*(new_r10*new_r10)))+(((25000.0)*(new_r00*new_r00))))),-1); |
| if(!x2230.valid){ |
| continue; |
| } |
| j5array[0]=((-1.5707963267949)+(x2229.value)+(((1.5707963267949)*(x2230.value)))); |
| sj5array[0]=IKsin(j5array[0]); |
| cj5array[0]=IKcos(j5array[0]); |
| if( j5array[0] > IKPI ) |
| { |
| j5array[0]-=IK2PI; |
| } |
| else if( j5array[0] < -IKPI ) |
| { j5array[0]+=IK2PI; |
| } |
| j5valid[0] = true; |
| for(int ij5 = 0; ij5 < 1; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < 1; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| { |
| IkReal evalcond[7]; |
| IkReal x2231=IKsin(j5); |
| IkReal x2232=IKcos(j5); |
| IkReal x2233=((1.0)*gconst31); |
| IkReal x2234=((1.0000000008)*x2232); |
| IkReal x2235=((1.0000000008)*x2231); |
| evalcond[0]=(((new_r00*x2231))+((new_r10*x2232))+gconst30); |
| evalcond[1]=(((gconst31*x2234))+((gconst30*x2231))+new_r00); |
| evalcond[2]=(((gconst30*x2232))+(((-1.0)*gconst31*x2235))+new_r10); |
| evalcond[3]=(((gconst30*x2234))+(((-1.0)*x2231*x2233))); |
| evalcond[4]=((((-1.0)*x2232*x2233))+(((-1.0)*gconst30*x2235))); |
| evalcond[5]=(((new_r00*x2232))+(((1.0000000008)*gconst31))+(((-1.0)*new_r10*x2231))); |
| evalcond[6]=((((-1.0)*new_r00*x2234))+((new_r10*x2235))+(((-1.0)*x2233))); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[2]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[3]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[4]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[5]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[6]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| |
| } |
| |
| } |
| |
| } |
| } while(0); |
| if( bgotonextstatement ) |
| { |
| bool bgotonextstatement = true; |
| do |
| { |
| evalcond[0]=((IKabs(new_r11))+(IKabs(new_r10))); |
| if( IKabs(evalcond[0]) < 0.0000050000000000 ) |
| { |
| bgotonextstatement=false; |
| { |
| IkReal j5array[1], cj5array[1], sj5array[1]; |
| bool j5valid[1]={false}; |
| _nj5 = 1; |
| CheckValue<IkReal> x2237=IKPowWithIntegerCheck(gconst31,-1); |
| if(!x2237.valid){ |
| continue; |
| } |
| IkReal x2236=x2237.value; |
| if( IKabs((new_r01*x2236)) < IKFAST_ATAN2_MAGTHRESH && IKabs(((-0.9999999992)*new_r00*x2236)) < IKFAST_ATAN2_MAGTHRESH && IKabs(IKsqr((new_r01*x2236))+IKsqr(((-0.9999999992)*new_r00*x2236))-1) <= IKFAST_SINCOS_THRESH ) |
| continue; |
| j5array[0]=IKatan2((new_r01*x2236), ((-0.9999999992)*new_r00*x2236)); |
| sj5array[0]=IKsin(j5array[0]); |
| cj5array[0]=IKcos(j5array[0]); |
| if( j5array[0] > IKPI ) |
| { |
| j5array[0]-=IK2PI; |
| } |
| else if( j5array[0] < -IKPI ) |
| { j5array[0]+=IK2PI; |
| } |
| j5valid[0] = true; |
| for(int ij5 = 0; ij5 < 1; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < 1; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| { |
| IkReal evalcond[10]; |
| IkReal x2238=IKcos(j5); |
| IkReal x2239=IKsin(j5); |
| IkReal x2240=((1.0)*gconst31); |
| IkReal x2241=((1.0000000008)*gconst31); |
| IkReal x2242=(new_r00*x2238); |
| IkReal x2243=(new_r01*x2238); |
| evalcond[0]=(new_r00*x2239); |
| evalcond[1]=x2243; |
| evalcond[2]=((-1.0)*gconst31*x2238); |
| evalcond[3]=((((-1.0)*x2239*x2240))+new_r01); |
| evalcond[4]=(((new_r01*x2239))+(((-1.0)*x2240))); |
| evalcond[5]=((-1.0000000008)*gconst31*x2239); |
| evalcond[6]=((-1.0000000008)*x2243); |
| evalcond[7]=(new_r00+((x2238*x2241))); |
| evalcond[8]=(x2241+x2242); |
| evalcond[9]=((((-1.0000000008)*x2242))+(((-1.0)*x2240))); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[2]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[3]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[4]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[5]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[6]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[7]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[8]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[9]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| |
| } |
| } while(0); |
| if( bgotonextstatement ) |
| { |
| bool bgotonextstatement = true; |
| do |
| { |
| if( 1 ) |
| { |
| bgotonextstatement=false; |
| continue; // branch miss [j5] |
| |
| } |
| } while(0); |
| if( bgotonextstatement ) |
| { |
| } |
| } |
| } |
| } |
| } |
| |
| } else |
| { |
| { |
| IkReal j5array[1], cj5array[1], sj5array[1]; |
| bool j5valid[1]={false}; |
| _nj5 = 1; |
| CheckValue<IkReal> x2249=IKPowWithIntegerCheck(new_r00,-1); |
| if(!x2249.valid){ |
| continue; |
| } |
| IkReal x2244=x2249.value; |
| IkReal x2245=((25000.00002)*gconst31); |
| IkReal x2246=((25000.0)*new_r00); |
| IkReal x2247=(gconst30*x2244); |
| CheckValue<IkReal> x2250=IKPowWithIntegerCheck((((new_r10*x2245))+((gconst30*x2246))),-1); |
| if(!x2250.valid){ |
| continue; |
| } |
| IkReal x2248=x2250.value; |
| if( IKabs(((((-1.0)*x2247))+((new_r10*x2245*x2247*x2248))+(((25000.0)*x2248*(new_r10*new_r10))))) < IKFAST_ATAN2_MAGTHRESH && IKabs((x2248*(((((-1.0)*new_r10*x2246))+(((-1.0)*gconst30*x2245)))))) < IKFAST_ATAN2_MAGTHRESH && IKabs(IKsqr(((((-1.0)*x2247))+((new_r10*x2245*x2247*x2248))+(((25000.0)*x2248*(new_r10*new_r10)))))+IKsqr((x2248*(((((-1.0)*new_r10*x2246))+(((-1.0)*gconst30*x2245))))))-1) <= IKFAST_SINCOS_THRESH ) |
| continue; |
| j5array[0]=IKatan2(((((-1.0)*x2247))+((new_r10*x2245*x2247*x2248))+(((25000.0)*x2248*(new_r10*new_r10)))), (x2248*(((((-1.0)*new_r10*x2246))+(((-1.0)*gconst30*x2245)))))); |
| sj5array[0]=IKsin(j5array[0]); |
| cj5array[0]=IKcos(j5array[0]); |
| if( j5array[0] > IKPI ) |
| { |
| j5array[0]-=IK2PI; |
| } |
| else if( j5array[0] < -IKPI ) |
| { j5array[0]+=IK2PI; |
| } |
| j5valid[0] = true; |
| for(int ij5 = 0; ij5 < 1; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < 1; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| { |
| IkReal evalcond[10]; |
| IkReal x2251=IKcos(j5); |
| IkReal x2252=IKsin(j5); |
| IkReal x2253=((1.0)*gconst31); |
| IkReal x2254=((1.0000000008)*gconst31); |
| IkReal x2255=(gconst30*x2252); |
| IkReal x2256=(gconst30*x2251); |
| IkReal x2257=(new_r11*x2252); |
| IkReal x2258=(new_r01*x2251); |
| IkReal x2259=(new_r00*x2251); |
| IkReal x2260=(new_r10*x2252); |
| evalcond[0]=(((new_r00*x2252))+gconst30+((new_r10*x2251))); |
| evalcond[1]=((((-1.0)*x2253))+((new_r11*x2251))+((new_r01*x2252))); |
| evalcond[2]=(x2255+new_r00+((x2251*x2254))); |
| evalcond[3]=(x2256+(((-1.0)*x2252*x2254))+new_r10); |
| evalcond[4]=((((-1.0)*x2252*x2253))+new_r01+(((1.0000000008)*x2256))); |
| evalcond[5]=((((-1.0000000008)*x2255))+new_r11+(((-1.0)*x2251*x2253))); |
| evalcond[6]=(x2259+x2254+(((-1.0)*x2260))); |
| evalcond[7]=(x2258+(((-1.0)*x2257))+(((1.0000000008)*gconst30))); |
| evalcond[8]=((((1.0000000008)*x2260))+(((-1.0000000008)*x2259))+(((-1.0)*x2253))); |
| evalcond[9]=((((-1.0000000008)*x2258))+(((-1.0)*gconst30))+(((1.0000000008)*x2257))); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[2]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[3]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[4]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[5]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[6]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[7]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[8]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[9]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| |
| } |
| |
| } |
| |
| } else |
| { |
| { |
| IkReal j5array[1], cj5array[1], sj5array[1]; |
| bool j5valid[1]={false}; |
| _nj5 = 1; |
| CheckValue<IkReal> x2267=IKPowWithIntegerCheck(new_r00,-1); |
| if(!x2267.valid){ |
| continue; |
| } |
| IkReal x2261=x2267.value; |
| IkReal x2262=gconst30*gconst30; |
| IkReal x2263=((25000.0)*new_r10); |
| IkReal x2264=((25000.0)*x2262); |
| CheckValue<IkReal> x2268=IKPowWithIntegerCheck(((((-1.0)*gconst30*x2263))+(((25000.00002)*gconst31*new_r00))),-1); |
| if(!x2268.valid){ |
| continue; |
| } |
| IkReal x2265=x2268.value; |
| IkReal x2266=(new_r10*x2265); |
| CheckValue<IkReal> x2269=IKPowWithIntegerCheck(((((-25000.0)*gconst30*new_r10))+(((25000.00002)*gconst31*new_r00))),-1); |
| if(!x2269.valid){ |
| continue; |
| } |
| CheckValue<IkReal> x2270=IKPowWithIntegerCheck(((((-25000.0)*gconst30*new_r10))+(((25000.00002)*gconst31*new_r00))),-1); |
| if(!x2270.valid){ |
| continue; |
| } |
| CheckValue<IkReal> x2271=IKPowWithIntegerCheck(x2261,-2); |
| if(!x2271.valid){ |
| continue; |
| } |
| if( IKabs(((((-1.0)*x2261*x2262*x2263*(x2269.value)))+((new_r00*x2263*(x2270.value)))+(((-1.0)*gconst30*x2261)))) < IKFAST_ATAN2_MAGTHRESH && IKabs((x2265*((x2264+(((-25000.0)*(x2271.value))))))) < IKFAST_ATAN2_MAGTHRESH && IKabs(IKsqr(((((-1.0)*x2261*x2262*x2263*(x2269.value)))+((new_r00*x2263*(x2270.value)))+(((-1.0)*gconst30*x2261))))+IKsqr((x2265*((x2264+(((-25000.0)*(x2271.value)))))))-1) <= IKFAST_SINCOS_THRESH ) |
| continue; |
| j5array[0]=IKatan2(((((-1.0)*x2261*x2262*x2263*(x2269.value)))+((new_r00*x2263*(x2270.value)))+(((-1.0)*gconst30*x2261))), (x2265*((x2264+(((-25000.0)*(x2271.value))))))); |
| sj5array[0]=IKsin(j5array[0]); |
| cj5array[0]=IKcos(j5array[0]); |
| if( j5array[0] > IKPI ) |
| { |
| j5array[0]-=IK2PI; |
| } |
| else if( j5array[0] < -IKPI ) |
| { j5array[0]+=IK2PI; |
| } |
| j5valid[0] = true; |
| for(int ij5 = 0; ij5 < 1; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < 1; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| { |
| IkReal evalcond[10]; |
| IkReal x2272=IKcos(j5); |
| IkReal x2273=IKsin(j5); |
| IkReal x2274=((1.0)*gconst31); |
| IkReal x2275=((1.0000000008)*gconst31); |
| IkReal x2276=(gconst30*x2273); |
| IkReal x2277=(gconst30*x2272); |
| IkReal x2278=(new_r11*x2273); |
| IkReal x2279=(new_r01*x2272); |
| IkReal x2280=(new_r00*x2272); |
| IkReal x2281=(new_r10*x2273); |
| evalcond[0]=(((new_r10*x2272))+((new_r00*x2273))+gconst30); |
| evalcond[1]=(((new_r11*x2272))+((new_r01*x2273))+(((-1.0)*x2274))); |
| evalcond[2]=(x2276+((x2272*x2275))+new_r00); |
| evalcond[3]=(x2277+(((-1.0)*x2273*x2275))+new_r10); |
| evalcond[4]=((((-1.0)*x2273*x2274))+(((1.0000000008)*x2277))+new_r01); |
| evalcond[5]=((((-1.0000000008)*x2276))+new_r11+(((-1.0)*x2272*x2274))); |
| evalcond[6]=(x2280+x2275+(((-1.0)*x2281))); |
| evalcond[7]=(x2279+(((1.0000000008)*gconst30))+(((-1.0)*x2278))); |
| evalcond[8]=((((-1.0000000008)*x2280))+(((-1.0)*x2274))+(((1.0000000008)*x2281))); |
| evalcond[9]=((((1.0000000008)*x2278))+(((-1.0000000008)*x2279))+(((-1.0)*gconst30))); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[2]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[3]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[4]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[5]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[6]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[7]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[8]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[9]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| |
| } |
| |
| } |
| |
| } else |
| { |
| { |
| IkReal j5array[1], cj5array[1], sj5array[1]; |
| bool j5valid[1]={false}; |
| _nj5 = 1; |
| IkReal x2282=((1.0)*new_r00); |
| CheckValue<IkReal> x2283 = IKatan2WithCheck(IkReal((((gconst30*new_r11))+((gconst31*new_r10)))),IkReal(((((-1.0)*gconst30*new_r01))+(((-1.0)*gconst31*x2282)))),IKFAST_ATAN2_MAGTHRESH); |
| if(!x2283.valid){ |
| continue; |
| } |
| CheckValue<IkReal> x2284=IKPowWithIntegerCheck(IKsign((((new_r01*new_r10))+(((-1.0)*new_r11*x2282)))),-1); |
| if(!x2284.valid){ |
| continue; |
| } |
| j5array[0]=((-1.5707963267949)+(x2283.value)+(((1.5707963267949)*(x2284.value)))); |
| sj5array[0]=IKsin(j5array[0]); |
| cj5array[0]=IKcos(j5array[0]); |
| if( j5array[0] > IKPI ) |
| { |
| j5array[0]-=IK2PI; |
| } |
| else if( j5array[0] < -IKPI ) |
| { j5array[0]+=IK2PI; |
| } |
| j5valid[0] = true; |
| for(int ij5 = 0; ij5 < 1; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < 1; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| { |
| IkReal evalcond[10]; |
| IkReal x2285=IKcos(j5); |
| IkReal x2286=IKsin(j5); |
| IkReal x2287=((1.0)*gconst31); |
| IkReal x2288=((1.0000000008)*gconst31); |
| IkReal x2289=(gconst30*x2286); |
| IkReal x2290=(gconst30*x2285); |
| IkReal x2291=(new_r11*x2286); |
| IkReal x2292=(new_r01*x2285); |
| IkReal x2293=(new_r00*x2285); |
| IkReal x2294=(new_r10*x2286); |
| evalcond[0]=(gconst30+((new_r10*x2285))+((new_r00*x2286))); |
| evalcond[1]=((((-1.0)*x2287))+((new_r11*x2285))+((new_r01*x2286))); |
| evalcond[2]=(x2289+new_r00+((x2285*x2288))); |
| evalcond[3]=(x2290+(((-1.0)*x2286*x2288))+new_r10); |
| evalcond[4]=((((-1.0)*x2286*x2287))+new_r01+(((1.0000000008)*x2290))); |
| evalcond[5]=((((-1.0000000008)*x2289))+(((-1.0)*x2285*x2287))+new_r11); |
| evalcond[6]=(x2288+x2293+(((-1.0)*x2294))); |
| evalcond[7]=(x2292+(((-1.0)*x2291))+(((1.0000000008)*gconst30))); |
| evalcond[8]=((((-1.0000000008)*x2293))+(((-1.0)*x2287))+(((1.0000000008)*x2294))); |
| evalcond[9]=((((-1.0000000008)*x2292))+(((-1.0)*gconst30))+(((1.0000000008)*x2291))); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[2]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[3]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[4]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[5]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[6]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[7]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[8]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[9]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| |
| } |
| |
| } |
| |
| } |
| } while(0); |
| if( bgotonextstatement ) |
| { |
| bool bgotonextstatement = true; |
| do |
| { |
| evalcond[0]=((IKabs(new_r11))+(IKabs(new_r01))); |
| if( IKabs(evalcond[0]) < 0.0000050000000000 ) |
| { |
| bgotonextstatement=false; |
| { |
| IkReal j5eval[1]; |
| sj4=-4.0e-5; |
| cj4=-1.0; |
| j4=3.14163265; |
| new_r11=0; |
| new_r01=0; |
| new_r22=0; |
| new_r20=0; |
| j5eval[0]=((IKabs(new_r10))+(IKabs(new_r00))); |
| if( IKabs(j5eval[0]) < 0.0000010000000000 ) |
| { |
| { |
| IkReal j5eval[1]; |
| sj4=-4.0e-5; |
| cj4=-1.0; |
| j4=3.14163265; |
| new_r11=0; |
| new_r01=0; |
| new_r22=0; |
| new_r20=0; |
| j5eval[0]=1.0; |
| if( IKabs(j5eval[0]) < 0.0000010000000000 ) |
| { |
| continue; // no branches [j5] |
| |
| } else |
| { |
| { |
| IkReal j5array[2], cj5array[2], sj5array[2]; |
| bool j5valid[2]={false}; |
| _nj5 = 2; |
| CheckValue<IkReal> x2296 = IKatan2WithCheck(IkReal(((-1.0000000008)*new_r00)),IkReal(((1.0000000008)*new_r10)),IKFAST_ATAN2_MAGTHRESH); |
| if(!x2296.valid){ |
| continue; |
| } |
| IkReal x2295=x2296.value; |
| j5array[0]=((-1.0)*x2295); |
| sj5array[0]=IKsin(j5array[0]); |
| cj5array[0]=IKcos(j5array[0]); |
| j5array[1]=((3.14159265358979)+(((-1.0)*x2295))); |
| sj5array[1]=IKsin(j5array[1]); |
| cj5array[1]=IKcos(j5array[1]); |
| if( j5array[0] > IKPI ) |
| { |
| j5array[0]-=IK2PI; |
| } |
| else if( j5array[0] < -IKPI ) |
| { j5array[0]+=IK2PI; |
| } |
| j5valid[0] = true; |
| if( j5array[1] > IKPI ) |
| { |
| j5array[1]-=IK2PI; |
| } |
| else if( j5array[1] < -IKPI ) |
| { j5array[1]+=IK2PI; |
| } |
| j5valid[1] = true; |
| for(int ij5 = 0; ij5 < 2; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < 2; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| { |
| IkReal evalcond[2]; |
| IkReal x2297=IKcos(j5); |
| IkReal x2298=IKsin(j5); |
| evalcond[0]=(((new_r00*x2298))+((new_r10*x2297))); |
| evalcond[1]=(((new_r00*x2297))+(((-1.0)*new_r10*x2298))); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| |
| } |
| |
| } |
| |
| } else |
| { |
| { |
| IkReal j5array[2], cj5array[2], sj5array[2]; |
| bool j5valid[2]={false}; |
| _nj5 = 2; |
| CheckValue<IkReal> x2300 = IKatan2WithCheck(IkReal(new_r10),IkReal(new_r00),IKFAST_ATAN2_MAGTHRESH); |
| if(!x2300.valid){ |
| continue; |
| } |
| IkReal x2299=x2300.value; |
| j5array[0]=((-1.0)*x2299); |
| sj5array[0]=IKsin(j5array[0]); |
| cj5array[0]=IKcos(j5array[0]); |
| j5array[1]=((3.14159265358979)+(((-1.0)*x2299))); |
| sj5array[1]=IKsin(j5array[1]); |
| cj5array[1]=IKcos(j5array[1]); |
| if( j5array[0] > IKPI ) |
| { |
| j5array[0]-=IK2PI; |
| } |
| else if( j5array[0] < -IKPI ) |
| { j5array[0]+=IK2PI; |
| } |
| j5valid[0] = true; |
| if( j5array[1] > IKPI ) |
| { |
| j5array[1]-=IK2PI; |
| } |
| else if( j5array[1] < -IKPI ) |
| { j5array[1]+=IK2PI; |
| } |
| j5valid[1] = true; |
| for(int ij5 = 0; ij5 < 2; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < 2; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| { |
| IkReal evalcond[2]; |
| IkReal x2301=IKsin(j5); |
| IkReal x2302=IKcos(j5); |
| IkReal x2303=(new_r00*x2302); |
| IkReal x2304=(new_r10*x2301); |
| evalcond[0]=((((-1.0)*x2304))+x2303); |
| evalcond[1]=((((1.0000000008)*x2304))+(((-1.0000000008)*x2303))); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| |
| } |
| |
| } |
| |
| } |
| } while(0); |
| if( bgotonextstatement ) |
| { |
| bool bgotonextstatement = true; |
| do |
| { |
| evalcond[0]=((IKabs(new_r11))+(IKabs(new_r10))); |
| if( IKabs(evalcond[0]) < 0.0000050000000000 ) |
| { |
| bgotonextstatement=false; |
| { |
| IkReal j5eval[1]; |
| sj4=-4.0e-5; |
| cj4=-1.0; |
| j4=3.14163265; |
| new_r11=0; |
| new_r10=0; |
| new_r22=0; |
| new_r02=0; |
| j5eval[0]=new_r00; |
| if( IKabs(j5eval[0]) < 0.0000010000000000 ) |
| { |
| { |
| IkReal j5eval[2]; |
| sj4=-4.0e-5; |
| cj4=-1.0; |
| j4=3.14163265; |
| new_r11=0; |
| new_r10=0; |
| new_r22=0; |
| new_r02=0; |
| j5eval[0]=new_r00; |
| j5eval[1]=new_r01; |
| if( IKabs(j5eval[0]) < 0.0000010000000000 || IKabs(j5eval[1]) < 0.0000010000000000 ) |
| { |
| continue; // no branches [j5] |
| |
| } else |
| { |
| { |
| IkReal j5array[1], cj5array[1], sj5array[1]; |
| bool j5valid[1]={false}; |
| _nj5 = 1; |
| CheckValue<IkReal> x2305=IKPowWithIntegerCheck(new_r00,-1); |
| if(!x2305.valid){ |
| continue; |
| } |
| CheckValue<IkReal> x2306=IKPowWithIntegerCheck(new_r01,-1); |
| if(!x2306.valid){ |
| continue; |
| } |
| if( IKabs(((-1.0)*sj3*(x2305.value))) < IKFAST_ATAN2_MAGTHRESH && IKabs(((-1.0000000008)*sj3*(x2306.value))) < IKFAST_ATAN2_MAGTHRESH && IKabs(IKsqr(((-1.0)*sj3*(x2305.value)))+IKsqr(((-1.0000000008)*sj3*(x2306.value)))-1) <= IKFAST_SINCOS_THRESH ) |
| continue; |
| j5array[0]=IKatan2(((-1.0)*sj3*(x2305.value)), ((-1.0000000008)*sj3*(x2306.value))); |
| sj5array[0]=IKsin(j5array[0]); |
| cj5array[0]=IKcos(j5array[0]); |
| if( j5array[0] > IKPI ) |
| { |
| j5array[0]-=IK2PI; |
| } |
| else if( j5array[0] < -IKPI ) |
| { j5array[0]+=IK2PI; |
| } |
| j5valid[0] = true; |
| for(int ij5 = 0; ij5 < 1; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < 1; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| { |
| IkReal evalcond[10]; |
| IkReal x2307=IKsin(j5); |
| IkReal x2308=IKcos(j5); |
| IkReal x2309=((1.0)*cj3); |
| IkReal x2310=((1.0000000008)*cj3); |
| IkReal x2311=((1.0000000008)*sj3); |
| IkReal x2312=(new_r00*x2308); |
| IkReal x2313=(sj3*x2308); |
| IkReal x2314=(new_r01*x2308); |
| evalcond[0]=(((new_r00*x2307))+sj3); |
| evalcond[1]=((((-1.0)*x2309))+((new_r01*x2307))); |
| evalcond[2]=(x2312+x2310); |
| evalcond[3]=(x2314+x2311); |
| evalcond[4]=((((-1.0000000008)*x2312))+(((-1.0)*x2309))); |
| evalcond[5]=((((-1.0)*sj3))+(((-1.0000000008)*x2314))); |
| evalcond[6]=(x2313+(((-1.0)*x2307*x2310))); |
| evalcond[7]=(((x2308*x2310))+((sj3*x2307))+new_r00); |
| evalcond[8]=((((-1.0)*x2308*x2309))+(((-1.0)*x2307*x2311))); |
| evalcond[9]=(((x2308*x2311))+new_r01+(((-1.0)*x2307*x2309))); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[2]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[3]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[4]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[5]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[6]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[7]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[8]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[9]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| |
| } |
| |
| } |
| |
| } else |
| { |
| { |
| IkReal j5array[1], cj5array[1], sj5array[1]; |
| bool j5valid[1]={false}; |
| _nj5 = 1; |
| CheckValue<IkReal> x2316=IKPowWithIntegerCheck(new_r00,-1); |
| if(!x2316.valid){ |
| continue; |
| } |
| IkReal x2315=x2316.value; |
| if( IKabs(((-1.0)*sj3*x2315)) < IKFAST_ATAN2_MAGTHRESH && IKabs(((-1.0000000008)*cj3*x2315)) < IKFAST_ATAN2_MAGTHRESH && IKabs(IKsqr(((-1.0)*sj3*x2315))+IKsqr(((-1.0000000008)*cj3*x2315))-1) <= IKFAST_SINCOS_THRESH ) |
| continue; |
| j5array[0]=IKatan2(((-1.0)*sj3*x2315), ((-1.0000000008)*cj3*x2315)); |
| sj5array[0]=IKsin(j5array[0]); |
| cj5array[0]=IKcos(j5array[0]); |
| if( j5array[0] > IKPI ) |
| { |
| j5array[0]-=IK2PI; |
| } |
| else if( j5array[0] < -IKPI ) |
| { j5array[0]+=IK2PI; |
| } |
| j5valid[0] = true; |
| for(int ij5 = 0; ij5 < 1; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < 1; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| { |
| IkReal evalcond[10]; |
| IkReal x2317=IKsin(j5); |
| IkReal x2318=IKcos(j5); |
| IkReal x2319=((1.0)*cj3); |
| IkReal x2320=((1.0000000008)*cj3); |
| IkReal x2321=((1.0000000008)*sj3); |
| IkReal x2322=(new_r00*x2318); |
| IkReal x2323=(sj3*x2318); |
| IkReal x2324=(new_r01*x2318); |
| evalcond[0]=(sj3+((new_r00*x2317))); |
| evalcond[1]=(((new_r01*x2317))+(((-1.0)*x2319))); |
| evalcond[2]=(x2322+x2320); |
| evalcond[3]=(x2321+x2324); |
| evalcond[4]=((((-1.0000000008)*x2322))+(((-1.0)*x2319))); |
| evalcond[5]=((((-1.0)*sj3))+(((-1.0000000008)*x2324))); |
| evalcond[6]=(x2323+(((-1.0)*x2317*x2320))); |
| evalcond[7]=(((sj3*x2317))+((x2318*x2320))+new_r00); |
| evalcond[8]=((((-1.0)*x2318*x2319))+(((-1.0)*x2317*x2321))); |
| evalcond[9]=(((x2318*x2321))+(((-1.0)*x2317*x2319))+new_r01); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[2]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[3]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[4]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[5]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[6]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[7]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[8]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[9]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| |
| } |
| |
| } |
| |
| } |
| } while(0); |
| if( bgotonextstatement ) |
| { |
| bool bgotonextstatement = true; |
| do |
| { |
| evalcond[0]=((IKabs(new_r00))+(IKabs(new_r01))); |
| if( IKabs(evalcond[0]) < 0.0000050000000000 ) |
| { |
| bgotonextstatement=false; |
| { |
| IkReal j5eval[1]; |
| sj4=-4.0e-5; |
| cj4=-1.0; |
| j4=3.14163265; |
| new_r00=0; |
| new_r01=0; |
| new_r12=0; |
| new_r22=0; |
| j5eval[0]=new_r10; |
| if( IKabs(j5eval[0]) < 0.0000010000000000 ) |
| { |
| { |
| IkReal j5eval[2]; |
| sj4=-4.0e-5; |
| cj4=-1.0; |
| j4=3.14163265; |
| new_r00=0; |
| new_r01=0; |
| new_r12=0; |
| new_r22=0; |
| j5eval[0]=new_r11; |
| j5eval[1]=new_r10; |
| if( IKabs(j5eval[0]) < 0.0000010000000000 || IKabs(j5eval[1]) < 0.0000010000000000 ) |
| { |
| continue; // no branches [j5] |
| |
| } else |
| { |
| { |
| IkReal j5array[1], cj5array[1], sj5array[1]; |
| bool j5valid[1]={false}; |
| _nj5 = 1; |
| CheckValue<IkReal> x2325=IKPowWithIntegerCheck(new_r11,-1); |
| if(!x2325.valid){ |
| continue; |
| } |
| CheckValue<IkReal> x2326=IKPowWithIntegerCheck(new_r10,-1); |
| if(!x2326.valid){ |
| continue; |
| } |
| if( IKabs(((1.0000000008)*sj3*(x2325.value))) < IKFAST_ATAN2_MAGTHRESH && IKabs(((-1.0)*sj3*(x2326.value))) < IKFAST_ATAN2_MAGTHRESH && IKabs(IKsqr(((1.0000000008)*sj3*(x2325.value)))+IKsqr(((-1.0)*sj3*(x2326.value)))-1) <= IKFAST_SINCOS_THRESH ) |
| continue; |
| j5array[0]=IKatan2(((1.0000000008)*sj3*(x2325.value)), ((-1.0)*sj3*(x2326.value))); |
| sj5array[0]=IKsin(j5array[0]); |
| cj5array[0]=IKcos(j5array[0]); |
| if( j5array[0] > IKPI ) |
| { |
| j5array[0]-=IK2PI; |
| } |
| else if( j5array[0] < -IKPI ) |
| { j5array[0]+=IK2PI; |
| } |
| j5valid[0] = true; |
| for(int ij5 = 0; ij5 < 1; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < 1; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| { |
| IkReal evalcond[10]; |
| IkReal x2327=IKcos(j5); |
| IkReal x2328=IKsin(j5); |
| IkReal x2329=((1.0)*cj3); |
| IkReal x2330=((1.0000000008)*cj3); |
| IkReal x2331=((1.0000000008)*sj3); |
| IkReal x2332=(sj3*x2327); |
| IkReal x2333=(new_r10*x2328); |
| IkReal x2334=(new_r11*x2328); |
| evalcond[0]=(sj3+((new_r10*x2327))); |
| evalcond[1]=(((new_r11*x2327))+(((-1.0)*x2329))); |
| evalcond[2]=(x2330+(((-1.0)*x2333))); |
| evalcond[3]=(x2331+(((-1.0)*x2334))); |
| evalcond[4]=((((1.0000000008)*x2333))+(((-1.0)*x2329))); |
| evalcond[5]=((((-1.0)*sj3))+(((1.0000000008)*x2334))); |
| evalcond[6]=(((sj3*x2328))+((x2327*x2330))); |
| evalcond[7]=((((-1.0)*x2328*x2330))+x2332+new_r10); |
| evalcond[8]=((((-1.0)*x2328*x2329))+((x2327*x2331))); |
| evalcond[9]=((((-1.0)*x2328*x2331))+(((-1.0)*x2327*x2329))+new_r11); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[2]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[3]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[4]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[5]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[6]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[7]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[8]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[9]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| |
| } |
| |
| } |
| |
| } else |
| { |
| { |
| IkReal j5array[1], cj5array[1], sj5array[1]; |
| bool j5valid[1]={false}; |
| _nj5 = 1; |
| CheckValue<IkReal> x2336=IKPowWithIntegerCheck(new_r10,-1); |
| if(!x2336.valid){ |
| continue; |
| } |
| IkReal x2335=x2336.value; |
| if( IKabs(((1.0000000008)*cj3*x2335)) < IKFAST_ATAN2_MAGTHRESH && IKabs(((-1.0)*sj3*x2335)) < IKFAST_ATAN2_MAGTHRESH && IKabs(IKsqr(((1.0000000008)*cj3*x2335))+IKsqr(((-1.0)*sj3*x2335))-1) <= IKFAST_SINCOS_THRESH ) |
| continue; |
| j5array[0]=IKatan2(((1.0000000008)*cj3*x2335), ((-1.0)*sj3*x2335)); |
| sj5array[0]=IKsin(j5array[0]); |
| cj5array[0]=IKcos(j5array[0]); |
| if( j5array[0] > IKPI ) |
| { |
| j5array[0]-=IK2PI; |
| } |
| else if( j5array[0] < -IKPI ) |
| { j5array[0]+=IK2PI; |
| } |
| j5valid[0] = true; |
| for(int ij5 = 0; ij5 < 1; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < 1; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| { |
| IkReal evalcond[10]; |
| IkReal x2337=IKcos(j5); |
| IkReal x2338=IKsin(j5); |
| IkReal x2339=((1.0)*cj3); |
| IkReal x2340=((1.0000000008)*cj3); |
| IkReal x2341=((1.0000000008)*sj3); |
| IkReal x2342=(sj3*x2337); |
| IkReal x2343=(new_r10*x2338); |
| IkReal x2344=(new_r11*x2338); |
| evalcond[0]=(sj3+((new_r10*x2337))); |
| evalcond[1]=((((-1.0)*x2339))+((new_r11*x2337))); |
| evalcond[2]=(x2340+(((-1.0)*x2343))); |
| evalcond[3]=(x2341+(((-1.0)*x2344))); |
| evalcond[4]=((((-1.0)*x2339))+(((1.0000000008)*x2343))); |
| evalcond[5]=((((-1.0)*sj3))+(((1.0000000008)*x2344))); |
| evalcond[6]=(((sj3*x2338))+((x2337*x2340))); |
| evalcond[7]=(x2342+new_r10+(((-1.0)*x2338*x2340))); |
| evalcond[8]=((((-1.0)*x2338*x2339))+((x2337*x2341))); |
| evalcond[9]=((((-1.0)*x2337*x2339))+new_r11+(((-1.0)*x2338*x2341))); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[2]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[3]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[4]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[5]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[6]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[7]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[8]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[9]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| |
| } |
| |
| } |
| |
| } |
| } while(0); |
| if( bgotonextstatement ) |
| { |
| bool bgotonextstatement = true; |
| do |
| { |
| evalcond[0]=((IKabs(new_r10))+(IKabs(new_r00))); |
| if( IKabs(evalcond[0]) < 0.0000050000000000 ) |
| { |
| bgotonextstatement=false; |
| { |
| IkReal j5eval[1]; |
| sj4=-4.0e-5; |
| cj4=-1.0; |
| j4=3.14163265; |
| new_r00=0; |
| new_r10=0; |
| new_r21=0; |
| new_r22=0; |
| j5eval[0]=((IKabs(new_r11))+(IKabs(new_r01))); |
| if( IKabs(j5eval[0]) < 0.0000010000000000 ) |
| { |
| { |
| IkReal j5eval[1]; |
| sj4=-4.0e-5; |
| cj4=-1.0; |
| j4=3.14163265; |
| new_r00=0; |
| new_r10=0; |
| new_r21=0; |
| new_r22=0; |
| j5eval[0]=1.0; |
| if( IKabs(j5eval[0]) < 0.0000010000000000 ) |
| { |
| continue; // no branches [j5] |
| |
| } else |
| { |
| { |
| IkReal j5array[2], cj5array[2], sj5array[2]; |
| bool j5valid[2]={false}; |
| _nj5 = 2; |
| CheckValue<IkReal> x2346 = IKatan2WithCheck(IkReal(((-1.0000000008)*new_r01)),IkReal(((1.0000000008)*new_r11)),IKFAST_ATAN2_MAGTHRESH); |
| if(!x2346.valid){ |
| continue; |
| } |
| IkReal x2345=x2346.value; |
| j5array[0]=((-1.0)*x2345); |
| sj5array[0]=IKsin(j5array[0]); |
| cj5array[0]=IKcos(j5array[0]); |
| j5array[1]=((3.14159265358979)+(((-1.0)*x2345))); |
| sj5array[1]=IKsin(j5array[1]); |
| cj5array[1]=IKcos(j5array[1]); |
| if( j5array[0] > IKPI ) |
| { |
| j5array[0]-=IK2PI; |
| } |
| else if( j5array[0] < -IKPI ) |
| { j5array[0]+=IK2PI; |
| } |
| j5valid[0] = true; |
| if( j5array[1] > IKPI ) |
| { |
| j5array[1]-=IK2PI; |
| } |
| else if( j5array[1] < -IKPI ) |
| { j5array[1]+=IK2PI; |
| } |
| j5valid[1] = true; |
| for(int ij5 = 0; ij5 < 2; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < 2; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| { |
| IkReal evalcond[2]; |
| IkReal x2347=IKcos(j5); |
| IkReal x2348=IKsin(j5); |
| evalcond[0]=(((new_r11*x2347))+((new_r01*x2348))); |
| evalcond[1]=((((-1.0)*new_r11*x2348))+((new_r01*x2347))); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| |
| } |
| |
| } |
| |
| } else |
| { |
| { |
| IkReal j5array[2], cj5array[2], sj5array[2]; |
| bool j5valid[2]={false}; |
| _nj5 = 2; |
| CheckValue<IkReal> x2350 = IKatan2WithCheck(IkReal(new_r11),IkReal(new_r01),IKFAST_ATAN2_MAGTHRESH); |
| if(!x2350.valid){ |
| continue; |
| } |
| IkReal x2349=x2350.value; |
| j5array[0]=((-1.0)*x2349); |
| sj5array[0]=IKsin(j5array[0]); |
| cj5array[0]=IKcos(j5array[0]); |
| j5array[1]=((3.14159265358979)+(((-1.0)*x2349))); |
| sj5array[1]=IKsin(j5array[1]); |
| cj5array[1]=IKcos(j5array[1]); |
| if( j5array[0] > IKPI ) |
| { |
| j5array[0]-=IK2PI; |
| } |
| else if( j5array[0] < -IKPI ) |
| { j5array[0]+=IK2PI; |
| } |
| j5valid[0] = true; |
| if( j5array[1] > IKPI ) |
| { |
| j5array[1]-=IK2PI; |
| } |
| else if( j5array[1] < -IKPI ) |
| { j5array[1]+=IK2PI; |
| } |
| j5valid[1] = true; |
| for(int ij5 = 0; ij5 < 2; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < 2; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| { |
| IkReal evalcond[2]; |
| IkReal x2351=IKsin(j5); |
| IkReal x2352=IKcos(j5); |
| IkReal x2353=(new_r11*x2351); |
| IkReal x2354=(new_r01*x2352); |
| evalcond[0]=(x2354+(((-1.0)*x2353))); |
| evalcond[1]=((((-1.0000000008)*x2354))+(((1.0000000008)*x2353))); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| |
| } |
| |
| } |
| |
| } |
| } while(0); |
| if( bgotonextstatement ) |
| { |
| bool bgotonextstatement = true; |
| do |
| { |
| if( 1 ) |
| { |
| bgotonextstatement=false; |
| continue; // branch miss [j5] |
| |
| } |
| } while(0); |
| if( bgotonextstatement ) |
| { |
| } |
| } |
| } |
| } |
| } |
| } |
| } |
| } |
| } |
| } |
| |
| } else |
| { |
| { |
| IkReal j5array[1], cj5array[1], sj5array[1]; |
| bool j5valid[1]={false}; |
| _nj5 = 1; |
| CheckValue<IkReal> x2360=IKPowWithIntegerCheck(new_r00,-1); |
| if(!x2360.valid){ |
| continue; |
| } |
| IkReal x2355=x2360.value; |
| IkReal x2356=(sj3*x2355); |
| IkReal x2357=((25000.0)*new_r00); |
| IkReal x2358=((25000.00002)*cj3*new_r10); |
| CheckValue<IkReal> x2361=IKPowWithIntegerCheck((x2358+((sj3*x2357))),-1); |
| if(!x2361.valid){ |
| continue; |
| } |
| IkReal x2359=x2361.value; |
| if( IKabs((((x2356*x2358*x2359))+(((25000.0)*x2359*(new_r10*new_r10)))+(((-1.0)*x2356)))) < IKFAST_ATAN2_MAGTHRESH && IKabs((x2359*(((((-1.0)*new_r10*x2357))+(((-25000.00002)*cj3*sj3)))))) < IKFAST_ATAN2_MAGTHRESH && IKabs(IKsqr((((x2356*x2358*x2359))+(((25000.0)*x2359*(new_r10*new_r10)))+(((-1.0)*x2356))))+IKsqr((x2359*(((((-1.0)*new_r10*x2357))+(((-25000.00002)*cj3*sj3))))))-1) <= IKFAST_SINCOS_THRESH ) |
| continue; |
| j5array[0]=IKatan2((((x2356*x2358*x2359))+(((25000.0)*x2359*(new_r10*new_r10)))+(((-1.0)*x2356))), (x2359*(((((-1.0)*new_r10*x2357))+(((-25000.00002)*cj3*sj3)))))); |
| sj5array[0]=IKsin(j5array[0]); |
| cj5array[0]=IKcos(j5array[0]); |
| if( j5array[0] > IKPI ) |
| { |
| j5array[0]-=IK2PI; |
| } |
| else if( j5array[0] < -IKPI ) |
| { j5array[0]+=IK2PI; |
| } |
| j5valid[0] = true; |
| for(int ij5 = 0; ij5 < 1; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < 1; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| { |
| IkReal evalcond[10]; |
| IkReal x2362=IKcos(j5); |
| IkReal x2363=IKsin(j5); |
| IkReal x2364=((1.0)*cj3); |
| IkReal x2365=((1.0000000008)*cj3); |
| IkReal x2366=(cj3*x2362); |
| IkReal x2367=(new_r11*x2363); |
| IkReal x2368=(sj3*x2363); |
| IkReal x2369=(new_r01*x2362); |
| IkReal x2370=(new_r00*x2362); |
| IkReal x2371=(sj3*x2362); |
| IkReal x2372=(new_r10*x2363); |
| evalcond[0]=(((new_r00*x2363))+sj3+((new_r10*x2362))); |
| evalcond[1]=(((new_r01*x2363))+(((-1.0)*x2364))+((new_r11*x2362))); |
| evalcond[2]=(x2368+((x2362*x2365))+new_r00); |
| evalcond[3]=(x2371+new_r10+(((-1.0)*x2363*x2365))); |
| evalcond[4]=((((1.0000000008)*x2371))+new_r01+(((-1.0)*x2363*x2364))); |
| evalcond[5]=((((-1.0000000008)*x2368))+new_r11+(((-1.0)*x2362*x2364))); |
| evalcond[6]=(x2370+x2365+(((-1.0)*x2372))); |
| evalcond[7]=(x2369+(((-1.0)*x2367))+(((1.0000000008)*sj3))); |
| evalcond[8]=((((-1.0000000008)*x2370))+(((1.0000000008)*x2372))+(((-1.0)*x2364))); |
| evalcond[9]=((((-1.0000000008)*x2369))+(((-1.0)*sj3))+(((1.0000000008)*x2367))); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[2]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[3]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[4]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[5]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[6]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[7]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[8]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[9]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| |
| } |
| |
| } |
| |
| } else |
| { |
| { |
| IkReal j5array[1], cj5array[1], sj5array[1]; |
| bool j5valid[1]={false}; |
| _nj5 = 1; |
| CheckValue<IkReal> x2379=IKPowWithIntegerCheck(new_r00,-1); |
| if(!x2379.valid){ |
| continue; |
| } |
| IkReal x2373=x2379.value; |
| IkReal x2374=((25000.0)*cj3); |
| IkReal x2375=((25000.0)*new_r01); |
| IkReal x2376=(sj3*x2373); |
| CheckValue<IkReal> x2380=IKPowWithIntegerCheck((((new_r10*x2374))+(((25000.00002)*new_r00*sj3))),-1); |
| if(!x2380.valid){ |
| continue; |
| } |
| IkReal x2377=x2380.value; |
| IkReal x2378=(new_r10*x2377); |
| if( IKabs((((x2375*x2378))+((x2374*x2376*x2378))+(((-1.0)*x2376)))) < IKFAST_ATAN2_MAGTHRESH && IKabs((x2377*(((((-1.0)*new_r00*x2375))+(((-1.0)*sj3*x2374)))))) < IKFAST_ATAN2_MAGTHRESH && IKabs(IKsqr((((x2375*x2378))+((x2374*x2376*x2378))+(((-1.0)*x2376))))+IKsqr((x2377*(((((-1.0)*new_r00*x2375))+(((-1.0)*sj3*x2374))))))-1) <= IKFAST_SINCOS_THRESH ) |
| continue; |
| j5array[0]=IKatan2((((x2375*x2378))+((x2374*x2376*x2378))+(((-1.0)*x2376))), (x2377*(((((-1.0)*new_r00*x2375))+(((-1.0)*sj3*x2374)))))); |
| sj5array[0]=IKsin(j5array[0]); |
| cj5array[0]=IKcos(j5array[0]); |
| if( j5array[0] > IKPI ) |
| { |
| j5array[0]-=IK2PI; |
| } |
| else if( j5array[0] < -IKPI ) |
| { j5array[0]+=IK2PI; |
| } |
| j5valid[0] = true; |
| for(int ij5 = 0; ij5 < 1; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < 1; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| { |
| IkReal evalcond[10]; |
| IkReal x2381=IKcos(j5); |
| IkReal x2382=IKsin(j5); |
| IkReal x2383=((1.0)*cj3); |
| IkReal x2384=((1.0000000008)*cj3); |
| IkReal x2385=(cj3*x2381); |
| IkReal x2386=(new_r11*x2382); |
| IkReal x2387=(sj3*x2382); |
| IkReal x2388=(new_r01*x2381); |
| IkReal x2389=(new_r00*x2381); |
| IkReal x2390=(sj3*x2381); |
| IkReal x2391=(new_r10*x2382); |
| evalcond[0]=(((new_r10*x2381))+sj3+((new_r00*x2382))); |
| evalcond[1]=(((new_r11*x2381))+((new_r01*x2382))+(((-1.0)*x2383))); |
| evalcond[2]=(((x2381*x2384))+x2387+new_r00); |
| evalcond[3]=(x2390+(((-1.0)*x2382*x2384))+new_r10); |
| evalcond[4]=((((-1.0)*x2382*x2383))+(((1.0000000008)*x2390))+new_r01); |
| evalcond[5]=((((-1.0)*x2381*x2383))+(((-1.0000000008)*x2387))+new_r11); |
| evalcond[6]=(x2384+x2389+(((-1.0)*x2391))); |
| evalcond[7]=(x2388+(((-1.0)*x2386))+(((1.0000000008)*sj3))); |
| evalcond[8]=((((-1.0)*x2383))+(((1.0000000008)*x2391))+(((-1.0000000008)*x2389))); |
| evalcond[9]=((((-1.0)*sj3))+(((1.0000000008)*x2386))+(((-1.0000000008)*x2388))); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[2]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[3]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[4]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[5]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[6]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[7]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[8]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[9]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| |
| } |
| |
| } |
| |
| } else |
| { |
| { |
| IkReal j5array[1], cj5array[1], sj5array[1]; |
| bool j5valid[1]={false}; |
| _nj5 = 1; |
| IkReal x2392=((1.0)*new_r00); |
| CheckValue<IkReal> x2393 = IKatan2WithCheck(IkReal((((new_r11*sj3))+((cj3*new_r10)))),IkReal(((((-1.0)*new_r01*sj3))+(((-1.0)*cj3*x2392)))),IKFAST_ATAN2_MAGTHRESH); |
| if(!x2393.valid){ |
| continue; |
| } |
| CheckValue<IkReal> x2394=IKPowWithIntegerCheck(IKsign(((((-1.0)*new_r11*x2392))+((new_r01*new_r10)))),-1); |
| if(!x2394.valid){ |
| continue; |
| } |
| j5array[0]=((-1.5707963267949)+(x2393.value)+(((1.5707963267949)*(x2394.value)))); |
| sj5array[0]=IKsin(j5array[0]); |
| cj5array[0]=IKcos(j5array[0]); |
| if( j5array[0] > IKPI ) |
| { |
| j5array[0]-=IK2PI; |
| } |
| else if( j5array[0] < -IKPI ) |
| { j5array[0]+=IK2PI; |
| } |
| j5valid[0] = true; |
| for(int ij5 = 0; ij5 < 1; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < 1; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| { |
| IkReal evalcond[10]; |
| IkReal x2395=IKcos(j5); |
| IkReal x2396=IKsin(j5); |
| IkReal x2397=((1.0)*cj3); |
| IkReal x2398=((1.0000000008)*cj3); |
| IkReal x2399=(cj3*x2395); |
| IkReal x2400=(new_r11*x2396); |
| IkReal x2401=(sj3*x2396); |
| IkReal x2402=(new_r01*x2395); |
| IkReal x2403=(new_r00*x2395); |
| IkReal x2404=(sj3*x2395); |
| IkReal x2405=(new_r10*x2396); |
| evalcond[0]=(((new_r10*x2395))+sj3+((new_r00*x2396))); |
| evalcond[1]=(((new_r11*x2395))+((new_r01*x2396))+(((-1.0)*x2397))); |
| evalcond[2]=(x2401+new_r00+((x2395*x2398))); |
| evalcond[3]=(x2404+(((-1.0)*x2396*x2398))+new_r10); |
| evalcond[4]=((((-1.0)*x2396*x2397))+(((1.0000000008)*x2404))+new_r01); |
| evalcond[5]=((((-1.0000000008)*x2401))+new_r11+(((-1.0)*x2395*x2397))); |
| evalcond[6]=((((-1.0)*x2405))+x2403+x2398); |
| evalcond[7]=((((-1.0)*x2400))+x2402+(((1.0000000008)*sj3))); |
| evalcond[8]=((((-1.0000000008)*x2403))+(((1.0000000008)*x2405))+(((-1.0)*x2397))); |
| evalcond[9]=((((-1.0)*sj3))+(((-1.0000000008)*x2402))+(((1.0000000008)*x2400))); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[2]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[3]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[4]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[5]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[6]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[7]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[8]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[9]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| |
| } |
| |
| } |
| |
| } |
| } while(0); |
| if( bgotonextstatement ) |
| { |
| bool bgotonextstatement = true; |
| do |
| { |
| evalcond[0]=((-3.14159265358979)+(IKfmod(((3.14159265358979)+(IKabs(((-1.5707963267949)+j3)))), 6.28318530717959))); |
| evalcond[1]=new_r20; |
| if( IKabs(evalcond[0]) < 0.0000050000000000 && IKabs(evalcond[1]) < 0.0000050000000000 ) |
| { |
| bgotonextstatement=false; |
| { |
| IkReal j5array[1], cj5array[1], sj5array[1]; |
| bool j5valid[1]={false}; |
| _nj5 = 1; |
| if( IKabs(((-1.0)*new_r00)) < IKFAST_ATAN2_MAGTHRESH && IKabs(((-1.0)*new_r10)) < IKFAST_ATAN2_MAGTHRESH && IKabs(IKsqr(((-1.0)*new_r00))+IKsqr(((-1.0)*new_r10))-1) <= IKFAST_SINCOS_THRESH ) |
| continue; |
| j5array[0]=IKatan2(((-1.0)*new_r00), ((-1.0)*new_r10)); |
| sj5array[0]=IKsin(j5array[0]); |
| cj5array[0]=IKcos(j5array[0]); |
| if( j5array[0] > IKPI ) |
| { |
| j5array[0]-=IK2PI; |
| } |
| else if( j5array[0] < -IKPI ) |
| { j5array[0]+=IK2PI; |
| } |
| j5valid[0] = true; |
| for(int ij5 = 0; ij5 < 1; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < 1; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| { |
| IkReal evalcond[18]; |
| IkReal x2406=IKsin(j5); |
| IkReal x2407=IKcos(j5); |
| IkReal x2408=((0.9999999992)*cj4); |
| IkReal x2409=((4.0e-5)*new_r22); |
| IkReal x2410=((1.0000000008)*sj4); |
| IkReal x2411=((3.9999999968e-5)*sj4); |
| IkReal x2412=((3.9999999968e-5)*cj4); |
| IkReal x2413=((0.9999999992)*sj4); |
| IkReal x2414=((1.0)*new_r22); |
| IkReal x2415=(new_r22*x2413); |
| IkReal x2416=(new_r22*x2412); |
| IkReal x2417=(new_r22*x2411); |
| IkReal x2418=(new_r12*x2406); |
| IkReal x2419=(new_r02*x2407); |
| IkReal x2420=(new_r01*x2407); |
| IkReal x2421=(new_r00*x2407); |
| IkReal x2422=(new_r11*x2406); |
| IkReal x2423=(new_r10*x2406); |
| evalcond[0]=(x2406+new_r00); |
| evalcond[1]=(x2407+new_r10); |
| evalcond[2]=(((new_r22*x2406))+new_r11); |
| evalcond[3]=((((-1.0)*x2407*x2414))+new_r01); |
| evalcond[4]=(((new_r12*x2407))+((new_r02*x2406))); |
| evalcond[5]=(((new_r01*x2406))+((new_r11*x2407))); |
| evalcond[6]=((1.0)+((new_r00*x2406))+((new_r10*x2407))); |
| evalcond[7]=(x2421+(((-1.0)*x2423))); |
| evalcond[8]=(((new_r22*x2421))+(((-1.0)*x2414*x2423))); |
| evalcond[9]=(x2420+(((-1.0)*x2414))+(((-1.0)*x2422))); |
| evalcond[10]=((((-1.0)*x2407*x2409))+((x2407*x2410))+new_r02); |
| evalcond[11]=((((-1.0)*x2406*x2410))+new_r12+((x2406*x2409))); |
| evalcond[12]=(x2410+x2419+(((-1.0)*x2409))+(((-1.0)*x2418))); |
| evalcond[13]=((((-1.0)*x2409*x2423))+(((-1.0)*x2410*x2421))+((x2409*x2421))+((x2410*x2423))); |
| evalcond[14]=((-1.0)+(((-4.0e-5)*cj4*sj4))+(((1.59999999872e-9)*cj4*new_r22))+(sj4*sj4)+((new_r22*x2420))+(((-1.0)*x2417))+(((-1.0)*x2414*x2422))); |
| evalcond[15]=((((-1.0)*x2409*x2422))+x2415+(((-1.0)*x2410*x2420))+((x2409*x2420))+(((-1.0)*x2416))+((x2410*x2422))); |
| evalcond[16]=(x2415+(((-1.0)*x2408*x2418))+((x2408*x2419))+(((-1.0)*x2411*x2418))+(((-1.0)*x2416))+((x2411*x2419))); |
| evalcond[17]=((-1.0)+x2417+((new_r22*x2408))+((x2413*x2418))+(((-1.0)*x2412*x2418))+(((-1.0)*x2413*x2419))+((x2412*x2419))); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[2]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[3]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[4]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[5]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[6]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[7]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[8]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[9]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[10]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[11]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[12]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[13]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[14]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[15]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[16]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[17]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| |
| } |
| } while(0); |
| if( bgotonextstatement ) |
| { |
| bool bgotonextstatement = true; |
| do |
| { |
| evalcond[0]=((-3.14159265358979)+(IKfmod(((3.14159265358979)+(IKabs(((1.5707963267949)+j3)))), 6.28318530717959))); |
| evalcond[1]=new_r20; |
| if( IKabs(evalcond[0]) < 0.0000050000000000 && IKabs(evalcond[1]) < 0.0000050000000000 ) |
| { |
| bgotonextstatement=false; |
| { |
| IkReal j5array[1], cj5array[1], sj5array[1]; |
| bool j5valid[1]={false}; |
| _nj5 = 1; |
| if( IKabs(new_r00) < IKFAST_ATAN2_MAGTHRESH && IKabs(new_r10) < IKFAST_ATAN2_MAGTHRESH && IKabs(IKsqr(new_r00)+IKsqr(new_r10)-1) <= IKFAST_SINCOS_THRESH ) |
| continue; |
| j5array[0]=IKatan2(new_r00, new_r10); |
| sj5array[0]=IKsin(j5array[0]); |
| cj5array[0]=IKcos(j5array[0]); |
| if( j5array[0] > IKPI ) |
| { |
| j5array[0]-=IK2PI; |
| } |
| else if( j5array[0] < -IKPI ) |
| { j5array[0]+=IK2PI; |
| } |
| j5valid[0] = true; |
| for(int ij5 = 0; ij5 < 1; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < 1; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| { |
| IkReal evalcond[18]; |
| IkReal x2424=IKcos(j5); |
| IkReal x2425=IKsin(j5); |
| IkReal x2426=((0.9999999992)*cj4); |
| IkReal x2427=((3.9999999968e-5)*cj4); |
| IkReal x2428=((3.9999999968e-5)*sj4); |
| IkReal x2429=((0.9999999992)*sj4); |
| IkReal x2430=(new_r12*x2425); |
| IkReal x2431=(new_r02*x2424); |
| IkReal x2432=(new_r01*x2424); |
| IkReal x2433=(new_r11*x2425); |
| IkReal x2434=(new_r10*x2425); |
| IkReal x2435=(new_r00*x2424); |
| evalcond[0]=((((-1.0)*x2425))+new_r00); |
| evalcond[1]=((((-1.0)*x2424))+new_r10); |
| evalcond[2]=(((new_r12*x2424))+((new_r02*x2425))); |
| evalcond[3]=(((new_r11*x2424))+((new_r01*x2425))); |
| evalcond[4]=((-1.0)+((new_r10*x2424))+((new_r00*x2425))); |
| evalcond[5]=((((-1.0)*x2434))+x2435); |
| evalcond[6]=((((-1.0)*x2424*x2427))+((x2424*x2429))+new_r02); |
| evalcond[7]=((((-1.0)*x2425*x2429))+((x2425*x2427))+new_r12); |
| evalcond[8]=(((x2424*x2426))+((x2424*x2428))+new_r01); |
| evalcond[9]=((((-1.0)*x2425*x2428))+(((-1.0)*x2425*x2426))+new_r11); |
| evalcond[10]=((((-1.0)*x2430))+x2431+x2429+(((-1.0)*x2427))); |
| evalcond[11]=((((-1.0)*x2433))+x2432+x2428+x2426); |
| evalcond[12]=(((x2429*x2434))+(((-1.0)*x2427*x2434))+(((-1.0)*x2429*x2435))+((x2427*x2435))); |
| evalcond[13]=(((x2428*x2435))+(((-1.0)*x2426*x2434))+(((-1.0)*x2428*x2434))+((x2426*x2435))); |
| evalcond[14]=(((x2429*x2433))+((new_r21*x2426))+((new_r21*x2428))+(((-1.0)*x2427*x2433))+(((-1.0)*x2429*x2432))+((x2427*x2432))); |
| evalcond[15]=(((x2428*x2431))+(((-1.0)*x2426*x2430))+((new_r22*x2429))+(((-1.0)*x2428*x2430))+((x2426*x2431))+(((-1.0)*new_r22*x2427))); |
| evalcond[16]=((-1.0)+((x2429*x2430))+(((-1.0)*x2427*x2430))+((new_r22*x2426))+((new_r22*x2428))+(((-1.0)*x2429*x2431))+((x2427*x2431))); |
| evalcond[17]=((1.0)+((x2428*x2432))+((new_r21*x2429))+(((-1.0)*x2426*x2433))+(((-1.0)*new_r21*x2427))+(((-1.0)*x2428*x2433))+((x2426*x2432))); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[2]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[3]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[4]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[5]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[6]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[7]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[8]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[9]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[10]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[11]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[12]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[13]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[14]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[15]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[16]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[17]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| |
| } |
| } while(0); |
| if( bgotonextstatement ) |
| { |
| bool bgotonextstatement = true; |
| do |
| { |
| evalcond[0]=((-3.14159265358979)+(IKfmod(((3.14159265358979)+(IKabs(j3))), 6.28318530717959))); |
| evalcond[1]=new_r21; |
| if( IKabs(evalcond[0]) < 0.0000050000000000 && IKabs(evalcond[1]) < 0.0000050000000000 ) |
| { |
| bgotonextstatement=false; |
| { |
| IkReal j5array[1], cj5array[1], sj5array[1]; |
| bool j5valid[1]={false}; |
| _nj5 = 1; |
| if( IKabs(new_r01) < IKFAST_ATAN2_MAGTHRESH && IKabs(new_r11) < IKFAST_ATAN2_MAGTHRESH && IKabs(IKsqr(new_r01)+IKsqr(new_r11)-1) <= IKFAST_SINCOS_THRESH ) |
| continue; |
| j5array[0]=IKatan2(new_r01, new_r11); |
| sj5array[0]=IKsin(j5array[0]); |
| cj5array[0]=IKcos(j5array[0]); |
| if( j5array[0] > IKPI ) |
| { |
| j5array[0]-=IK2PI; |
| } |
| else if( j5array[0] < -IKPI ) |
| { j5array[0]+=IK2PI; |
| } |
| j5valid[0] = true; |
| for(int ij5 = 0; ij5 < 1; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < 1; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| { |
| IkReal evalcond[18]; |
| IkReal x2436=IKsin(j5); |
| IkReal x2437=IKcos(j5); |
| IkReal x2438=((0.9999999992)*cj4); |
| IkReal x2439=((0.9999999992)*sj4); |
| IkReal x2440=((4.0e-5)*new_r22); |
| IkReal x2441=((3.9999999968e-5)*sj4); |
| IkReal x2442=((3.9999999968e-5)*cj4); |
| IkReal x2443=((1.0000000008)*sj4); |
| IkReal x2444=((1.0)*new_r22); |
| IkReal x2445=(new_r12*x2436); |
| IkReal x2446=(new_r02*x2437); |
| IkReal x2447=(new_r01*x2437); |
| IkReal x2448=(new_r11*x2436); |
| IkReal x2449=(new_r00*x2437); |
| IkReal x2450=(new_r10*x2436); |
| evalcond[0]=(((new_r22*x2436))+new_r10); |
| evalcond[1]=((((-1.0)*x2436))+new_r01); |
| evalcond[2]=((((-1.0)*x2437))+new_r11); |
| evalcond[3]=((((-1.0)*x2437*x2444))+new_r00); |
| evalcond[4]=(((new_r12*x2437))+((new_r02*x2436))); |
| evalcond[5]=(((new_r00*x2436))+((new_r10*x2437))); |
| evalcond[6]=((-1.0)+((new_r01*x2436))+((new_r11*x2437))); |
| evalcond[7]=(x2447+(((-1.0)*x2448))); |
| evalcond[8]=((((-1.0)*x2444*x2448))+((new_r22*x2447))); |
| evalcond[9]=(x2449+(((-1.0)*x2450))+(((-1.0)*x2444))); |
| evalcond[10]=((((-1.0)*x2437*x2440))+((x2437*x2443))+new_r02); |
| evalcond[11]=((((-1.0)*x2436*x2443))+new_r12+((x2436*x2440))); |
| evalcond[12]=(x2443+x2446+(((-1.0)*x2445))+(((-1.0)*x2440))); |
| evalcond[13]=((((-1.0)*x2443*x2447))+((x2443*x2448))+((x2440*x2447))+(((-1.0)*x2440*x2448))); |
| evalcond[14]=((((-1.0)*x2442*x2450))+((x2442*x2449))+((new_r20*x2441))+(((-1.0)*x2439*x2449))+((x2439*x2450))+((new_r20*x2438))); |
| evalcond[15]=(((new_r22*x2439))+(((-1.0)*x2441*x2445))+(((-1.0)*x2438*x2445))+((x2441*x2446))+(((-1.0)*new_r22*x2442))+((x2438*x2446))); |
| evalcond[16]=((-1.0)+((new_r22*x2438))+((x2442*x2446))+(((-1.0)*x2439*x2446))+((new_r22*x2441))+((x2439*x2445))+(((-1.0)*x2442*x2445))); |
| evalcond[17]=((-1.0)+(((-1.0)*new_r20*x2442))+(((-1.0)*x2441*x2450))+(((-1.0)*x2438*x2450))+((x2441*x2449))+((x2438*x2449))+((new_r20*x2439))); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[2]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[3]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[4]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[5]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[6]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[7]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[8]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[9]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[10]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[11]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[12]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[13]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[14]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[15]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[16]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[17]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| |
| } |
| } while(0); |
| if( bgotonextstatement ) |
| { |
| bool bgotonextstatement = true; |
| do |
| { |
| evalcond[0]=((-3.14159265358979)+(IKfmod(((3.14159265358979)+(IKabs(((-3.14159265358979)+j3)))), 6.28318530717959))); |
| evalcond[1]=new_r21; |
| if( IKabs(evalcond[0]) < 0.0000050000000000 && IKabs(evalcond[1]) < 0.0000050000000000 ) |
| { |
| bgotonextstatement=false; |
| { |
| IkReal j5array[1], cj5array[1], sj5array[1]; |
| bool j5valid[1]={false}; |
| _nj5 = 1; |
| if( IKabs(((-1.0)*new_r01)) < IKFAST_ATAN2_MAGTHRESH && IKabs(((-1.0)*new_r11)) < IKFAST_ATAN2_MAGTHRESH && IKabs(IKsqr(((-1.0)*new_r01))+IKsqr(((-1.0)*new_r11))-1) <= IKFAST_SINCOS_THRESH ) |
| continue; |
| j5array[0]=IKatan2(((-1.0)*new_r01), ((-1.0)*new_r11)); |
| sj5array[0]=IKsin(j5array[0]); |
| cj5array[0]=IKcos(j5array[0]); |
| if( j5array[0] > IKPI ) |
| { |
| j5array[0]-=IK2PI; |
| } |
| else if( j5array[0] < -IKPI ) |
| { j5array[0]+=IK2PI; |
| } |
| j5valid[0] = true; |
| for(int ij5 = 0; ij5 < 1; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < 1; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| { |
| IkReal evalcond[18]; |
| IkReal x2451=IKcos(j5); |
| IkReal x2452=IKsin(j5); |
| IkReal x2453=((0.9999999992)*cj4); |
| IkReal x2454=((0.9999999992)*sj4); |
| IkReal x2455=((3.9999999968e-5)*cj4); |
| IkReal x2456=((3.9999999968e-5)*sj4); |
| IkReal x2457=((1.0)*new_r22); |
| IkReal x2458=(new_r12*x2452); |
| IkReal x2459=(new_r02*x2451); |
| IkReal x2460=(new_r01*x2451); |
| IkReal x2461=(new_r11*x2452); |
| IkReal x2462=(new_r00*x2451); |
| IkReal x2463=(new_r10*x2452); |
| evalcond[0]=(x2452+new_r01); |
| evalcond[1]=(x2451+new_r11); |
| evalcond[2]=(((new_r22*x2451))+new_r00); |
| evalcond[3]=((((-1.0)*x2452*x2457))+new_r10); |
| evalcond[4]=(((new_r12*x2451))+((new_r02*x2452))); |
| evalcond[5]=(((new_r10*x2451))+((new_r00*x2452))); |
| evalcond[6]=((1.0)+((new_r11*x2451))+((new_r01*x2452))); |
| evalcond[7]=(x2460+(((-1.0)*x2461))); |
| evalcond[8]=(x2462+(((-1.0)*x2463))+new_r22); |
| evalcond[9]=((((-1.0)*x2457*x2461))+((new_r22*x2460))); |
| evalcond[10]=((((-1.0)*x2451*x2455))+((x2451*x2454))+new_r02); |
| evalcond[11]=((((-1.0)*x2452*x2454))+((x2452*x2455))+new_r12); |
| evalcond[12]=(x2459+(((25000.0)*new_r22))+(((-625000001.0)*new_r20))+(((-625000000.5)*sj4))+(((-1.0)*x2458))); |
| evalcond[13]=((((-1.0)*x2454*x2460))+(((-1.0)*x2455*x2461))+((x2454*x2461))+((x2455*x2460))); |
| evalcond[14]=((((-1.0)*x2454*x2462))+((new_r20*x2456))+((new_r20*x2453))+(((-1.0)*x2455*x2463))+((x2454*x2463))+((x2455*x2462))); |
| evalcond[15]=((((-1.0)*x2453*x2458))+((x2453*x2459))+(((-1.0)*x2456*x2458))+((x2456*x2459))+((new_r22*x2454))+(((-1.0)*new_r22*x2455))); |
| evalcond[16]=((-1.0)+(((-1.0)*x2454*x2459))+((x2454*x2458))+((new_r22*x2453))+((new_r22*x2456))+((x2455*x2459))+(((-1.0)*x2455*x2458))); |
| evalcond[17]=((1.0)+((new_r20*x2454))+(((-1.0)*new_r20*x2455))+(((-1.0)*x2456*x2463))+((x2453*x2462))+((x2456*x2462))+(((-1.0)*x2453*x2463))); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[2]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[3]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[4]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[5]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[6]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[7]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[8]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[9]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[10]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[11]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[12]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[13]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[14]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[15]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[16]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[17]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| |
| } |
| } while(0); |
| if( bgotonextstatement ) |
| { |
| bool bgotonextstatement = true; |
| do |
| { |
| evalcond[0]=((IKabs(new_r10))+(IKabs(new_r00))); |
| if( IKabs(evalcond[0]) < 0.0000050000000000 ) |
| { |
| bgotonextstatement=false; |
| { |
| IkReal j5eval[3]; |
| new_r00=0; |
| new_r10=0; |
| new_r21=0; |
| new_r22=0; |
| j5eval[0]=sj4; |
| j5eval[1]=IKsign(sj4); |
| j5eval[2]=((1.0)+(new_r12*new_r12)+(((-1.0)*(new_r01*new_r01)))); |
| if( IKabs(j5eval[0]) < 0.0000010000000000 || IKabs(j5eval[1]) < 0.0000010000000000 || IKabs(j5eval[2]) < 0.0000010000000000 ) |
| { |
| { |
| IkReal j5eval[2]; |
| new_r00=0; |
| new_r10=0; |
| new_r21=0; |
| new_r22=0; |
| j5eval[0]=new_r01; |
| j5eval[1]=sj4; |
| if( IKabs(j5eval[0]) < 0.0000010000000000 || IKabs(j5eval[1]) < 0.0000010000000000 ) |
| { |
| { |
| IkReal j5eval[2]; |
| new_r00=0; |
| new_r10=0; |
| new_r21=0; |
| new_r22=0; |
| j5eval[0]=sj4; |
| j5eval[1]=new_r11; |
| if( IKabs(j5eval[0]) < 0.0000010000000000 || IKabs(j5eval[1]) < 0.0000010000000000 ) |
| { |
| { |
| IkReal evalcond[5]; |
| bool bgotonextstatement = true; |
| do |
| { |
| evalcond[0]=((-3.14159265358979)+(IKfmod(((3.14159265358979)+(IKabs(j4))), 6.28318530717959))); |
| evalcond[1]=new_r02; |
| evalcond[2]=new_r12; |
| evalcond[3]=new_r01; |
| evalcond[4]=new_r11; |
| if( IKabs(evalcond[0]) < 0.0000050000000000 && IKabs(evalcond[1]) < 0.0000050000000000 && IKabs(evalcond[2]) < 0.0000050000000000 && IKabs(evalcond[3]) < 0.0000050000000000 && IKabs(evalcond[4]) < 0.0000050000000000 ) |
| { |
| bgotonextstatement=false; |
| { |
| IkReal j5array[1], cj5array[1], sj5array[1]; |
| bool j5valid[1]={false}; |
| _nj5 = 1; |
| j5array[0]=0; |
| sj5array[0]=IKsin(j5array[0]); |
| cj5array[0]=IKcos(j5array[0]); |
| if( j5array[0] > IKPI ) |
| { |
| j5array[0]-=IK2PI; |
| } |
| else if( j5array[0] < -IKPI ) |
| { j5array[0]+=IK2PI; |
| } |
| j5valid[0] = true; |
| for(int ij5 = 0; ij5 < 1; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < 1; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| |
| } |
| } while(0); |
| if( bgotonextstatement ) |
| { |
| bool bgotonextstatement = true; |
| do |
| { |
| evalcond[0]=((-3.14159265358979)+(IKfmod(((3.14159265358979)+(IKabs(((-3.14159265358979)+j4)))), 6.28318530717959))); |
| evalcond[1]=new_r02; |
| evalcond[2]=new_r12; |
| evalcond[3]=new_r01; |
| evalcond[4]=new_r11; |
| if( IKabs(evalcond[0]) < 0.0000050000000000 && IKabs(evalcond[1]) < 0.0000050000000000 && IKabs(evalcond[2]) < 0.0000050000000000 && IKabs(evalcond[3]) < 0.0000050000000000 && IKabs(evalcond[4]) < 0.0000050000000000 ) |
| { |
| bgotonextstatement=false; |
| { |
| IkReal j5array[1], cj5array[1], sj5array[1]; |
| bool j5valid[1]={false}; |
| _nj5 = 1; |
| j5array[0]=0; |
| sj5array[0]=IKsin(j5array[0]); |
| cj5array[0]=IKcos(j5array[0]); |
| if( j5array[0] > IKPI ) |
| { |
| j5array[0]-=IK2PI; |
| } |
| else if( j5array[0] < -IKPI ) |
| { j5array[0]+=IK2PI; |
| } |
| j5valid[0] = true; |
| for(int ij5 = 0; ij5 < 1; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < 1; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| |
| } |
| } while(0); |
| if( bgotonextstatement ) |
| { |
| bool bgotonextstatement = true; |
| do |
| { |
| if( 1 ) |
| { |
| bgotonextstatement=false; |
| continue; // branch miss [j5] |
| |
| } |
| } while(0); |
| if( bgotonextstatement ) |
| { |
| } |
| } |
| } |
| } |
| |
| } else |
| { |
| { |
| IkReal j5array[1], cj5array[1], sj5array[1]; |
| bool j5valid[1]={false}; |
| _nj5 = 1; |
| CheckValue<IkReal> x2466=IKPowWithIntegerCheck(sj4,-1); |
| if(!x2466.valid){ |
| continue; |
| } |
| IkReal x2464=x2466.value; |
| IkReal x2465=(new_r12*x2464); |
| CheckValue<IkReal> x2467=IKPowWithIntegerCheck(new_r11,-1); |
| if(!x2467.valid){ |
| continue; |
| } |
| if( IKabs(((0.9999999992)*x2465)) < IKFAST_ATAN2_MAGTHRESH && IKabs(((-0.9999999992)*new_r01*x2465*(x2467.value))) < IKFAST_ATAN2_MAGTHRESH && IKabs(IKsqr(((0.9999999992)*x2465))+IKsqr(((-0.9999999992)*new_r01*x2465*(x2467.value)))-1) <= IKFAST_SINCOS_THRESH ) |
| continue; |
| j5array[0]=IKatan2(((0.9999999992)*x2465), ((-0.9999999992)*new_r01*x2465*(x2467.value))); |
| sj5array[0]=IKsin(j5array[0]); |
| cj5array[0]=IKcos(j5array[0]); |
| if( j5array[0] > IKPI ) |
| { |
| j5array[0]-=IK2PI; |
| } |
| else if( j5array[0] < -IKPI ) |
| { j5array[0]+=IK2PI; |
| } |
| j5valid[0] = true; |
| for(int ij5 = 0; ij5 < 1; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < 1; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| { |
| IkReal evalcond[10]; |
| IkReal x2468=IKcos(j5); |
| IkReal x2469=IKsin(j5); |
| IkReal x2470=((0.9999999992)*cj4); |
| IkReal x2471=((3.9999999968e-5)*sj4); |
| IkReal x2472=((1.0000000008)*sj4); |
| IkReal x2473=(new_r12*x2469); |
| IkReal x2474=(new_r02*x2468); |
| IkReal x2475=(new_r11*x2469); |
| IkReal x2476=(new_r01*x2468); |
| evalcond[0]=(((new_r02*x2469))+((new_r12*x2468))); |
| evalcond[1]=(((new_r01*x2469))+((new_r11*x2468))); |
| evalcond[2]=(((x2468*x2472))+new_r02); |
| evalcond[3]=((((-1.0)*x2469*x2472))+new_r12); |
| evalcond[4]=(x2476+(((-1.0)*x2475))); |
| evalcond[5]=(x2474+x2472+(((-1.0)*x2473))); |
| evalcond[6]=((((-1.0)*x2472*x2476))+((x2472*x2475))); |
| evalcond[7]=((-1.0)+(((-1.0)*x2472*x2474))+((x2472*x2473))); |
| evalcond[8]=(((x2471*x2474))+(((-1.0)*x2470*x2473))+(((-1.0)*x2471*x2473))+((x2470*x2474))); |
| evalcond[9]=(((x2471*x2476))+(((-1.0)*x2470*x2475))+(((-1.0)*x2471*x2475))+((x2470*x2476))); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[2]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[3]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[4]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[5]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[6]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[7]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[8]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[9]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| |
| } |
| |
| } |
| |
| } else |
| { |
| { |
| IkReal j5array[1], cj5array[1], sj5array[1]; |
| bool j5valid[1]={false}; |
| _nj5 = 1; |
| CheckValue<IkReal> x2479=IKPowWithIntegerCheck(sj4,-1); |
| if(!x2479.valid){ |
| continue; |
| } |
| IkReal x2477=x2479.value; |
| IkReal x2478=(new_r02*x2477); |
| CheckValue<IkReal> x2480=IKPowWithIntegerCheck(new_r01,-1); |
| if(!x2480.valid){ |
| continue; |
| } |
| if( IKabs(((0.9999999992)*new_r11*x2478*(x2480.value))) < IKFAST_ATAN2_MAGTHRESH && IKabs(((-0.9999999992)*x2478)) < IKFAST_ATAN2_MAGTHRESH && IKabs(IKsqr(((0.9999999992)*new_r11*x2478*(x2480.value)))+IKsqr(((-0.9999999992)*x2478))-1) <= IKFAST_SINCOS_THRESH ) |
| continue; |
| j5array[0]=IKatan2(((0.9999999992)*new_r11*x2478*(x2480.value)), ((-0.9999999992)*x2478)); |
| sj5array[0]=IKsin(j5array[0]); |
| cj5array[0]=IKcos(j5array[0]); |
| if( j5array[0] > IKPI ) |
| { |
| j5array[0]-=IK2PI; |
| } |
| else if( j5array[0] < -IKPI ) |
| { j5array[0]+=IK2PI; |
| } |
| j5valid[0] = true; |
| for(int ij5 = 0; ij5 < 1; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < 1; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| { |
| IkReal evalcond[10]; |
| IkReal x2481=IKcos(j5); |
| IkReal x2482=IKsin(j5); |
| IkReal x2483=((0.9999999992)*cj4); |
| IkReal x2484=((3.9999999968e-5)*sj4); |
| IkReal x2485=((1.0000000008)*sj4); |
| IkReal x2486=(new_r12*x2482); |
| IkReal x2487=(new_r02*x2481); |
| IkReal x2488=(new_r11*x2482); |
| IkReal x2489=(new_r01*x2481); |
| evalcond[0]=(((new_r02*x2482))+((new_r12*x2481))); |
| evalcond[1]=(((new_r01*x2482))+((new_r11*x2481))); |
| evalcond[2]=(((x2481*x2485))+new_r02); |
| evalcond[3]=((((-1.0)*x2482*x2485))+new_r12); |
| evalcond[4]=(x2489+(((-1.0)*x2488))); |
| evalcond[5]=(x2487+x2485+(((-1.0)*x2486))); |
| evalcond[6]=(((x2485*x2488))+(((-1.0)*x2485*x2489))); |
| evalcond[7]=((-1.0)+((x2485*x2486))+(((-1.0)*x2485*x2487))); |
| evalcond[8]=(((x2483*x2487))+((x2484*x2487))+(((-1.0)*x2484*x2486))+(((-1.0)*x2483*x2486))); |
| evalcond[9]=(((x2483*x2489))+((x2484*x2489))+(((-1.0)*x2484*x2488))+(((-1.0)*x2483*x2488))); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[2]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[3]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[4]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[5]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[6]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[7]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[8]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[9]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| |
| } |
| |
| } |
| |
| } else |
| { |
| { |
| IkReal j5array[1], cj5array[1], sj5array[1]; |
| bool j5valid[1]={false}; |
| _nj5 = 1; |
| CheckValue<IkReal> x2490 = IKatan2WithCheck(IkReal(((625000000.5)*new_r12)),IkReal(((-625000000.5)*new_r02)),IKFAST_ATAN2_MAGTHRESH); |
| if(!x2490.valid){ |
| continue; |
| } |
| CheckValue<IkReal> x2491=IKPowWithIntegerCheck(IKsign(sj4),-1); |
| if(!x2491.valid){ |
| continue; |
| } |
| j5array[0]=((-1.5707963267949)+(x2490.value)+(((1.5707963267949)*(x2491.value)))); |
| sj5array[0]=IKsin(j5array[0]); |
| cj5array[0]=IKcos(j5array[0]); |
| if( j5array[0] > IKPI ) |
| { |
| j5array[0]-=IK2PI; |
| } |
| else if( j5array[0] < -IKPI ) |
| { j5array[0]+=IK2PI; |
| } |
| j5valid[0] = true; |
| for(int ij5 = 0; ij5 < 1; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < 1; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| { |
| IkReal evalcond[10]; |
| IkReal x2492=IKcos(j5); |
| IkReal x2493=IKsin(j5); |
| IkReal x2494=((0.9999999992)*cj4); |
| IkReal x2495=((3.9999999968e-5)*sj4); |
| IkReal x2496=((1.0000000008)*sj4); |
| IkReal x2497=(new_r12*x2493); |
| IkReal x2498=(new_r02*x2492); |
| IkReal x2499=(new_r11*x2493); |
| IkReal x2500=(new_r01*x2492); |
| evalcond[0]=(((new_r02*x2493))+((new_r12*x2492))); |
| evalcond[1]=(((new_r01*x2493))+((new_r11*x2492))); |
| evalcond[2]=(((x2492*x2496))+new_r02); |
| evalcond[3]=((((-1.0)*x2493*x2496))+new_r12); |
| evalcond[4]=(x2500+(((-1.0)*x2499))); |
| evalcond[5]=(x2498+x2496+(((-1.0)*x2497))); |
| evalcond[6]=(((x2496*x2499))+(((-1.0)*x2496*x2500))); |
| evalcond[7]=((-1.0)+(((-1.0)*x2496*x2498))+((x2496*x2497))); |
| evalcond[8]=((((-1.0)*x2495*x2497))+((x2494*x2498))+(((-1.0)*x2494*x2497))+((x2495*x2498))); |
| evalcond[9]=((((-1.0)*x2495*x2499))+((x2494*x2500))+(((-1.0)*x2494*x2499))+((x2495*x2500))); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[2]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[3]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[4]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[5]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[6]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[7]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[8]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[9]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| |
| } |
| |
| } |
| |
| } |
| } while(0); |
| if( bgotonextstatement ) |
| { |
| bool bgotonextstatement = true; |
| do |
| { |
| evalcond[0]=((IKabs(new_r00))+(IKabs(new_r02))); |
| if( IKabs(evalcond[0]) < 0.0000050000000000 ) |
| { |
| bgotonextstatement=false; |
| { |
| IkReal j5eval[1]; |
| new_r00=0; |
| new_r02=0; |
| new_r11=0; |
| new_r21=0; |
| j5eval[0]=cj3; |
| if( IKabs(j5eval[0]) < 0.0000010000000000 ) |
| { |
| { |
| IkReal j5eval[1]; |
| new_r00=0; |
| new_r02=0; |
| new_r11=0; |
| new_r21=0; |
| j5eval[0]=new_r01; |
| if( IKabs(j5eval[0]) < 0.0000010000000000 ) |
| { |
| { |
| IkReal j5eval[1]; |
| new_r00=0; |
| new_r02=0; |
| new_r11=0; |
| new_r21=0; |
| j5eval[0]=((((25000.0)*cj3*cj4))+((cj3*sj4))); |
| if( IKabs(j5eval[0]) < 0.0000010000000000 ) |
| { |
| { |
| IkReal evalcond[5]; |
| bool bgotonextstatement = true; |
| do |
| { |
| evalcond[0]=((-3.14159265358979)+(IKfmod(((3.14159265358979)+(IKabs(((-1.5707963267949)+j3)))), 6.28318530717959))); |
| evalcond[1]=new_r12; |
| evalcond[2]=new_r20; |
| evalcond[3]=new_r10; |
| evalcond[4]=new_r01; |
| if( IKabs(evalcond[0]) < 0.0000050000000000 && IKabs(evalcond[1]) < 0.0000050000000000 && IKabs(evalcond[2]) < 0.0000050000000000 && IKabs(evalcond[3]) < 0.0000050000000000 && IKabs(evalcond[4]) < 0.0000050000000000 ) |
| { |
| bgotonextstatement=false; |
| { |
| IkReal j5eval[1]; |
| new_r00=0; |
| new_r02=0; |
| new_r11=0; |
| new_r21=0; |
| sj3=1.0; |
| cj3=0; |
| j3=1.5707963267949; |
| j5eval[0]=IKabs(((((-25000.0)*sj4))+cj4)); |
| if( IKabs(j5eval[0]) < 0.0000000100000000 ) |
| { |
| continue; // no branches [j5] |
| |
| } else |
| { |
| IkReal op[2+1], zeror[2]; |
| int numroots; |
| IkReal x2501=((25000.0)*sj4); |
| op[0]=((((-1.0)*x2501))+cj4); |
| op[1]=0; |
| op[2]=(x2501+(((-1.0)*cj4))); |
| polyroots2(op,zeror,numroots); |
| IkReal j5array[2], cj5array[2], sj5array[2], tempj5array[1]; |
| int numsolutions = 0; |
| for(int ij5 = 0; ij5 < numroots; ++ij5) |
| { |
| IkReal htj5 = zeror[ij5]; |
| tempj5array[0]=((2.0)*(atan(htj5))); |
| for(int kj5 = 0; kj5 < 1; ++kj5) |
| { |
| j5array[numsolutions] = tempj5array[kj5]; |
| if( j5array[numsolutions] > IKPI ) |
| { |
| j5array[numsolutions]-=IK2PI; |
| } |
| else if( j5array[numsolutions] < -IKPI ) |
| { |
| j5array[numsolutions]+=IK2PI; |
| } |
| sj5array[numsolutions] = IKsin(j5array[numsolutions]); |
| cj5array[numsolutions] = IKcos(j5array[numsolutions]); |
| numsolutions++; |
| } |
| } |
| bool j5valid[2]={true,true}; |
| _nj5 = 2; |
| for(int ij5 = 0; ij5 < numsolutions; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| htj5 = IKtan(j5/2); |
| |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < numsolutions; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| |
| } |
| |
| } |
| |
| } |
| } while(0); |
| if( bgotonextstatement ) |
| { |
| bool bgotonextstatement = true; |
| do |
| { |
| evalcond[0]=((-3.14159265358979)+(IKfmod(((3.14159265358979)+(IKabs(((1.5707963267949)+j3)))), 6.28318530717959))); |
| evalcond[1]=new_r12; |
| evalcond[2]=new_r20; |
| evalcond[3]=new_r10; |
| evalcond[4]=new_r01; |
| if( IKabs(evalcond[0]) < 0.0000050000000000 && IKabs(evalcond[1]) < 0.0000050000000000 && IKabs(evalcond[2]) < 0.0000050000000000 && IKabs(evalcond[3]) < 0.0000050000000000 && IKabs(evalcond[4]) < 0.0000050000000000 ) |
| { |
| bgotonextstatement=false; |
| { |
| IkReal j5eval[1]; |
| new_r00=0; |
| new_r02=0; |
| new_r11=0; |
| new_r21=0; |
| sj3=-1.0; |
| cj3=0; |
| j3=-1.5707963267949; |
| j5eval[0]=IKabs(((((-25000.0)*sj4))+cj4)); |
| if( IKabs(j5eval[0]) < 0.0000000100000000 ) |
| { |
| continue; // no branches [j5] |
| |
| } else |
| { |
| IkReal op[2+1], zeror[2]; |
| int numroots; |
| IkReal x2502=((25000.0)*sj4); |
| op[0]=((((-1.0)*x2502))+cj4); |
| op[1]=0; |
| op[2]=(x2502+(((-1.0)*cj4))); |
| polyroots2(op,zeror,numroots); |
| IkReal j5array[2], cj5array[2], sj5array[2], tempj5array[1]; |
| int numsolutions = 0; |
| for(int ij5 = 0; ij5 < numroots; ++ij5) |
| { |
| IkReal htj5 = zeror[ij5]; |
| tempj5array[0]=((2.0)*(atan(htj5))); |
| for(int kj5 = 0; kj5 < 1; ++kj5) |
| { |
| j5array[numsolutions] = tempj5array[kj5]; |
| if( j5array[numsolutions] > IKPI ) |
| { |
| j5array[numsolutions]-=IK2PI; |
| } |
| else if( j5array[numsolutions] < -IKPI ) |
| { |
| j5array[numsolutions]+=IK2PI; |
| } |
| sj5array[numsolutions] = IKsin(j5array[numsolutions]); |
| cj5array[numsolutions] = IKcos(j5array[numsolutions]); |
| numsolutions++; |
| } |
| } |
| bool j5valid[2]={true,true}; |
| _nj5 = 2; |
| for(int ij5 = 0; ij5 < numsolutions; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| htj5 = IKtan(j5/2); |
| |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < numsolutions; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| |
| } |
| |
| } |
| |
| } |
| } while(0); |
| if( bgotonextstatement ) |
| { |
| bool bgotonextstatement = true; |
| do |
| { |
| if( 1 ) |
| { |
| bgotonextstatement=false; |
| continue; // branch miss [j5] |
| |
| } |
| } while(0); |
| if( bgotonextstatement ) |
| { |
| } |
| } |
| } |
| } |
| |
| } else |
| { |
| { |
| IkReal j5array[2], cj5array[2], sj5array[2]; |
| bool j5valid[2]={false}; |
| _nj5 = 2; |
| CheckValue<IkReal> x2503=IKPowWithIntegerCheck(((((0.9999999992)*cj3*cj4))+(((3.9999999968e-5)*cj3*sj4))),-1); |
| if(!x2503.valid){ |
| continue; |
| } |
| sj5array[0]=((-1.0)*new_r10*(x2503.value)); |
| if( sj5array[0] >= -1-IKFAST_SINCOS_THRESH && sj5array[0] <= 1+IKFAST_SINCOS_THRESH ) |
| { |
| j5valid[0] = j5valid[1] = true; |
| j5array[0] = IKasin(sj5array[0]); |
| cj5array[0] = IKcos(j5array[0]); |
| sj5array[1] = sj5array[0]; |
| j5array[1] = j5array[0] > 0 ? (IKPI-j5array[0]) : (-IKPI-j5array[0]); |
| cj5array[1] = -cj5array[0]; |
| } |
| else if( isnan(sj5array[0]) ) |
| { |
| // probably any value will work |
| j5valid[0] = true; |
| cj5array[0] = 1; sj5array[0] = 0; j5array[0] = 0; |
| } |
| for(int ij5 = 0; ij5 < 2; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < 2; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| { |
| IkReal evalcond[15]; |
| IkReal x2504=IKcos(j5); |
| IkReal x2505=IKsin(j5); |
| IkReal x2506=((3.9999999968e-5)*cj4); |
| IkReal x2507=((1.0)*cj3); |
| IkReal x2508=(cj3*cj4); |
| IkReal x2509=((25000.00002)*sj4); |
| IkReal x2510=((0.9999999992)*sj4); |
| IkReal x2511=((3.9999999968e-5)*sj4); |
| IkReal x2512=(new_r01*x2504); |
| IkReal x2513=((0.9999999992)*x2504); |
| IkReal x2514=(new_r12*x2505); |
| IkReal x2515=(new_r10*x2505); |
| IkReal x2516=(cj3*x2504); |
| evalcond[0]=(new_r12*x2504); |
| evalcond[1]=(new_r10*x2504); |
| evalcond[2]=x2512; |
| evalcond[3]=((-1.0)*x2514); |
| evalcond[4]=((-1.0)*x2516); |
| evalcond[5]=(new_r01+(((-1.0)*x2505*x2507))); |
| evalcond[6]=(((new_r01*x2505))+(((-1.0)*x2507))); |
| evalcond[7]=(x2509*x2512); |
| evalcond[8]=((-25000.00002)*sj4*x2514); |
| evalcond[9]=(((x2504*x2510))+(((-1.0)*x2504*x2506))); |
| evalcond[10]=((((-1.0)*cj3*x2511))+(((-1.0)*x2515))+(((-0.9999999992)*x2508))); |
| evalcond[11]=((((-1.0)*x2508*x2513))+(((-1.0)*x2511*x2516))); |
| evalcond[12]=((((-1.0)*x2510*x2512))+((x2506*x2512))); |
| CheckValue<IkReal> x2517=IKPowWithIntegerCheck(((((25000.00002)*cj4))+(((-625000000.5)*sj4))),-1); |
| if(!x2517.valid){ |
| continue; |
| } |
| evalcond[13]=((((625000001.0)*new_r20*(x2517.value)))+(((-1.0)*x2509*x2515))); |
| evalcond[14]=((((0.9999999992)*cj4*new_r20))+(((-1.0)*x2506*x2515))+((x2510*x2515))+((new_r20*x2511))); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[2]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[3]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[4]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[5]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[6]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[7]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[8]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[9]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[10]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[11]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[12]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[13]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[14]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| |
| } |
| |
| } |
| |
| } else |
| { |
| { |
| IkReal j5array[2], cj5array[2], sj5array[2]; |
| bool j5valid[2]={false}; |
| _nj5 = 2; |
| CheckValue<IkReal> x2518=IKPowWithIntegerCheck(new_r01,-1); |
| if(!x2518.valid){ |
| continue; |
| } |
| sj5array[0]=(cj3*(x2518.value)); |
| if( sj5array[0] >= -1-IKFAST_SINCOS_THRESH && sj5array[0] <= 1+IKFAST_SINCOS_THRESH ) |
| { |
| j5valid[0] = j5valid[1] = true; |
| j5array[0] = IKasin(sj5array[0]); |
| cj5array[0] = IKcos(j5array[0]); |
| sj5array[1] = sj5array[0]; |
| j5array[1] = j5array[0] > 0 ? (IKPI-j5array[0]) : (-IKPI-j5array[0]); |
| cj5array[1] = -cj5array[0]; |
| } |
| else if( isnan(sj5array[0]) ) |
| { |
| // probably any value will work |
| j5valid[0] = true; |
| cj5array[0] = 1; sj5array[0] = 0; j5array[0] = 0; |
| } |
| for(int ij5 = 0; ij5 < 2; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < 2; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| { |
| IkReal evalcond[15]; |
| IkReal x2519=IKcos(j5); |
| IkReal x2520=IKsin(j5); |
| IkReal x2521=((3.9999999968e-5)*cj4); |
| IkReal x2522=(cj3*cj4); |
| IkReal x2523=((3.9999999968e-5)*cj3); |
| IkReal x2524=(new_r01*x2519); |
| IkReal x2525=((0.9999999992)*x2519); |
| IkReal x2526=(new_r12*x2520); |
| IkReal x2527=(sj4*x2520); |
| IkReal x2528=(new_r10*x2520); |
| evalcond[0]=(new_r12*x2519); |
| evalcond[1]=(new_r10*x2519); |
| evalcond[2]=x2524; |
| evalcond[3]=((-1.0)*x2526); |
| evalcond[4]=((-1.0)*cj3*x2519); |
| evalcond[5]=((((-1.0)*cj3*x2520))+new_r01); |
| evalcond[6]=((25000.00002)*sj4*x2524); |
| evalcond[7]=((-25000.00002)*sj4*x2526); |
| evalcond[8]=(((sj4*x2525))+(((-1.0)*x2519*x2521))); |
| evalcond[9]=((((-1.0)*sj4*x2523))+(((-1.0)*x2528))+(((-0.9999999992)*x2522))); |
| evalcond[10]=((((-1.0)*x2522*x2525))+(((-1.0)*sj4*x2519*x2523))); |
| evalcond[11]=((((-0.9999999992)*sj4*x2524))+((x2521*x2524))); |
| evalcond[12]=((((0.9999999992)*x2520*x2522))+new_r10+((x2523*x2527))); |
| CheckValue<IkReal> x2529=IKPowWithIntegerCheck(((((25000.00002)*cj4))+(((-625000000.5)*sj4))),-1); |
| if(!x2529.valid){ |
| continue; |
| } |
| evalcond[13]=((((625000001.0)*new_r20*(x2529.value)))+(((-25000.00002)*new_r10*x2527))); |
| evalcond[14]=((((0.9999999992)*cj4*new_r20))+(((0.9999999992)*new_r10*x2527))+(((3.9999999968e-5)*new_r20*sj4))+(((-1.0)*x2521*x2528))); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[2]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[3]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[4]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[5]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[6]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[7]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[8]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[9]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[10]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[11]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[12]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[13]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[14]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| |
| } |
| |
| } |
| |
| } else |
| { |
| { |
| IkReal j5array[2], cj5array[2], sj5array[2]; |
| bool j5valid[2]={false}; |
| _nj5 = 2; |
| CheckValue<IkReal> x2530=IKPowWithIntegerCheck(cj3,-1); |
| if(!x2530.valid){ |
| continue; |
| } |
| sj5array[0]=(new_r01*(x2530.value)); |
| if( sj5array[0] >= -1-IKFAST_SINCOS_THRESH && sj5array[0] <= 1+IKFAST_SINCOS_THRESH ) |
| { |
| j5valid[0] = j5valid[1] = true; |
| j5array[0] = IKasin(sj5array[0]); |
| cj5array[0] = IKcos(j5array[0]); |
| sj5array[1] = sj5array[0]; |
| j5array[1] = j5array[0] > 0 ? (IKPI-j5array[0]) : (-IKPI-j5array[0]); |
| cj5array[1] = -cj5array[0]; |
| } |
| else if( isnan(sj5array[0]) ) |
| { |
| // probably any value will work |
| j5valid[0] = true; |
| cj5array[0] = 1; sj5array[0] = 0; j5array[0] = 0; |
| } |
| for(int ij5 = 0; ij5 < 2; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < 2; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| { |
| IkReal evalcond[15]; |
| IkReal x2531=IKcos(j5); |
| IkReal x2532=IKsin(j5); |
| IkReal x2533=((3.9999999968e-5)*cj4); |
| IkReal x2534=(cj3*cj4); |
| IkReal x2535=((3.9999999968e-5)*cj3); |
| IkReal x2536=(new_r01*x2531); |
| IkReal x2537=((0.9999999992)*x2531); |
| IkReal x2538=(new_r12*x2532); |
| IkReal x2539=(sj4*x2532); |
| IkReal x2540=(new_r10*x2532); |
| evalcond[0]=(new_r12*x2531); |
| evalcond[1]=(new_r10*x2531); |
| evalcond[2]=x2536; |
| evalcond[3]=((-1.0)*x2538); |
| evalcond[4]=((-1.0)*cj3*x2531); |
| evalcond[5]=(((new_r01*x2532))+(((-1.0)*cj3))); |
| evalcond[6]=((25000.00002)*sj4*x2536); |
| evalcond[7]=((-25000.00002)*sj4*x2538); |
| evalcond[8]=(((sj4*x2537))+(((-1.0)*x2531*x2533))); |
| evalcond[9]=((((-1.0)*x2540))+(((-1.0)*sj4*x2535))+(((-0.9999999992)*x2534))); |
| evalcond[10]=((((-1.0)*x2534*x2537))+(((-1.0)*sj4*x2531*x2535))); |
| evalcond[11]=((((-0.9999999992)*sj4*x2536))+((x2533*x2536))); |
| evalcond[12]=((((0.9999999992)*x2532*x2534))+new_r10+((x2535*x2539))); |
| CheckValue<IkReal> x2541=IKPowWithIntegerCheck(((((25000.00002)*cj4))+(((-625000000.5)*sj4))),-1); |
| if(!x2541.valid){ |
| continue; |
| } |
| evalcond[13]=((((-25000.00002)*new_r10*x2539))+(((625000001.0)*new_r20*(x2541.value)))); |
| evalcond[14]=((((0.9999999992)*cj4*new_r20))+(((0.9999999992)*new_r10*x2539))+(((-1.0)*x2533*x2540))+(((3.9999999968e-5)*new_r20*sj4))); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[2]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[3]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[4]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[5]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[6]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[7]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[8]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[9]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[10]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[11]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[12]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[13]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[14]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| |
| } |
| |
| } |
| |
| } |
| } while(0); |
| if( bgotonextstatement ) |
| { |
| bool bgotonextstatement = true; |
| do |
| { |
| evalcond[0]=((IKabs(new_r12))+(IKabs(new_r10))); |
| if( IKabs(evalcond[0]) < 0.0000050000000000 ) |
| { |
| bgotonextstatement=false; |
| { |
| IkReal j5eval[1]; |
| new_r10=0; |
| new_r12=0; |
| new_r21=0; |
| new_r01=0; |
| j5eval[0]=cj3; |
| if( IKabs(j5eval[0]) < 0.0000010000000000 ) |
| { |
| { |
| IkReal j5eval[1]; |
| new_r10=0; |
| new_r12=0; |
| new_r21=0; |
| new_r01=0; |
| j5eval[0]=new_r11; |
| if( IKabs(j5eval[0]) < 0.0000010000000000 ) |
| { |
| { |
| IkReal j5eval[1]; |
| new_r10=0; |
| new_r12=0; |
| new_r21=0; |
| new_r01=0; |
| j5eval[0]=((((-25000.0)*cj3*cj4))+(((-1.0)*cj3*sj4))); |
| if( IKabs(j5eval[0]) < 0.0000010000000000 ) |
| { |
| { |
| IkReal evalcond[5]; |
| bool bgotonextstatement = true; |
| do |
| { |
| evalcond[0]=((-3.14159265358979)+(IKfmod(((3.14159265358979)+(IKabs(((-1.5707963267949)+j3)))), 6.28318530717959))); |
| evalcond[1]=new_r02; |
| evalcond[2]=new_r20; |
| evalcond[3]=new_r00; |
| evalcond[4]=new_r11; |
| if( IKabs(evalcond[0]) < 0.0000050000000000 && IKabs(evalcond[1]) < 0.0000050000000000 && IKabs(evalcond[2]) < 0.0000050000000000 && IKabs(evalcond[3]) < 0.0000050000000000 && IKabs(evalcond[4]) < 0.0000050000000000 ) |
| { |
| bgotonextstatement=false; |
| { |
| IkReal j5array[1], cj5array[1], sj5array[1]; |
| bool j5valid[1]={false}; |
| _nj5 = 1; |
| j5array[0]=0; |
| sj5array[0]=IKsin(j5array[0]); |
| cj5array[0]=IKcos(j5array[0]); |
| if( j5array[0] > IKPI ) |
| { |
| j5array[0]-=IK2PI; |
| } |
| else if( j5array[0] < -IKPI ) |
| { j5array[0]+=IK2PI; |
| } |
| j5valid[0] = true; |
| for(int ij5 = 0; ij5 < 1; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < 1; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| |
| } |
| } while(0); |
| if( bgotonextstatement ) |
| { |
| bool bgotonextstatement = true; |
| do |
| { |
| evalcond[0]=((-3.14159265358979)+(IKfmod(((3.14159265358979)+(IKabs(((1.5707963267949)+j3)))), 6.28318530717959))); |
| evalcond[1]=new_r02; |
| evalcond[2]=new_r20; |
| evalcond[3]=new_r00; |
| evalcond[4]=new_r11; |
| if( IKabs(evalcond[0]) < 0.0000050000000000 && IKabs(evalcond[1]) < 0.0000050000000000 && IKabs(evalcond[2]) < 0.0000050000000000 && IKabs(evalcond[3]) < 0.0000050000000000 && IKabs(evalcond[4]) < 0.0000050000000000 ) |
| { |
| bgotonextstatement=false; |
| { |
| IkReal j5array[1], cj5array[1], sj5array[1]; |
| bool j5valid[1]={false}; |
| _nj5 = 1; |
| j5array[0]=0; |
| sj5array[0]=IKsin(j5array[0]); |
| cj5array[0]=IKcos(j5array[0]); |
| if( j5array[0] > IKPI ) |
| { |
| j5array[0]-=IK2PI; |
| } |
| else if( j5array[0] < -IKPI ) |
| { j5array[0]+=IK2PI; |
| } |
| j5valid[0] = true; |
| for(int ij5 = 0; ij5 < 1; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < 1; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| |
| } |
| } while(0); |
| if( bgotonextstatement ) |
| { |
| bool bgotonextstatement = true; |
| do |
| { |
| if( 1 ) |
| { |
| bgotonextstatement=false; |
| continue; // branch miss [j5] |
| |
| } |
| } while(0); |
| if( bgotonextstatement ) |
| { |
| } |
| } |
| } |
| } |
| |
| } else |
| { |
| { |
| IkReal j5array[2], cj5array[2], sj5array[2]; |
| bool j5valid[2]={false}; |
| _nj5 = 2; |
| CheckValue<IkReal> x2542=IKPowWithIntegerCheck(((((-0.9999999992)*cj3*cj4))+(((-3.9999999968e-5)*cj3*sj4))),-1); |
| if(!x2542.valid){ |
| continue; |
| } |
| cj5array[0]=((-1.0)*new_r00*(x2542.value)); |
| if( cj5array[0] >= -1-IKFAST_SINCOS_THRESH && cj5array[0] <= 1+IKFAST_SINCOS_THRESH ) |
| { |
| j5valid[0] = j5valid[1] = true; |
| j5array[0] = IKacos(cj5array[0]); |
| sj5array[0] = IKsin(j5array[0]); |
| cj5array[1] = cj5array[0]; |
| j5array[1] = -j5array[0]; |
| sj5array[1] = -sj5array[0]; |
| } |
| else if( isnan(cj5array[0]) ) |
| { |
| // probably any value will work |
| j5valid[0] = true; |
| cj5array[0] = 1; sj5array[0] = 0; j5array[0] = 0; |
| } |
| for(int ij5 = 0; ij5 < 2; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < 2; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| { |
| IkReal evalcond[15]; |
| IkReal x2543=IKsin(j5); |
| IkReal x2544=IKcos(j5); |
| IkReal x2545=((3.9999999968e-5)*sj4); |
| IkReal x2546=((1.0)*cj3); |
| IkReal x2547=((0.9999999992)*cj4); |
| IkReal x2548=((25000.00002)*sj4); |
| IkReal x2549=((0.9999999992)*sj4); |
| IkReal x2550=(cj3*x2543); |
| IkReal x2551=(new_r00*x2544); |
| IkReal x2552=(new_r02*x2544); |
| IkReal x2553=((3.9999999968e-5)*cj4*x2543); |
| IkReal x2554=(new_r11*sj4*x2543); |
| evalcond[0]=(new_r02*x2543); |
| evalcond[1]=(new_r00*x2543); |
| evalcond[2]=x2552; |
| evalcond[3]=((-1.0)*new_r11*x2543); |
| evalcond[4]=((-1.0)*x2550); |
| evalcond[5]=((((-1.0)*x2544*x2546))+new_r11); |
| evalcond[6]=((((-1.0)*x2546))+((new_r11*x2544))); |
| evalcond[7]=(x2548*x2552); |
| evalcond[8]=((-25000.00002)*x2554); |
| evalcond[9]=(x2553+(((-1.0)*x2543*x2549))); |
| evalcond[10]=(x2551+(((-1.0)*cj3*x2547))+(((-1.0)*cj3*x2545))); |
| evalcond[11]=(((x2547*x2550))+((x2545*x2550))); |
| evalcond[12]=((((-1.0)*new_r11*x2553))+((new_r11*x2543*x2549))); |
| CheckValue<IkReal> x2555=IKPowWithIntegerCheck(((((25000.00002)*cj4))+(((-625000000.5)*sj4))),-1); |
| if(!x2555.valid){ |
| continue; |
| } |
| evalcond[13]=((((625000001.0)*new_r20*(x2555.value)))+((x2548*x2551))); |
| evalcond[14]=((((-1.0)*x2549*x2551))+((new_r20*x2547))+((new_r20*x2545))+(((3.9999999968e-5)*cj4*x2551))); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[2]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[3]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[4]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[5]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[6]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[7]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[8]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[9]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[10]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[11]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[12]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[13]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[14]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| |
| } |
| |
| } |
| |
| } else |
| { |
| { |
| IkReal j5array[2], cj5array[2], sj5array[2]; |
| bool j5valid[2]={false}; |
| _nj5 = 2; |
| CheckValue<IkReal> x2556=IKPowWithIntegerCheck(new_r11,-1); |
| if(!x2556.valid){ |
| continue; |
| } |
| cj5array[0]=(cj3*(x2556.value)); |
| if( cj5array[0] >= -1-IKFAST_SINCOS_THRESH && cj5array[0] <= 1+IKFAST_SINCOS_THRESH ) |
| { |
| j5valid[0] = j5valid[1] = true; |
| j5array[0] = IKacos(cj5array[0]); |
| sj5array[0] = IKsin(j5array[0]); |
| cj5array[1] = cj5array[0]; |
| j5array[1] = -j5array[0]; |
| sj5array[1] = -sj5array[0]; |
| } |
| else if( isnan(cj5array[0]) ) |
| { |
| // probably any value will work |
| j5valid[0] = true; |
| cj5array[0] = 1; sj5array[0] = 0; j5array[0] = 0; |
| } |
| for(int ij5 = 0; ij5 < 2; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < 2; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| { |
| IkReal evalcond[15]; |
| IkReal x2557=IKsin(j5); |
| IkReal x2558=IKcos(j5); |
| IkReal x2559=((3.9999999968e-5)*sj4); |
| IkReal x2560=((0.9999999992)*cj4); |
| IkReal x2561=((25000.00002)*sj4); |
| IkReal x2562=((0.9999999992)*sj4); |
| IkReal x2563=(cj3*x2557); |
| IkReal x2564=(cj3*x2558); |
| IkReal x2565=(new_r00*x2558); |
| IkReal x2566=(new_r02*x2558); |
| IkReal x2567=((3.9999999968e-5)*cj4*x2557); |
| IkReal x2568=(new_r11*sj4*x2557); |
| evalcond[0]=(new_r02*x2557); |
| evalcond[1]=(new_r00*x2557); |
| evalcond[2]=x2566; |
| evalcond[3]=((-1.0)*new_r11*x2557); |
| evalcond[4]=((-1.0)*x2563); |
| evalcond[5]=((((-1.0)*x2564))+new_r11); |
| evalcond[6]=(x2561*x2566); |
| evalcond[7]=((-25000.00002)*x2568); |
| evalcond[8]=(x2567+(((-1.0)*x2557*x2562))); |
| evalcond[9]=(x2565+(((-1.0)*cj3*x2559))+(((-1.0)*cj3*x2560))); |
| evalcond[10]=(((x2560*x2563))+((x2559*x2563))); |
| evalcond[11]=((((-1.0)*new_r11*x2567))+((new_r11*x2557*x2562))); |
| evalcond[12]=((((-1.0)*x2560*x2564))+(((-1.0)*x2559*x2564))+new_r00); |
| CheckValue<IkReal> x2569=IKPowWithIntegerCheck(((((25000.00002)*cj4))+(((-625000000.5)*sj4))),-1); |
| if(!x2569.valid){ |
| continue; |
| } |
| evalcond[13]=((((625000001.0)*new_r20*(x2569.value)))+((x2561*x2565))); |
| evalcond[14]=((((3.9999999968e-5)*cj4*x2565))+(((-1.0)*x2562*x2565))+((new_r20*x2559))+((new_r20*x2560))); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[2]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[3]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[4]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[5]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[6]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[7]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[8]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[9]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[10]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[11]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[12]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[13]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[14]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| |
| } |
| |
| } |
| |
| } else |
| { |
| { |
| IkReal j5array[2], cj5array[2], sj5array[2]; |
| bool j5valid[2]={false}; |
| _nj5 = 2; |
| CheckValue<IkReal> x2570=IKPowWithIntegerCheck(cj3,-1); |
| if(!x2570.valid){ |
| continue; |
| } |
| cj5array[0]=(new_r11*(x2570.value)); |
| if( cj5array[0] >= -1-IKFAST_SINCOS_THRESH && cj5array[0] <= 1+IKFAST_SINCOS_THRESH ) |
| { |
| j5valid[0] = j5valid[1] = true; |
| j5array[0] = IKacos(cj5array[0]); |
| sj5array[0] = IKsin(j5array[0]); |
| cj5array[1] = cj5array[0]; |
| j5array[1] = -j5array[0]; |
| sj5array[1] = -sj5array[0]; |
| } |
| else if( isnan(cj5array[0]) ) |
| { |
| // probably any value will work |
| j5valid[0] = true; |
| cj5array[0] = 1; sj5array[0] = 0; j5array[0] = 0; |
| } |
| for(int ij5 = 0; ij5 < 2; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < 2; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| { |
| IkReal evalcond[15]; |
| IkReal x2571=IKsin(j5); |
| IkReal x2572=IKcos(j5); |
| IkReal x2573=((3.9999999968e-5)*sj4); |
| IkReal x2574=((0.9999999992)*cj3); |
| IkReal x2575=((0.9999999992)*cj4); |
| IkReal x2576=((25000.00002)*sj4); |
| IkReal x2577=((0.9999999992)*sj4); |
| IkReal x2578=(cj3*x2571); |
| IkReal x2579=(cj4*x2572); |
| IkReal x2580=(new_r00*x2572); |
| IkReal x2581=(new_r02*x2572); |
| IkReal x2582=((3.9999999968e-5)*cj4*x2571); |
| IkReal x2583=(new_r11*sj4*x2571); |
| evalcond[0]=(new_r02*x2571); |
| evalcond[1]=(new_r00*x2571); |
| evalcond[2]=x2581; |
| evalcond[3]=((-1.0)*new_r11*x2571); |
| evalcond[4]=((-1.0)*x2578); |
| evalcond[5]=(((new_r11*x2572))+(((-1.0)*cj3))); |
| evalcond[6]=(x2576*x2581); |
| evalcond[7]=((-25000.00002)*x2583); |
| evalcond[8]=(x2582+(((-1.0)*x2571*x2577))); |
| evalcond[9]=(x2580+(((-1.0)*cj3*x2573))+(((-1.0)*cj4*x2574))); |
| evalcond[10]=(((x2573*x2578))+((cj4*x2571*x2574))); |
| evalcond[11]=(((new_r11*x2571*x2577))+(((-1.0)*new_r11*x2582))); |
| evalcond[12]=((((-1.0)*cj3*x2572*x2573))+new_r00+(((-1.0)*x2574*x2579))); |
| CheckValue<IkReal> x2584=IKPowWithIntegerCheck(((((25000.00002)*cj4))+(((-625000000.5)*sj4))),-1); |
| if(!x2584.valid){ |
| continue; |
| } |
| evalcond[13]=((((625000001.0)*new_r20*(x2584.value)))+((x2576*x2580))); |
| evalcond[14]=((((3.9999999968e-5)*new_r00*x2579))+((new_r20*x2575))+((new_r20*x2573))+(((-1.0)*x2577*x2580))); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[2]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[3]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[4]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[5]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[6]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[7]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[8]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[9]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[10]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[11]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[12]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[13]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[14]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| |
| } |
| |
| } |
| |
| } |
| } while(0); |
| if( bgotonextstatement ) |
| { |
| bool bgotonextstatement = true; |
| do |
| { |
| evalcond[0]=((IKabs(new_r12))+(IKabs(new_r02))); |
| if( IKabs(evalcond[0]) < 0.0000050000000000 ) |
| { |
| bgotonextstatement=false; |
| { |
| IkReal j5eval[1]; |
| new_r02=0; |
| new_r12=0; |
| new_r20=0; |
| new_r21=0; |
| j5eval[0]=((IKabs(new_r10))+(IKabs(new_r00))); |
| if( IKabs(j5eval[0]) < 0.0000010000000000 ) |
| { |
| { |
| IkReal j5eval[1]; |
| new_r02=0; |
| new_r12=0; |
| new_r20=0; |
| new_r21=0; |
| j5eval[0]=((IKabs(new_r11))+(IKabs(new_r01))); |
| if( IKabs(j5eval[0]) < 0.0000010000000000 ) |
| { |
| { |
| IkReal j5eval[3]; |
| new_r02=0; |
| new_r12=0; |
| new_r20=0; |
| new_r21=0; |
| j5eval[0]=625000001.0; |
| j5eval[1]=sj4; |
| j5eval[2]=1.0; |
| if( IKabs(j5eval[0]) < 0.0000010000000000 || IKabs(j5eval[1]) < 0.0000010000000000 || IKabs(j5eval[2]) < 0.0000010000000000 ) |
| { |
| { |
| IkReal evalcond[5]; |
| bool bgotonextstatement = true; |
| do |
| { |
| evalcond[0]=((-3.14159265358979)+(IKfmod(((3.14159265358979)+(IKabs(j4))), 6.28318530717959))); |
| evalcond[1]=new_r00; |
| evalcond[2]=new_r10; |
| evalcond[3]=new_r01; |
| evalcond[4]=new_r11; |
| if( IKabs(evalcond[0]) < 0.0000050000000000 && IKabs(evalcond[1]) < 0.0000050000000000 && IKabs(evalcond[2]) < 0.0000050000000000 && IKabs(evalcond[3]) < 0.0000050000000000 && IKabs(evalcond[4]) < 0.0000050000000000 ) |
| { |
| bgotonextstatement=false; |
| { |
| IkReal j5eval[1]; |
| new_r02=0; |
| new_r12=0; |
| new_r20=0; |
| new_r21=0; |
| sj4=0; |
| cj4=1.0; |
| j4=0; |
| j5eval[0]=1.0; |
| if( IKabs(j5eval[0]) < 0.0000000100000000 ) |
| { |
| continue; // no branches [j5] |
| |
| } else |
| { |
| IkReal op[2+1], zeror[2]; |
| int numroots; |
| op[0]=1.0; |
| op[1]=0; |
| op[2]=-1.0; |
| polyroots2(op,zeror,numroots); |
| IkReal j5array[2], cj5array[2], sj5array[2], tempj5array[1]; |
| int numsolutions = 0; |
| for(int ij5 = 0; ij5 < numroots; ++ij5) |
| { |
| IkReal htj5 = zeror[ij5]; |
| tempj5array[0]=((2.0)*(atan(htj5))); |
| for(int kj5 = 0; kj5 < 1; ++kj5) |
| { |
| j5array[numsolutions] = tempj5array[kj5]; |
| if( j5array[numsolutions] > IKPI ) |
| { |
| j5array[numsolutions]-=IK2PI; |
| } |
| else if( j5array[numsolutions] < -IKPI ) |
| { |
| j5array[numsolutions]+=IK2PI; |
| } |
| sj5array[numsolutions] = IKsin(j5array[numsolutions]); |
| cj5array[numsolutions] = IKcos(j5array[numsolutions]); |
| numsolutions++; |
| } |
| } |
| bool j5valid[2]={true,true}; |
| _nj5 = 2; |
| for(int ij5 = 0; ij5 < numsolutions; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| htj5 = IKtan(j5/2); |
| |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < numsolutions; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| |
| } |
| |
| } |
| |
| } |
| } while(0); |
| if( bgotonextstatement ) |
| { |
| bool bgotonextstatement = true; |
| do |
| { |
| evalcond[0]=((-3.14159265358979)+(IKfmod(((3.14159265358979)+(IKabs(((-3.14159265358979)+j4)))), 6.28318530717959))); |
| evalcond[1]=new_r00; |
| evalcond[2]=new_r10; |
| evalcond[3]=new_r01; |
| evalcond[4]=new_r11; |
| if( IKabs(evalcond[0]) < 0.0000050000000000 && IKabs(evalcond[1]) < 0.0000050000000000 && IKabs(evalcond[2]) < 0.0000050000000000 && IKabs(evalcond[3]) < 0.0000050000000000 && IKabs(evalcond[4]) < 0.0000050000000000 ) |
| { |
| bgotonextstatement=false; |
| { |
| IkReal j5eval[1]; |
| new_r02=0; |
| new_r12=0; |
| new_r20=0; |
| new_r21=0; |
| sj4=0; |
| cj4=-1.0; |
| j4=3.14159265358979; |
| j5eval[0]=1.0; |
| if( IKabs(j5eval[0]) < 0.0000000100000000 ) |
| { |
| continue; // no branches [j5] |
| |
| } else |
| { |
| IkReal op[2+1], zeror[2]; |
| int numroots; |
| op[0]=-1.0; |
| op[1]=0; |
| op[2]=1.0; |
| polyroots2(op,zeror,numroots); |
| IkReal j5array[2], cj5array[2], sj5array[2], tempj5array[1]; |
| int numsolutions = 0; |
| for(int ij5 = 0; ij5 < numroots; ++ij5) |
| { |
| IkReal htj5 = zeror[ij5]; |
| tempj5array[0]=((2.0)*(atan(htj5))); |
| for(int kj5 = 0; kj5 < 1; ++kj5) |
| { |
| j5array[numsolutions] = tempj5array[kj5]; |
| if( j5array[numsolutions] > IKPI ) |
| { |
| j5array[numsolutions]-=IK2PI; |
| } |
| else if( j5array[numsolutions] < -IKPI ) |
| { |
| j5array[numsolutions]+=IK2PI; |
| } |
| sj5array[numsolutions] = IKsin(j5array[numsolutions]); |
| cj5array[numsolutions] = IKcos(j5array[numsolutions]); |
| numsolutions++; |
| } |
| } |
| bool j5valid[2]={true,true}; |
| _nj5 = 2; |
| for(int ij5 = 0; ij5 < numsolutions; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| htj5 = IKtan(j5/2); |
| |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < numsolutions; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| |
| } |
| |
| } |
| |
| } |
| } while(0); |
| if( bgotonextstatement ) |
| { |
| bool bgotonextstatement = true; |
| do |
| { |
| if( 1 ) |
| { |
| bgotonextstatement=false; |
| continue; // branch miss [j5] |
| |
| } |
| } while(0); |
| if( bgotonextstatement ) |
| { |
| } |
| } |
| } |
| } |
| |
| } else |
| { |
| { |
| IkReal j5array[2], cj5array[2], sj5array[2]; |
| bool j5valid[2]={false}; |
| _nj5 = 2; |
| CheckValue<IkReal> x2586 = IKatan2WithCheck(IkReal(((25000.00002)*new_r00*sj4)),IkReal(((-25000.00002)*new_r10*sj4)),IKFAST_ATAN2_MAGTHRESH); |
| if(!x2586.valid){ |
| continue; |
| } |
| IkReal x2585=x2586.value; |
| j5array[0]=((-1.0)*x2585); |
| sj5array[0]=IKsin(j5array[0]); |
| cj5array[0]=IKcos(j5array[0]); |
| j5array[1]=((3.14159265358979)+(((-1.0)*x2585))); |
| sj5array[1]=IKsin(j5array[1]); |
| cj5array[1]=IKcos(j5array[1]); |
| if( j5array[0] > IKPI ) |
| { |
| j5array[0]-=IK2PI; |
| } |
| else if( j5array[0] < -IKPI ) |
| { j5array[0]+=IK2PI; |
| } |
| j5valid[0] = true; |
| if( j5array[1] > IKPI ) |
| { |
| j5array[1]-=IK2PI; |
| } |
| else if( j5array[1] < -IKPI ) |
| { j5array[1]+=IK2PI; |
| } |
| j5valid[1] = true; |
| for(int ij5 = 0; ij5 < 2; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < 2; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| { |
| IkReal evalcond[9]; |
| IkReal x2587=IKcos(j5); |
| IkReal x2588=IKsin(j5); |
| IkReal x2589=((3.9999999968e-5)*cj4); |
| IkReal x2590=((0.9999999992)*sj4); |
| IkReal x2591=((25000.00002)*sj4); |
| IkReal x2592=(new_r01*x2587); |
| IkReal x2593=(new_r11*x2588); |
| IkReal x2594=(new_r00*x2587); |
| IkReal x2595=(new_r10*x2588); |
| evalcond[0]=(((new_r00*x2588))+((new_r10*x2587))); |
| evalcond[1]=(((new_r11*x2587))+((new_r01*x2588))); |
| evalcond[2]=(x2594+(((-1.0)*x2595))); |
| evalcond[3]=(x2592+(((-1.0)*x2593))); |
| evalcond[4]=((((-1.0)*x2587*x2589))+((x2587*x2590))); |
| evalcond[5]=((((-1.0)*x2588*x2590))+((x2588*x2589))); |
| evalcond[6]=(((x2591*x2592))+(((-1.0)*x2591*x2593))); |
| evalcond[7]=((((-1.0)*x2590*x2594))+(((-1.0)*x2589*x2595))+((x2589*x2594))+((x2590*x2595))); |
| evalcond[8]=((((-1.0)*x2590*x2592))+(((-1.0)*x2589*x2593))+((x2589*x2592))+((x2590*x2593))); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[2]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[3]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[4]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[5]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[6]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[7]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[8]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| |
| } |
| |
| } |
| |
| } else |
| { |
| { |
| IkReal j5array[2], cj5array[2], sj5array[2]; |
| bool j5valid[2]={false}; |
| _nj5 = 2; |
| CheckValue<IkReal> x2597 = IKatan2WithCheck(IkReal(new_r11),IkReal(new_r01),IKFAST_ATAN2_MAGTHRESH); |
| if(!x2597.valid){ |
| continue; |
| } |
| IkReal x2596=x2597.value; |
| j5array[0]=((-1.0)*x2596); |
| sj5array[0]=IKsin(j5array[0]); |
| cj5array[0]=IKcos(j5array[0]); |
| j5array[1]=((3.14159265358979)+(((-1.0)*x2596))); |
| sj5array[1]=IKsin(j5array[1]); |
| cj5array[1]=IKcos(j5array[1]); |
| if( j5array[0] > IKPI ) |
| { |
| j5array[0]-=IK2PI; |
| } |
| else if( j5array[0] < -IKPI ) |
| { j5array[0]+=IK2PI; |
| } |
| j5valid[0] = true; |
| if( j5array[1] > IKPI ) |
| { |
| j5array[1]-=IK2PI; |
| } |
| else if( j5array[1] < -IKPI ) |
| { j5array[1]+=IK2PI; |
| } |
| j5valid[1] = true; |
| for(int ij5 = 0; ij5 < 2; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < 2; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| { |
| IkReal evalcond[9]; |
| IkReal x2598=IKcos(j5); |
| IkReal x2599=IKsin(j5); |
| IkReal x2600=((3.9999999968e-5)*cj4); |
| IkReal x2601=((25000.00002)*sj4); |
| IkReal x2602=((0.9999999992)*sj4); |
| IkReal x2603=(new_r01*x2598); |
| IkReal x2604=(new_r11*x2599); |
| IkReal x2605=(sj4*x2598); |
| IkReal x2606=(new_r00*x2598); |
| IkReal x2607=(new_r10*x2599); |
| evalcond[0]=(((new_r10*x2598))+((new_r00*x2599))); |
| evalcond[1]=((((-1.0)*x2607))+x2606); |
| evalcond[2]=((((-1.0)*x2604))+x2603); |
| evalcond[3]=(((x2598*x2602))+(((-1.0)*x2598*x2600))); |
| evalcond[4]=(((x2599*x2600))+(((-1.0)*x2599*x2602))); |
| evalcond[5]=((((-1.0)*x2601*x2607))+((x2601*x2606))); |
| evalcond[6]=((((-1.0)*x2601*x2604))+((x2601*x2603))); |
| evalcond[7]=(((x2602*x2607))+(((-1.0)*x2600*x2607))+((x2600*x2606))+(((-1.0)*x2602*x2606))); |
| evalcond[8]=(((x2602*x2604))+(((-1.0)*x2600*x2604))+((x2600*x2603))+(((-1.0)*x2602*x2603))); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[2]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[3]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[4]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[5]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[6]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[7]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[8]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| |
| } |
| |
| } |
| |
| } else |
| { |
| { |
| IkReal j5array[2], cj5array[2], sj5array[2]; |
| bool j5valid[2]={false}; |
| _nj5 = 2; |
| CheckValue<IkReal> x2609 = IKatan2WithCheck(IkReal(new_r10),IkReal(new_r00),IKFAST_ATAN2_MAGTHRESH); |
| if(!x2609.valid){ |
| continue; |
| } |
| IkReal x2608=x2609.value; |
| j5array[0]=((-1.0)*x2608); |
| sj5array[0]=IKsin(j5array[0]); |
| cj5array[0]=IKcos(j5array[0]); |
| j5array[1]=((3.14159265358979)+(((-1.0)*x2608))); |
| sj5array[1]=IKsin(j5array[1]); |
| cj5array[1]=IKcos(j5array[1]); |
| if( j5array[0] > IKPI ) |
| { |
| j5array[0]-=IK2PI; |
| } |
| else if( j5array[0] < -IKPI ) |
| { j5array[0]+=IK2PI; |
| } |
| j5valid[0] = true; |
| if( j5array[1] > IKPI ) |
| { |
| j5array[1]-=IK2PI; |
| } |
| else if( j5array[1] < -IKPI ) |
| { j5array[1]+=IK2PI; |
| } |
| j5valid[1] = true; |
| for(int ij5 = 0; ij5 < 2; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < 2; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| { |
| IkReal evalcond[9]; |
| IkReal x2610=IKcos(j5); |
| IkReal x2611=IKsin(j5); |
| IkReal x2612=((3.9999999968e-5)*cj4); |
| IkReal x2613=((25000.00002)*sj4); |
| IkReal x2614=((0.9999999992)*sj4); |
| IkReal x2615=(new_r01*x2610); |
| IkReal x2616=(new_r11*x2611); |
| IkReal x2617=(sj4*x2610); |
| IkReal x2618=(new_r00*x2610); |
| IkReal x2619=(new_r10*x2611); |
| evalcond[0]=(((new_r11*x2610))+((new_r01*x2611))); |
| evalcond[1]=((((-1.0)*x2619))+x2618); |
| evalcond[2]=((((-1.0)*x2616))+x2615); |
| evalcond[3]=((((-1.0)*x2610*x2612))+((x2610*x2614))); |
| evalcond[4]=((((-1.0)*x2611*x2614))+((x2611*x2612))); |
| evalcond[5]=(((x2613*x2618))+(((-1.0)*x2613*x2619))); |
| evalcond[6]=(((x2613*x2615))+(((-1.0)*x2613*x2616))); |
| evalcond[7]=((((-1.0)*x2612*x2619))+((x2614*x2619))+((x2612*x2618))+(((-1.0)*x2614*x2618))); |
| evalcond[8]=((((-1.0)*x2612*x2616))+((x2614*x2616))+((x2612*x2615))+(((-1.0)*x2614*x2615))); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[2]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[3]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[4]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[5]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[6]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[7]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[8]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| |
| } |
| |
| } |
| |
| } |
| } while(0); |
| if( bgotonextstatement ) |
| { |
| bool bgotonextstatement = true; |
| do |
| { |
| if( 1 ) |
| { |
| bgotonextstatement=false; |
| continue; // branch miss [j5] |
| |
| } |
| } while(0); |
| if( bgotonextstatement ) |
| { |
| } |
| } |
| } |
| } |
| } |
| } |
| } |
| } |
| } |
| } |
| } |
| } |
| |
| } else |
| { |
| { |
| IkReal j5array[1], cj5array[1], sj5array[1]; |
| bool j5valid[1]={false}; |
| _nj5 = 1; |
| CheckValue<IkReal> x2620 = IKatan2WithCheck(IkReal(new_r12),IkReal(((-1.0)*new_r02)),IKFAST_ATAN2_MAGTHRESH); |
| if(!x2620.valid){ |
| continue; |
| } |
| CheckValue<IkReal> x2621=IKPowWithIntegerCheck(IKsign(((((-3.9999999968e-5)*cj4))+(((0.9999999992)*sj4)))),-1); |
| if(!x2621.valid){ |
| continue; |
| } |
| j5array[0]=((-1.5707963267949)+(x2620.value)+(((1.5707963267949)*(x2621.value)))); |
| sj5array[0]=IKsin(j5array[0]); |
| cj5array[0]=IKcos(j5array[0]); |
| if( j5array[0] > IKPI ) |
| { |
| j5array[0]-=IK2PI; |
| } |
| else if( j5array[0] < -IKPI ) |
| { j5array[0]+=IK2PI; |
| } |
| j5valid[0] = true; |
| for(int ij5 = 0; ij5 < 1; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < 1; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| { |
| IkReal evalcond[18]; |
| IkReal x2622=IKcos(j5); |
| IkReal x2623=IKsin(j5); |
| IkReal x2624=((1.0)*cj3); |
| IkReal x2625=((0.9999999992)*cj4); |
| IkReal x2626=((0.9999999992)*sj4); |
| IkReal x2627=((3.9999999968e-5)*cj4); |
| IkReal x2628=((3.9999999968e-5)*sj4); |
| IkReal x2629=(new_r12*x2623); |
| IkReal x2630=(new_r02*x2622); |
| IkReal x2631=(new_r01*x2622); |
| IkReal x2632=(new_r11*x2623); |
| IkReal x2633=(sj3*x2623); |
| IkReal x2634=(sj3*x2622); |
| IkReal x2635=(new_r00*x2622); |
| IkReal x2636=(cj3*x2622); |
| IkReal x2637=(cj3*x2623); |
| IkReal x2638=(new_r10*x2623); |
| evalcond[0]=(((new_r12*x2622))+((new_r02*x2623))); |
| evalcond[1]=(sj3+((new_r10*x2622))+((new_r00*x2623))); |
| evalcond[2]=(((new_r11*x2622))+(((-1.0)*x2624))+((new_r01*x2623))); |
| evalcond[3]=((((-1.0)*x2622*x2627))+((x2622*x2626))+new_r02); |
| evalcond[4]=((((-1.0)*x2623*x2626))+((x2623*x2627))+new_r12); |
| evalcond[5]=((((-1.0)*x2629))+(((-1.0)*x2627))+x2630+x2626); |
| evalcond[6]=((((-1.0)*x2638))+(((-1.0)*cj3*x2628))+(((-1.0)*cj3*x2625))+x2635); |
| evalcond[7]=((((-1.0)*sj3*x2628))+(((-1.0)*sj3*x2625))+(((-1.0)*x2632))+x2631); |
| evalcond[8]=((((-1.0)*x2628*x2636))+new_r00+(((-1.0)*x2625*x2636))+x2633); |
| evalcond[9]=(((x2625*x2637))+((x2628*x2637))+new_r10+x2634); |
| evalcond[10]=((((-1.0)*x2623*x2624))+(((-1.0)*x2628*x2634))+new_r01+(((-1.0)*x2625*x2634))); |
| evalcond[11]=((((-1.0)*x2622*x2624))+((x2625*x2633))+((x2628*x2633))+new_r11); |
| evalcond[12]=(((new_r20*x2625))+((new_r20*x2628))+((x2627*x2635))+(((-1.0)*x2626*x2635))+((x2626*x2638))+(((-1.0)*x2627*x2638))); |
| evalcond[13]=(((new_r21*x2625))+((new_r21*x2628))+((x2627*x2631))+(((-1.0)*x2626*x2631))+((x2626*x2632))+(((-1.0)*x2627*x2632))); |
| evalcond[14]=((((-1.0)*x2625*x2629))+((x2625*x2630))+((new_r22*x2626))+(((-1.0)*new_r22*x2627))+((x2628*x2630))+(((-1.0)*x2628*x2629))); |
| evalcond[15]=((-1.0)+((x2626*x2629))+(((-1.0)*x2627*x2629))+((new_r22*x2628))+((new_r22*x2625))+((x2627*x2630))+(((-1.0)*x2626*x2630))); |
| evalcond[16]=(((new_r20*x2626))+(((-1.0)*x2628*x2638))+((x2625*x2635))+((x2628*x2635))+(((-1.0)*new_r20*x2627))+(((-1.0)*x2624))+(((-1.0)*x2625*x2638))); |
| evalcond[17]=((((-1.0)*sj3))+((new_r21*x2626))+(((-1.0)*x2628*x2632))+((x2625*x2631))+((x2628*x2631))+(((-1.0)*new_r21*x2627))+(((-1.0)*x2625*x2632))); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[2]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[3]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[4]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[5]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[6]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[7]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[8]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[9]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[10]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[11]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[12]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[13]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[14]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[15]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[16]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[17]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| |
| } |
| |
| } |
| |
| } else |
| { |
| { |
| IkReal j5array[1], cj5array[1], sj5array[1]; |
| bool j5valid[1]={false}; |
| _nj5 = 1; |
| CheckValue<IkReal> x2639=IKPowWithIntegerCheck(IKsign((((new_r01*new_r12))+(((-1.0)*new_r02*new_r11)))),-1); |
| if(!x2639.valid){ |
| continue; |
| } |
| CheckValue<IkReal> x2640 = IKatan2WithCheck(IkReal((cj3*new_r12)),IkReal(((-1.0)*cj3*new_r02)),IKFAST_ATAN2_MAGTHRESH); |
| if(!x2640.valid){ |
| continue; |
| } |
| j5array[0]=((-1.5707963267949)+(((1.5707963267949)*(x2639.value)))+(x2640.value)); |
| sj5array[0]=IKsin(j5array[0]); |
| cj5array[0]=IKcos(j5array[0]); |
| if( j5array[0] > IKPI ) |
| { |
| j5array[0]-=IK2PI; |
| } |
| else if( j5array[0] < -IKPI ) |
| { j5array[0]+=IK2PI; |
| } |
| j5valid[0] = true; |
| for(int ij5 = 0; ij5 < 1; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < 1; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| { |
| IkReal evalcond[18]; |
| IkReal x2641=IKcos(j5); |
| IkReal x2642=IKsin(j5); |
| IkReal x2643=((1.0)*cj3); |
| IkReal x2644=((0.9999999992)*cj4); |
| IkReal x2645=((0.9999999992)*sj4); |
| IkReal x2646=((3.9999999968e-5)*cj4); |
| IkReal x2647=((3.9999999968e-5)*sj4); |
| IkReal x2648=(new_r12*x2642); |
| IkReal x2649=(new_r02*x2641); |
| IkReal x2650=(new_r01*x2641); |
| IkReal x2651=(new_r11*x2642); |
| IkReal x2652=(sj3*x2642); |
| IkReal x2653=(sj3*x2641); |
| IkReal x2654=(new_r00*x2641); |
| IkReal x2655=(cj3*x2641); |
| IkReal x2656=(cj3*x2642); |
| IkReal x2657=(new_r10*x2642); |
| evalcond[0]=(((new_r02*x2642))+((new_r12*x2641))); |
| evalcond[1]=(sj3+((new_r10*x2641))+((new_r00*x2642))); |
| evalcond[2]=(((new_r11*x2641))+((new_r01*x2642))+(((-1.0)*x2643))); |
| evalcond[3]=((((-1.0)*x2641*x2646))+new_r02+((x2641*x2645))); |
| evalcond[4]=((((-1.0)*x2642*x2645))+new_r12+((x2642*x2646))); |
| evalcond[5]=((((-1.0)*x2646))+(((-1.0)*x2648))+x2649+x2645); |
| evalcond[6]=((((-1.0)*cj3*x2644))+(((-1.0)*cj3*x2647))+(((-1.0)*x2657))+x2654); |
| evalcond[7]=((((-1.0)*sj3*x2647))+(((-1.0)*sj3*x2644))+(((-1.0)*x2651))+x2650); |
| evalcond[8]=((((-1.0)*x2644*x2655))+(((-1.0)*x2647*x2655))+new_r00+x2652); |
| evalcond[9]=(((x2644*x2656))+new_r10+((x2647*x2656))+x2653); |
| evalcond[10]=((((-1.0)*x2644*x2653))+(((-1.0)*x2647*x2653))+(((-1.0)*x2642*x2643))+new_r01); |
| evalcond[11]=(((x2644*x2652))+(((-1.0)*x2641*x2643))+new_r11+((x2647*x2652))); |
| evalcond[12]=((((-1.0)*x2645*x2654))+(((-1.0)*x2646*x2657))+((new_r20*x2647))+((new_r20*x2644))+((x2645*x2657))+((x2646*x2654))); |
| evalcond[13]=(((new_r21*x2644))+((new_r21*x2647))+(((-1.0)*x2645*x2650))+(((-1.0)*x2646*x2651))+((x2645*x2651))+((x2646*x2650))); |
| evalcond[14]=((((-1.0)*x2644*x2648))+(((-1.0)*x2647*x2648))+(((-1.0)*new_r22*x2646))+((x2644*x2649))+((x2647*x2649))+((new_r22*x2645))); |
| evalcond[15]=((-1.0)+(((-1.0)*x2646*x2648))+(((-1.0)*x2645*x2649))+((x2645*x2648))+((x2646*x2649))+((new_r22*x2647))+((new_r22*x2644))); |
| evalcond[16]=((((-1.0)*x2644*x2657))+((new_r20*x2645))+(((-1.0)*x2647*x2657))+((x2644*x2654))+(((-1.0)*new_r20*x2646))+(((-1.0)*x2643))+((x2647*x2654))); |
| evalcond[17]=((((-1.0)*sj3))+((new_r21*x2645))+(((-1.0)*x2644*x2651))+(((-1.0)*x2647*x2651))+(((-1.0)*new_r21*x2646))+((x2644*x2650))+((x2647*x2650))); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[2]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[3]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[4]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[5]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[6]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[7]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[8]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[9]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[10]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[11]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[12]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[13]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[14]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[15]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[16]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[17]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| |
| } |
| |
| } |
| |
| } else |
| { |
| { |
| IkReal j5array[1], cj5array[1], sj5array[1]; |
| bool j5valid[1]={false}; |
| _nj5 = 1; |
| CheckValue<IkReal> x2658 = IKatan2WithCheck(IkReal((new_r12*sj3)),IkReal(((-1.0)*new_r02*sj3)),IKFAST_ATAN2_MAGTHRESH); |
| if(!x2658.valid){ |
| continue; |
| } |
| CheckValue<IkReal> x2659=IKPowWithIntegerCheck(IKsign(((((-1.0)*new_r00*new_r12))+((new_r02*new_r10)))),-1); |
| if(!x2659.valid){ |
| continue; |
| } |
| j5array[0]=((-1.5707963267949)+(x2658.value)+(((1.5707963267949)*(x2659.value)))); |
| sj5array[0]=IKsin(j5array[0]); |
| cj5array[0]=IKcos(j5array[0]); |
| if( j5array[0] > IKPI ) |
| { |
| j5array[0]-=IK2PI; |
| } |
| else if( j5array[0] < -IKPI ) |
| { j5array[0]+=IK2PI; |
| } |
| j5valid[0] = true; |
| for(int ij5 = 0; ij5 < 1; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < 1; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| { |
| IkReal evalcond[18]; |
| IkReal x2660=IKcos(j5); |
| IkReal x2661=IKsin(j5); |
| IkReal x2662=((1.0)*cj3); |
| IkReal x2663=((0.9999999992)*cj4); |
| IkReal x2664=((0.9999999992)*sj4); |
| IkReal x2665=((3.9999999968e-5)*cj4); |
| IkReal x2666=((3.9999999968e-5)*sj4); |
| IkReal x2667=(new_r12*x2661); |
| IkReal x2668=(new_r02*x2660); |
| IkReal x2669=(new_r01*x2660); |
| IkReal x2670=(new_r11*x2661); |
| IkReal x2671=(sj3*x2661); |
| IkReal x2672=(sj3*x2660); |
| IkReal x2673=(new_r00*x2660); |
| IkReal x2674=(cj3*x2660); |
| IkReal x2675=(cj3*x2661); |
| IkReal x2676=(new_r10*x2661); |
| evalcond[0]=(((new_r02*x2661))+((new_r12*x2660))); |
| evalcond[1]=(sj3+((new_r10*x2660))+((new_r00*x2661))); |
| evalcond[2]=((((-1.0)*x2662))+((new_r11*x2660))+((new_r01*x2661))); |
| evalcond[3]=((((-1.0)*x2660*x2665))+((x2660*x2664))+new_r02); |
| evalcond[4]=(((x2661*x2665))+new_r12+(((-1.0)*x2661*x2664))); |
| evalcond[5]=((((-1.0)*x2667))+(((-1.0)*x2665))+x2664+x2668); |
| evalcond[6]=((((-1.0)*x2676))+(((-1.0)*cj3*x2663))+(((-1.0)*cj3*x2666))+x2673); |
| evalcond[7]=((((-1.0)*x2670))+(((-1.0)*sj3*x2663))+(((-1.0)*sj3*x2666))+x2669); |
| evalcond[8]=((((-1.0)*x2663*x2674))+(((-1.0)*x2666*x2674))+new_r00+x2671); |
| evalcond[9]=(((x2663*x2675))+((x2666*x2675))+new_r10+x2672); |
| evalcond[10]=((((-1.0)*x2663*x2672))+(((-1.0)*x2666*x2672))+new_r01+(((-1.0)*x2661*x2662))); |
| evalcond[11]=((((-1.0)*x2660*x2662))+((x2663*x2671))+((x2666*x2671))+new_r11); |
| evalcond[12]=(((new_r20*x2666))+((new_r20*x2663))+((x2664*x2676))+(((-1.0)*x2664*x2673))+(((-1.0)*x2665*x2676))+((x2665*x2673))); |
| evalcond[13]=(((x2664*x2670))+(((-1.0)*x2665*x2670))+(((-1.0)*x2664*x2669))+((x2665*x2669))+((new_r21*x2666))+((new_r21*x2663))); |
| evalcond[14]=(((x2663*x2668))+(((-1.0)*new_r22*x2665))+((x2666*x2668))+(((-1.0)*x2663*x2667))+((new_r22*x2664))+(((-1.0)*x2666*x2667))); |
| evalcond[15]=((-1.0)+((x2664*x2667))+(((-1.0)*x2664*x2668))+(((-1.0)*x2665*x2667))+((new_r22*x2663))+((new_r22*x2666))+((x2665*x2668))); |
| evalcond[16]=(((x2663*x2673))+(((-1.0)*new_r20*x2665))+((new_r20*x2664))+((x2666*x2673))+(((-1.0)*x2663*x2676))+(((-1.0)*x2662))+(((-1.0)*x2666*x2676))); |
| evalcond[17]=((((-1.0)*sj3))+((x2663*x2669))+((x2666*x2669))+(((-1.0)*new_r21*x2665))+(((-1.0)*x2663*x2670))+(((-1.0)*x2666*x2670))+((new_r21*x2664))); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[2]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[3]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[4]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[5]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[6]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[7]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[8]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[9]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[10]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[11]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[12]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[13]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[14]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[15]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[16]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[17]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| |
| } |
| |
| } |
| } |
| } |
| |
| } |
| |
| } |
| |
| } else |
| { |
| { |
| IkReal j5array[1], cj5array[1], sj5array[1]; |
| bool j5valid[1]={false}; |
| _nj5 = 1; |
| CheckValue<IkReal> x2677 = IKatan2WithCheck(IkReal(new_r12),IkReal(((-1.0)*new_r02)),IKFAST_ATAN2_MAGTHRESH); |
| if(!x2677.valid){ |
| continue; |
| } |
| CheckValue<IkReal> x2678=IKPowWithIntegerCheck(IKsign(((((-3.9999999968e-5)*cj4))+(((0.9999999992)*sj4)))),-1); |
| if(!x2678.valid){ |
| continue; |
| } |
| j5array[0]=((-1.5707963267949)+(x2677.value)+(((1.5707963267949)*(x2678.value)))); |
| sj5array[0]=IKsin(j5array[0]); |
| cj5array[0]=IKcos(j5array[0]); |
| if( j5array[0] > IKPI ) |
| { |
| j5array[0]-=IK2PI; |
| } |
| else if( j5array[0] < -IKPI ) |
| { j5array[0]+=IK2PI; |
| } |
| j5valid[0] = true; |
| for(int ij5 = 0; ij5 < 1; ++ij5) |
| { |
| if( !j5valid[ij5] ) |
| { |
| continue; |
| } |
| _ij5[0] = ij5; _ij5[1] = -1; |
| for(int iij5 = ij5+1; iij5 < 1; ++iij5) |
| { |
| if( j5valid[iij5] && IKabs(cj5array[ij5]-cj5array[iij5]) < IKFAST_SOLUTION_THRESH && IKabs(sj5array[ij5]-sj5array[iij5]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j5valid[iij5]=false; _ij5[1] = iij5; break; |
| } |
| } |
| j5 = j5array[ij5]; cj5 = cj5array[ij5]; sj5 = sj5array[ij5]; |
| { |
| IkReal evalcond[8]; |
| IkReal x2679=IKcos(j5); |
| IkReal x2680=IKsin(j5); |
| IkReal x2681=((0.9999999992)*cj4); |
| IkReal x2682=((3.9999999968e-5)*cj4); |
| IkReal x2683=((0.9999999992)*sj4); |
| IkReal x2684=((3.9999999968e-5)*sj4); |
| IkReal x2685=(new_r12*x2680); |
| IkReal x2686=(new_r02*x2679); |
| IkReal x2687=(new_r01*x2679); |
| IkReal x2688=(new_r11*x2680); |
| IkReal x2689=(new_r00*x2679); |
| IkReal x2690=(new_r10*x2680); |
| evalcond[0]=(((new_r12*x2679))+((new_r02*x2680))); |
| evalcond[1]=((((-1.0)*x2679*x2682))+((x2679*x2683))+new_r02); |
| evalcond[2]=((((-1.0)*x2680*x2683))+new_r12+((x2680*x2682))); |
| evalcond[3]=((((-1.0)*x2682))+(((-1.0)*x2685))+x2686+x2683); |
| evalcond[4]=((((-1.0)*x2683*x2689))+(((-1.0)*x2682*x2690))+((new_r20*x2681))+((new_r20*x2684))+((x2683*x2690))+((x2682*x2689))); |
| evalcond[5]=((((-1.0)*x2683*x2687))+((x2683*x2688))+(((-1.0)*x2682*x2688))+((x2682*x2687))+((new_r21*x2684))+((new_r21*x2681))); |
| evalcond[6]=(((new_r22*x2683))+(((-1.0)*x2684*x2685))+(((-1.0)*new_r22*x2682))+((x2684*x2686))+(((-1.0)*x2681*x2685))+((x2681*x2686))); |
| evalcond[7]=((-1.0)+((new_r22*x2681))+((new_r22*x2684))+(((-1.0)*x2683*x2686))+((x2683*x2685))+(((-1.0)*x2682*x2685))+((x2682*x2686))); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[2]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[3]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[4]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[5]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[6]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[7]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| IkReal j3array[1], cj3array[1], sj3array[1]; |
| bool j3valid[1]={false}; |
| _nj3 = 1; |
| if( IKabs(((((-1.0)*new_r00*sj5))+(((-1.0)*cj5*new_r10)))) < IKFAST_ATAN2_MAGTHRESH && IKabs((((cj5*new_r11))+((new_r01*sj5)))) < IKFAST_ATAN2_MAGTHRESH && IKabs(IKsqr(((((-1.0)*new_r00*sj5))+(((-1.0)*cj5*new_r10))))+IKsqr((((cj5*new_r11))+((new_r01*sj5))))-1) <= IKFAST_SINCOS_THRESH ) |
| continue; |
| j3array[0]=IKatan2(((((-1.0)*new_r00*sj5))+(((-1.0)*cj5*new_r10))), (((cj5*new_r11))+((new_r01*sj5)))); |
| sj3array[0]=IKsin(j3array[0]); |
| cj3array[0]=IKcos(j3array[0]); |
| if( j3array[0] > IKPI ) |
| { |
| j3array[0]-=IK2PI; |
| } |
| else if( j3array[0] < -IKPI ) |
| { j3array[0]+=IK2PI; |
| } |
| j3valid[0] = true; |
| for(int ij3 = 0; ij3 < 1; ++ij3) |
| { |
| if( !j3valid[ij3] ) |
| { |
| continue; |
| } |
| _ij3[0] = ij3; _ij3[1] = -1; |
| for(int iij3 = ij3+1; iij3 < 1; ++iij3) |
| { |
| if( j3valid[iij3] && IKabs(cj3array[ij3]-cj3array[iij3]) < IKFAST_SOLUTION_THRESH && IKabs(sj3array[ij3]-sj3array[iij3]) < IKFAST_SOLUTION_THRESH ) |
| { |
| j3valid[iij3]=false; _ij3[1] = iij3; break; |
| } |
| } |
| j3 = j3array[ij3]; cj3 = cj3array[ij3]; sj3 = sj3array[ij3]; |
| { |
| IkReal evalcond[12]; |
| IkReal x2691=IKcos(j3); |
| IkReal x2692=IKsin(j3); |
| IkReal x2693=((0.9999999992)*cj4); |
| IkReal x2694=((3.9999999968e-5)*cj4); |
| IkReal x2695=(cj5*new_r01); |
| IkReal x2696=((0.9999999992)*sj4); |
| IkReal x2697=(cj5*new_r00); |
| IkReal x2698=((3.9999999968e-5)*sj4); |
| IkReal x2699=(new_r10*sj5); |
| IkReal x2700=(new_r11*sj5); |
| IkReal x2701=((1.0)*x2691); |
| IkReal x2702=(cj5*x2692); |
| IkReal x2703=(sj5*x2691); |
| IkReal x2704=(sj5*x2692); |
| IkReal x2705=(cj5*x2691); |
| IkReal x2706=(x2691*x2698); |
| evalcond[0]=(((cj5*new_r10))+((new_r00*sj5))+x2692); |
| evalcond[1]=(((cj5*new_r11))+((new_r01*sj5))+(((-1.0)*x2701))); |
| evalcond[2]=(((x2691*x2694))+(((-1.0)*x2691*x2696))+new_r20); |
| evalcond[3]=((((-1.0)*x2692*x2696))+new_r21+((x2692*x2694))); |
| evalcond[4]=((((-1.0)*x2691*x2693))+(((-1.0)*x2706))+(((-1.0)*x2699))+x2697); |
| evalcond[5]=((((-1.0)*x2692*x2693))+(((-1.0)*x2692*x2698))+(((-1.0)*x2700))+x2695); |
| evalcond[6]=(x2704+new_r00+(((-1.0)*x2693*x2705))+(((-1.0)*x2698*x2705))); |
| evalcond[7]=(x2702+((x2693*x2703))+((x2698*x2703))+new_r10); |
| evalcond[8]=((((-1.0)*sj5*x2701))+new_r01+(((-1.0)*x2693*x2702))+(((-1.0)*x2698*x2702))); |
| evalcond[9]=((((-1.0)*cj5*x2701))+((x2693*x2704))+((x2698*x2704))+new_r11); |
| evalcond[10]=(((x2697*x2698))+(((-1.0)*new_r20*x2694))+((x2693*x2697))+(((-1.0)*x2698*x2699))+(((-1.0)*x2701))+((new_r20*x2696))+(((-1.0)*x2693*x2699))); |
| evalcond[11]=(((x2693*x2695))+((x2695*x2698))+(((-1.0)*x2692))+((new_r21*x2696))+(((-1.0)*new_r21*x2694))+(((-1.0)*x2693*x2700))+(((-1.0)*x2698*x2700))); |
| if( IKabs(evalcond[0]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[1]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[2]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[3]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[4]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[5]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[6]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[7]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[8]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[9]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[10]) > IKFAST_EVALCOND_THRESH || IKabs(evalcond[11]) > IKFAST_EVALCOND_THRESH ) |
| { |
| continue; |
| } |
| } |
| |
| { |
| std::vector<IkSingleDOFSolutionBase<IkReal> > vinfos(6); |
| vinfos[0].jointtype = 1; |
| vinfos[0].foffset = j0; |
| vinfos[0].indices[0] = _ij0[0]; |
| vinfos[0].indices[1] = _ij0[1]; |
| vinfos[0].maxsolutions = _nj0; |
| vinfos[1].jointtype = 1; |
| vinfos[1].foffset = j1; |
| vinfos[1].indices[0] = _ij1[0]; |
| vinfos[1].indices[1] = _ij1[1]; |
| vinfos[1].maxsolutions = _nj1; |
| vinfos[2].jointtype = 1; |
| vinfos[2].foffset = j2; |
| vinfos[2].indices[0] = _ij2[0]; |
| vinfos[2].indices[1] = _ij2[1]; |
| vinfos[2].maxsolutions = _nj2; |
| vinfos[3].jointtype = 1; |
| vinfos[3].foffset = j3; |
| vinfos[3].indices[0] = _ij3[0]; |
| vinfos[3].indices[1] = _ij3[1]; |
| vinfos[3].maxsolutions = _nj3; |
| vinfos[4].jointtype = 1; |
| vinfos[4].foffset = j4; |
| vinfos[4].indices[0] = _ij4[0]; |
| vinfos[4].indices[1] = _ij4[1]; |
| vinfos[4].maxsolutions = _nj4; |
| vinfos[5].jointtype = 1; |
| vinfos[5].foffset = j5; |
| vinfos[5].indices[0] = _ij5[0]; |
| vinfos[5].indices[1] = _ij5[1]; |
| vinfos[5].maxsolutions = _nj5; |
| std::vector<int> vfree(0); |
| solutions.AddSolution(vinfos,vfree); |
| } |
| } |
| } |
| } |
| } |
| |
| } |
| |
| } |
| } |
| } |
| } |
| }static inline void polyroots3(IkReal rawcoeffs[3+1], IkReal rawroots[3], int& numroots) |
| { |
| using std::complex; |
| if( rawcoeffs[0] == 0 ) { |
| // solve with one reduced degree |
| polyroots2(&rawcoeffs[1], &rawroots[0], numroots); |
| return; |
| } |
| IKFAST_ASSERT(rawcoeffs[0] != 0); |
| const IkReal tol = 128.0*std::numeric_limits<IkReal>::epsilon(); |
| const IkReal tolsqrt = sqrt(std::numeric_limits<IkReal>::epsilon()); |
| complex<IkReal> coeffs[3]; |
| const int maxsteps = 110; |
| for(int i = 0; i < 3; ++i) { |
| coeffs[i] = complex<IkReal>(rawcoeffs[i+1]/rawcoeffs[0]); |
| } |
| complex<IkReal> roots[3]; |
| IkReal err[3]; |
| roots[0] = complex<IkReal>(1,0); |
| roots[1] = complex<IkReal>(0.4,0.9); // any complex number not a root of unity works |
| err[0] = 1.0; |
| err[1] = 1.0; |
| for(int i = 2; i < 3; ++i) { |
| roots[i] = roots[i-1]*roots[1]; |
| err[i] = 1.0; |
| } |
| for(int step = 0; step < maxsteps; ++step) { |
| bool changed = false; |
| for(int i = 0; i < 3; ++i) { |
| if ( err[i] >= tol ) { |
| changed = true; |
| // evaluate |
| complex<IkReal> x = roots[i] + coeffs[0]; |
| for(int j = 1; j < 3; ++j) { |
| x = roots[i] * x + coeffs[j]; |
| } |
| for(int j = 0; j < 3; ++j) { |
| if( i != j ) { |
| if( roots[i] != roots[j] ) { |
| x /= (roots[i] - roots[j]); |
| } |
| } |
| } |
| roots[i] -= x; |
| err[i] = abs(x); |
| } |
| } |
| if( !changed ) { |
| break; |
| } |
| } |
| |
| numroots = 0; |
| bool visited[3] = {false}; |
| for(int i = 0; i < 3; ++i) { |
| if( !visited[i] ) { |
| // might be a multiple root, in which case it will have more error than the other roots |
| // find any neighboring roots, and take the average |
| complex<IkReal> newroot=roots[i]; |
| int n = 1; |
| for(int j = i+1; j < 3; ++j) { |
| // care about error in real much more than imaginary |
| if( abs(real(roots[i])-real(roots[j])) < tolsqrt && abs(imag(roots[i])-imag(roots[j])) < 0.002 ) { |
| newroot += roots[j]; |
| n += 1; |
| visited[j] = true; |
| } |
| } |
| if( n > 1 ) { |
| newroot /= n; |
| } |
| // there are still cases where even the mean is not accurate enough, until a better multi-root algorithm is used, need to use the sqrt |
| if( IKabs(imag(newroot)) < tolsqrt ) { |
| rawroots[numroots++] = real(newroot); |
| } |
| } |
| } |
| } |
| static inline void polyroots2(IkReal rawcoeffs[2+1], IkReal rawroots[2], int& numroots) { |
| IkReal det = rawcoeffs[1]*rawcoeffs[1]-4*rawcoeffs[0]*rawcoeffs[2]; |
| if( det < 0 ) { |
| numroots=0; |
| } |
| else if( det == 0 ) { |
| rawroots[0] = -0.5*rawcoeffs[1]/rawcoeffs[0]; |
| numroots = 1; |
| } |
| else { |
| det = IKsqrt(det); |
| rawroots[0] = (-rawcoeffs[1]+det)/(2*rawcoeffs[0]); |
| rawroots[1] = (-rawcoeffs[1]-det)/(2*rawcoeffs[0]);//rawcoeffs[2]/(rawcoeffs[0]*rawroots[0]); |
| numroots = 2; |
| } |
| } |
| static inline void polyroots4(IkReal rawcoeffs[4+1], IkReal rawroots[4], int& numroots) |
| { |
| using std::complex; |
| if( rawcoeffs[0] == 0 ) { |
| // solve with one reduced degree |
| polyroots3(&rawcoeffs[1], &rawroots[0], numroots); |
| return; |
| } |
| IKFAST_ASSERT(rawcoeffs[0] != 0); |
| const IkReal tol = 128.0*std::numeric_limits<IkReal>::epsilon(); |
| const IkReal tolsqrt = sqrt(std::numeric_limits<IkReal>::epsilon()); |
| complex<IkReal> coeffs[4]; |
| const int maxsteps = 110; |
| for(int i = 0; i < 4; ++i) { |
| coeffs[i] = complex<IkReal>(rawcoeffs[i+1]/rawcoeffs[0]); |
| } |
| complex<IkReal> roots[4]; |
| IkReal err[4]; |
| roots[0] = complex<IkReal>(1,0); |
| roots[1] = complex<IkReal>(0.4,0.9); // any complex number not a root of unity works |
| err[0] = 1.0; |
| err[1] = 1.0; |
| for(int i = 2; i < 4; ++i) { |
| roots[i] = roots[i-1]*roots[1]; |
| err[i] = 1.0; |
| } |
| for(int step = 0; step < maxsteps; ++step) { |
| bool changed = false; |
| for(int i = 0; i < 4; ++i) { |
| if ( err[i] >= tol ) { |
| changed = true; |
| // evaluate |
| complex<IkReal> x = roots[i] + coeffs[0]; |
| for(int j = 1; j < 4; ++j) { |
| x = roots[i] * x + coeffs[j]; |
| } |
| for(int j = 0; j < 4; ++j) { |
| if( i != j ) { |
| if( roots[i] != roots[j] ) { |
| x /= (roots[i] - roots[j]); |
| } |
| } |
| } |
| roots[i] -= x; |
| err[i] = abs(x); |
| } |
| } |
| if( !changed ) { |
| break; |
| } |
| } |
| |
| numroots = 0; |
| bool visited[4] = {false}; |
| for(int i = 0; i < 4; ++i) { |
| if( !visited[i] ) { |
| // might be a multiple root, in which case it will have more error than the other roots |
| // find any neighboring roots, and take the average |
| complex<IkReal> newroot=roots[i]; |
| int n = 1; |
| for(int j = i+1; j < 4; ++j) { |
| // care about error in real much more than imaginary |
| if( abs(real(roots[i])-real(roots[j])) < tolsqrt && abs(imag(roots[i])-imag(roots[j])) < 0.002 ) { |
| newroot += roots[j]; |
| n += 1; |
| visited[j] = true; |
| } |
| } |
| if( n > 1 ) { |
| newroot /= n; |
| } |
| // there are still cases where even the mean is not accurate enough, until a better multi-root algorithm is used, need to use the sqrt |
| if( IKabs(imag(newroot)) < tolsqrt ) { |
| rawroots[numroots++] = real(newroot); |
| } |
| } |
| } |
| } |
| }; |
| |
| |
| /// solves the inverse kinematics equations. |
| /// \param pfree is an array specifying the free joints of the chain. |
| IKFAST_API bool ComputeIk(const IkReal* eetrans, const IkReal* eerot, const IkReal* pfree, IkSolutionListBase<IkReal>& solutions) { |
| IKSolver solver; |
| return solver.ComputeIk(eetrans,eerot,pfree,solutions); |
| } |
| |
| IKFAST_API bool ComputeIk2(const IkReal* eetrans, const IkReal* eerot, const IkReal* pfree, IkSolutionListBase<IkReal>& solutions, void* pOpenRAVEManip) { |
| IKSolver solver; |
| return solver.ComputeIk(eetrans,eerot,pfree,solutions); |
| } |
| |
| IKFAST_API const char* GetKinematicsHash() { return "<robot:GenericRobot - irb4600 (cf95c00c17c4b2b3fc4659a63b598d9c)>"; } |
| |
| IKFAST_API const char* GetIkFastVersion() { return "0x1000004a"; } |
| |
| #ifdef IKFAST_NAMESPACE |
| } // end namespace |
| #endif |
| |
| #ifndef IKFAST_NO_MAIN |
| #include <stdio.h> |
| #include <stdlib.h> |
| #ifdef IKFAST_NAMESPACE |
| using namespace IKFAST_NAMESPACE; |
| #endif |
| int main(int argc, char** argv) |
| { |
| if( argc != 12+GetNumFreeParameters()+1 ) { |
| printf("\nUsage: ./ik r00 r01 r02 t0 r10 r11 r12 t1 r20 r21 r22 t2 free0 ...\n\n" |
| "Returns the ik solutions given the transformation of the end effector specified by\n" |
| "a 3x3 rotation R (rXX), and a 3x1 translation (tX).\n" |
| "There are %d free parameters that have to be specified.\n\n",GetNumFreeParameters()); |
| return 1; |
| } |
| |
| IkSolutionList<IkReal> solutions; |
| std::vector<IkReal> vfree(GetNumFreeParameters()); |
| IkReal eerot[9],eetrans[3]; |
| eerot[0] = atof(argv[1]); eerot[1] = atof(argv[2]); eerot[2] = atof(argv[3]); eetrans[0] = atof(argv[4]); |
| eerot[3] = atof(argv[5]); eerot[4] = atof(argv[6]); eerot[5] = atof(argv[7]); eetrans[1] = atof(argv[8]); |
| eerot[6] = atof(argv[9]); eerot[7] = atof(argv[10]); eerot[8] = atof(argv[11]); eetrans[2] = atof(argv[12]); |
| for(std::size_t i = 0; i < vfree.size(); ++i) |
| vfree[i] = atof(argv[13+i]); |
| bool bSuccess = ComputeIk(eetrans, eerot, vfree.size() > 0 ? &vfree[0] : NULL, solutions); |
| |
| if( !bSuccess ) { |
| fprintf(stderr,"Failed to get ik solution\n"); |
| return -1; |
| } |
| |
| printf("Found %d ik solutions:\n", (int)solutions.GetNumSolutions()); |
| std::vector<IkReal> solvalues(GetNumJoints()); |
| for(std::size_t i = 0; i < solutions.GetNumSolutions(); ++i) { |
| const IkSolutionBase<IkReal>& sol = solutions.GetSolution(i); |
| printf("sol%d (free=%d): ", (int)i, (int)sol.GetFree().size()); |
| std::vector<IkReal> vsolfree(sol.GetFree().size()); |
| sol.GetSolution(&solvalues[0],vsolfree.size()>0?&vsolfree[0]:NULL); |
| for( std::size_t j = 0; j < solvalues.size(); ++j) |
| printf("%.15f, ", solvalues[j]); |
| printf("\n"); |
| } |
| return 0; |
| } |
| |
| #endif |