// template: // must contain one and only one instance of '$(f)' (without the quotes) // if if !canEndWithKey -> must not end with $(f) // if starts with $(f) then it expands to the full path + file name. // if doesn't start with $(f) then it's expanded to file name only (with extension) // if doesn't start with $(f) and ends up relative, // then it's relative to base (not to cwd) // No checks are performed if the result file name can be created. // If this proves useful, we can move it into Path:: . Right now there's no need. static wxString ApplyTemplate(const wxString &name, const wxDirName &base, const wxString &fileTemplate, const wxString &filename, bool canEndWithKey) { wxString tem(fileTemplate); wxString key = INDEX_TEMPLATE_KEY; tem = tem.Trim(true).Trim(false); // both sides size_t first = tem.find(key); if (first == wxString::npos // not found || first != tem.rfind(key) // more than one instance || !canEndWithKey && first == tem.length() - key.length()) { Console.Error(L"Invalid %s template '%s'.\n" L"Template must contain exactly one '%s' and must not end with it. Abotring.", WX_STR(name), WX_STR(tem), WX_STR(key)); return L""; } wxString fname(filename); if (first > 0) fname = Path::GetFilename(fname); // without path tem.Replace(key, fname); if (first > 0) tem = Path::Combine(base, tem); // ignores appRoot if tem is absolute return tem; }
void Text::tokenize(Char space, Text &text) const { TextIter iter(*this); TextItem::Type type; const Char *p; size_t n; const Location *loc; while (iter.next(type, p, n, loc)) { switch (type) { case TextItem::data: text.addCharsTokenize(p, n, *loc, space); break; case TextItem::sdata: case TextItem::cdata: { text.addEntityStart(*loc); text.addCharsTokenize(p, n, *loc, space); Location tem(*loc); tem += n; text.addEntityEnd(tem); } break; case TextItem::ignore: text.ignoreChar(*p, *loc); break; default: text.addSimple(type, *loc); break; } } if (text.size() > 0 && text.lastChar() == space) text.ignoreLastChar(); }
const char* const xlwLogger::GetTime() { time_t tem(time(&theTime[2])); char * timePtr = asctime(gmtime(&tem)); for(unsigned long i(0);i<8;i++)timeTemp[i]=wchar_t(timePtr[i+11]); timeTemp[8]=0; return timeTemp; }
int tem(int n, int find){ if(n <= 0) return 0; if(n % 10 == find) return 1; return tem(n/10, find); }
int longestIncreasingPath(vector<vector<int>>& matrix) { if(matrix.size()==0)return 0; int Max=0; vector<int> tem(matrix[0].size(),0); vector<vector<int>> hash(matrix.size(), tem); for(int i = 0; i< matrix.size(); i++) for(int j = 0; j < matrix[0].size(); j++) Max = max(DFS(matrix, i, j, INT_MIN, hash), Max); return Max; }
int main(){ int i = 0, m = 10000000, k = 0; for(i = 1; i < m; i++, k = 0){ if(i % 3 == 0 || tem(i, 3)){ printf("Fizz"); k++; } if(i % 5 == 0 || tem(i, 5)){ printf("Buzz"); k++; } if(!k) printf("%d", i); printf("\n"); } return 0; }
P PointerTable<P, K, HF, KF>::insert(P p, Boolean replace) { size_t h; if (vec_.size() == 0) { vec_.assign(8, P(0)); usedLimit_ = 4; h = startIndex(KF::key(*p)); } else { for (h = startIndex(KF::key(*p)); vec_[h] != 0 ; h = nextIndex(h)) if (KF::key(*vec_[h]) == KF::key(*p)) { if (replace) { P tem(vec_[h]); vec_[h] = p; return tem; } else return vec_[h]; } if (used_ >= usedLimit_) { if (vec_.size() > size_t(-1)/2) { if (usedLimit_ == vec_.size() - 1) abort(); // FIXME throw an exception else usedLimit_ = vec_.size() - 1; } else { // rehash Vector<P> oldVec(vec_.size()*2, P(0)); vec_.swap(oldVec); usedLimit_ = vec_.size() / 2; for (size_t i = 0; i < oldVec.size(); i++) if (oldVec[i] != 0) { size_t j; for (j = startIndex(KF::key(*oldVec[i])); vec_[j] != 0; j = nextIndex(j)) ; vec_[j] = oldVec[i]; } for (h = startIndex(KF::key(*p)); vec_[h] != 0; h = nextIndex(h)) ; } } } used_++; vec_[h] = p; return 0; }
//toj为目标关节的编号,一般为最末端的关节 void Kinematics::InverseKine(int toj) { Matrix err(6,1); Matrix tem(6,1); float dq[6]; const float lambda = 0.99f; ForwardKine(0); Matrix Jacobian(6); for (int n=0; n<10 ; n++) { CalJacobian(Jacobian); //Jacobian.PrintMatrix(); if (!Jacobian.Invert()) { //std::cout<<"NO Jacobian Invert"<<std::endl; } CalErr(toj,err); //err.PrintMatrix(); if (err.Norm()<1E-6f) { //TestPrint(); return; } tem =Jacobian * err * lambda; //tem.PrintMatrix(); for (int n=0; n<6; n++) dq[n] = tem.GetElement(n,0); for (unsigned int i = 1 ; i<mJointU.size(); i++) { mJointU[i].q = mJointU[i].q + dq[i-1]; } ForwardKine(0); } //TestPrint(); }
void Kinematics::CalJacobian(Matrix &Jacobian) { Matrix tem_i_r(3,3); Matrix tem_i_a(3,1); Matrix tem(3,1); float u1,u2,u3,v1,v2,v3; for (unsigned int i =1; i<mJointU.size(); i++) { tem_i_r.SetData(mJointU[i].R); tem_i_a.SetData(mJointU[i].Ax); tem = tem_i_r * tem_i_a; //tem.PrintMatrix(); v1 = mTarget.P[0] - mJointU[i].P[0]; v2 = mTarget.P[1] - mJointU[i].P[1]; v3 = mTarget.P[2] - mJointU[i].P[2]; u1 = tem.GetElement(0,0); u2 = tem.GetElement(1,0); u3 = tem.GetElement(2,0); //u x v = { u2v3-v2u3 , u3v1-v3u1 , u1v2-u2v1 } Jacobian.SetElement(0,i-1,u2*v3 - v2*u3 ); Jacobian.SetElement(1,i-1,u3*v1 - v3*u1 ); Jacobian.SetElement(2,i-1,u1*v2 - v1*u2 ); Jacobian.SetElement(3,i-1,u1); Jacobian.SetElement(4,i-1,u2); Jacobian.SetElement(5,i-1,u3); } Jacobian.SetElement(0,5,0.0f ); Jacobian.SetElement(1,5,0.0f ); Jacobian.SetElement(2,5,0.0f ); }
Time Date::operator -(Date second){ long temp=(seconds-second.tSeconds()); Time tem(true,temp); return tem; }
void EncodeOutputCharStream::handleUnencodable(Char c, OutputByteStream *) { EncodeOutputCharStream tem(byteStream_, encoder_); if (escaper_) (*escaper_)(tem, c); }
void NBImpedance::InducedField(Grid1D& efield, Grid1D& line_current_density) { int n=efield.get_size(); int N_t=time_window.size()/2; if ( N_t == 0) { for(int j=0;j<n;j++) efield[j]=0.0; return; } static int t=0; double bl_amp, bl_real, bl_imag, bl_phase; double dz=efield.get_dz(); double circum=dz*n; double bucket_h = circum/(double)harmonic; vektor current(n); for(int j=0; j<n; j++) current[j]=line_current_density[j]; realft(current,1); if(t==0) { for(int j=0;j<2*N_t;j+=2) { time_window[j]=current[2*(int)harmonic]; time_window[j+1]=current[2*(int)harmonic+1]; } t=1; } time_window.pop_front(); time_window.pop_front(); time_window.push_back(current[2*(int)harmonic]); time_window.push_back(current[2*(int)harmonic+1]); vektor tem(2*N_t); for(int j=0;j<2*N_t;j++) tem[j]=time_window[j]; four1(tem,1); for(int j=0;j<=N_t/2;j++) { komplex temc(tem[2*j],tem[2*j+1]); komplex temc2(0.0,0.0); temc2=-temc*Z[N_t/2-j]; tem[2*j]=temc2.real(); tem[2*j+1]=temc2.imag(); } for(int j=1;j<N_t/2;j++) { komplex temc(tem[2*N_t-2*j-3],tem[2*N_t-2*j-2]); komplex temc2(0.0,0.0); temc2=-temc*Z[j+N_t/2]; tem[2*N_t-2*j-3]=temc2.real(); tem[2*N_t-2*j-2]=temc2.imag(); } four1(tem,-1); bl_real=tem[2*N_t-2]/circum; bl_imag=tem[2*N_t-1]/circum; bl_amp = sqrt(bl_real*bl_real+bl_imag*bl_imag) ; bl_phase = atan2(bl_imag,bl_real) ; for(int j=0;j<n;j++) efield[j]=bl_amp*cos(2.0*PI/bucket_h*(j+0.5)*dz-bl_phase); return; }
void Kinematics::ForwardKine(int startJ) { if (startJ!=0) { int i = startJ - 1; Matrix tem_i_r(3,3,mJointU[i].R); Matrix tem_j_b(3,1,mJointU[startJ].b); Matrix tem_j_r(3,3); Matrix tem(3,1); tem = tem_i_r * tem_j_b; mJointU[startJ].P [0] = mJointU[i].P[0]+tem.GetElement(0,0); mJointU[startJ].P [1] = mJointU[i].P[1]+tem.GetElement(1,0); mJointU[startJ].P [2] = mJointU[i].P[2]+tem.GetElement(2,0); Matrix tem_a(3); tem_a.SetElement(0,0,0); tem_a.SetElement(0,1,-mJointU[startJ].Ax[2]); tem_a.SetElement(0,2,mJointU[startJ].Ax[1]); tem_a.SetElement(1,0,mJointU[startJ].Ax[2]); tem_a.SetElement(1,1,0); tem_a.SetElement(1,2,-mJointU[startJ].Ax[0]); tem_a.SetElement(2,0,-mJointU[startJ].Ax[1]); tem_a.SetElement(2,1,mJointU[startJ].Ax[0]); tem_a.SetElement(2,2,0); Matrix tem_E; tem_E.MakeUnitMatrix(3); tem_E = tem_E + tem_a*sin(mJointU[startJ].q) + tem_a*tem_a*(1-cos(mJointU[startJ].q)); tem_j_r = tem_i_r * tem_E; /* std::cout<<mJointU[startJ].P [0]<<std::endl; std::cout<<mJointU[startJ].P [1]<<std::endl; std::cout<<mJointU[startJ].P [2]<<std::endl; std::cout<<std::endl; tem_j_r.PrintMatrix(); */ /* for (int n=0; n<3; n++) for (int nn=0; nn<3; nn++) mJointU[startJ].R[3*n+nn] = tem_j_r.GetElement(n,nn); */ memcpy(mJointU[startJ].R,tem_j_r.GetData(),9*sizeof(float)); } /* if (startJ==6) { std::cout<<mJointU[startJ].P [0]<<std::endl; std::cout<<mJointU[startJ].P [1]<<std::endl; std::cout<<mJointU[startJ].P [2]<<std::endl; } */ if (startJ+1 <mJointU.size()) ForwardKine(startJ+1); }