コード例 #1
0
ファイル: torquespring.cpp プロジェクト: erwincoumans/dynamo
void DL_torquespring::calculate_and_apply(void) {
  DL_vector t;
  calculate_torque();
  if (maxtorque!=0) {
    if (maxtorque>0) {
      if (fabs(storque)>maxtorque) {
        deactivate();
        // possibly raise an event here
        return;
      }
    }
    else { // maxforce<0
      DL_Scalar tl=fabs(storque);
      if (tl<maxtorque) {
        storque*=maxtorque/tl;
        // possibly raise an event here
      }
    }
  }
  springtorque(&t);
  d->applytorque(&t);
  if (g_is_dyna) {
    t.neg(&t);
    ((DL_dyna*)g)->applytorque(&t);
  }
}
コード例 #2
0
ファイル: track_simulation.c プロジェクト: urThomas/Rislunsj
double track_simulation(double speed){

	unsigned int time_now = millis();
	total_distance += speed*(double)(time_now - time_last_call);
	time_last_call = time_now;

	if (track_distance[current_track_segment] < total_distance) {current_track_segment+=1;}

	float segment_distance = track_elevation_change[current_track_segment]-track_elevation_change[current_track_segment+1];

	double tourque_reference = calculate_torque(speed, segment_distance, track_elevation_change[current_track_segment+1]);
	return tourque_reference;
}