⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 step.cpp.diff

📁 ODE v0.8 很好用的多平台几何物理模拟库源代码,内含多個示例
💻 DIFF
字号:
966,1066c966,989< /******************** breakable joint contribution ***********************/<     // this saves us a few dereferences<     dxJointBreakInfo *jBI = joint[i]->breakInfo;<     // we need joint feedback if the joint is breakable or if the user<     // requested feedback.< 	if (jBI||fb) {<       // we need feedback on the amount of force that this joint is<       // applying to the bodies. we use a slightly slower computation<       // that splits out the force components and puts them in the<       // feedback structure.<       dJointFeedback temp_fb; // temporary storage for joint feedback< 	  dReal data1[8],data2[8];< 	  Multiply1_8q1 (data1, JJ, lambda+ofs[i], info[i].m);< 	  dReal *cf1 = cforce + 8*b1->tag;< 	  cf1[0] += (temp_fb.f1[0] = data1[0]);< 	  cf1[1] += (temp_fb.f1[1] = data1[1]);< 	  cf1[2] += (temp_fb.f1[2] = data1[2]);< 	  cf1[4] += (temp_fb.t1[0] = data1[4]);< 	  cf1[5] += (temp_fb.t1[1] = data1[5]);< 	  cf1[6] += (temp_fb.t1[2] = data1[6]);< 	  if (b2) {< 	    Multiply1_8q1 (data2, JJ + 8*info[i].m, lambda+ofs[i], info[i].m);< 	    dReal *cf2 = cforce + 8*b2->tag;< 	    cf2[0] += (temp_fb.f2[0] = data2[0]);< 	    cf2[1] += (temp_fb.f2[1] = data2[1]);< 	    cf2[2] += (temp_fb.f2[2] = data2[2]);< 	    cf2[4] += (temp_fb.t2[0] = data2[4]);< 	    cf2[5] += (temp_fb.t2[1] = data2[5]);< 	    cf2[6] += (temp_fb.t2[2] = data2[6]);< 	  }< 	  // if the user requested so we must copy the feedback information to< 	  // the feedback struct that the user suplied.< 	  if (fb) {< 	    // copy temp_fb to fb< 	    fb->f1[0] = temp_fb.f1[0];< 	    fb->f1[1] = temp_fb.f1[1];< 	    fb->f1[2] = temp_fb.f1[2];< 	    fb->t1[0] = temp_fb.t1[0];< 	    fb->t1[1] = temp_fb.t1[1];< 	    fb->t1[2] = temp_fb.t1[2];< 	    if (b2) {< 	      fb->f2[0] = temp_fb.f2[0];< 	      fb->f2[1] = temp_fb.f2[1];< 	      fb->f2[2] = temp_fb.f2[2];< 	      fb->t2[0] = temp_fb.t2[0];< 	      fb->t2[1] = temp_fb.t2[1];< 	      fb->t2[2] = temp_fb.t2[2];< 	    }< 	  }< 	  // if the joint is breakable we need to check the breaking conditions<       if (jBI) {<         dReal relCF1[3];< 		dReal relCT1[3];< 		// multiply the force and torque vectors by the rotation matrix of body 1< 		dMULTIPLY1_331 (&relCF1[0],b1->R,&temp_fb.f1[0]);< 		dMULTIPLY1_331 (&relCT1[0],b1->R,&temp_fb.t1[0]);< 		if (jBI->flags & dJOINT_BREAK_AT_B1_FORCE) {< 		  // check if the force is to high<           for (int i = 0; i < 3; i++) {<             if (relCF1[i] > jBI->b1MaxF[i]) {< 		      jBI->flags |= dJOINT_BROKEN;< 		      goto doneCheckingBreaks;< 		    }<           }< 		}< 		if (jBI->flags & dJOINT_BREAK_AT_B1_TORQUE) {< 		  // check if the torque is to high<           for (int i = 0; i < 3; i++) {<             if (relCT1[i] > jBI->b1MaxT[i]) {< 		      jBI->flags |= dJOINT_BROKEN;< 		      goto doneCheckingBreaks;<             }<           }< 		}<         if (b2) {<           dReal relCF2[3];<           dReal relCT2[3];<           // multiply the force and torque vectors by the rotation matrix of body 2<           dMULTIPLY1_331 (&relCF2[0],b2->R,&temp_fb.f2[0]);<           dMULTIPLY1_331 (&relCT2[0],b2->R,&temp_fb.t2[0]);< 		  if (jBI->flags & dJOINT_BREAK_AT_B2_FORCE) {<             // check if the force is to high<             for (int i = 0; i < 3; i++) {<               if (relCF2[i] > jBI->b2MaxF[i]) {<                 jBI->flags |= dJOINT_BROKEN;<                 goto doneCheckingBreaks;<               }<             }< 		  }< 		  if (jBI->flags & dJOINT_BREAK_AT_B2_TORQUE) {< 		  // check if the torque is to high<             for (int i = 0; i < 3; i++) {<               if (relCT2[i] > jBI->b2MaxT[i]) {<                 jBI->flags |= dJOINT_BROKEN;<                 goto doneCheckingBreaks;<               }<             }< 		  }<         }< 		doneCheckingBreaks:< 		;--->       if (fb) {> 	// the user has requested feedback on the amount of force that this> 	// joint is applying to the bodies. we use a slightly slower> 	// computation that splits out the force components and puts them> 	// in the feedback structure.> 	dReal data1[8],data2[8];> 	Multiply1_8q1 (data1, JJ, lambda+ofs[i], info[i].m);> 	dReal *cf1 = cforce + 8*b1->tag;> 	cf1[0] += (fb->f1[0] = data1[0]);> 	cf1[1] += (fb->f1[1] = data1[1]);> 	cf1[2] += (fb->f1[2] = data1[2]);> 	cf1[4] += (fb->t1[0] = data1[4]);> 	cf1[5] += (fb->t1[1] = data1[5]);> 	cf1[6] += (fb->t1[2] = data1[6]);> 	if (b2){> 	  Multiply1_8q1 (data2, JJ + 8*info[i].m, lambda+ofs[i], info[i].m);> 	  dReal *cf2 = cforce + 8*b2->tag;> 	  cf2[0] += (fb->f2[0] = data2[0]);> 	  cf2[1] += (fb->f2[1] = data2[1]);> 	  cf2[2] += (fb->f2[2] = data2[2]);> 	  cf2[4] += (fb->t2[0] = data2[4]);> 	  cf2[5] += (fb->t2[1] = data2[5]);> 	  cf2[6] += (fb->t2[2] = data2[6]);> 	}1068,1069d990<     }< /*************************************************************************/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -