Exemplo n.º 1
0
      /** Compute the interaction matrix from a subset of
       * the possible features.
       */
      dg::Matrix& FeatureProjectedLine::
      computeJacobian( dg::Matrix& J,int time )
      {
	sotDEBUGIN(15);

	const MatrixHomogeneous & A = xaSIN(time), & B = xbSIN(time);
	const dg::Vector & C = xcSIN(time);
	const double
	  xa=A(0,3),xb=B(0,3),xc=C(0),
	  ya=A(1,3),yb=B(1,3),yc=C(1);

	const dg::Matrix & JA = JaSIN(time), & JB = JbSIN(time);

	const int nq=JA.cols();
	assert((int)JB.cols()==nq);
	J.resize(1,nq);
	for( int i=0;i<nq;++i )
	  {
	    const double
	      & dxa=JA(0,i),& dxb=JB(0,i),
	      & dya=JA(1,i),& dyb=JB(1,i);
	    J(0,i) = dxa*(yb-yc) - dxb*(ya-yc) - dya*(xb-xc) + dyb*(xa-xc);
	  }

	sotDEBUGOUT(15);
	return J;
      }
Exemplo n.º 2
0
void bind_events() {
  keyboard_event_t kb;
  joystick_event_t js;
  joybutton_event_t jb;

#define KBD(p, r, k) kb = (keyboard_event_t) {.player = 0, .press_action = p,\
    .release_action = r, .keycode = k}; bind_keyboard_event(kb)

  KBD(ACTION_START_UP, ACTION_END_UP, SDLK_w);
  KBD(ACTION_START_DOWN, ACTION_END_DOWN, SDLK_s);
  KBD(ACTION_START_LEFT, ACTION_END_LEFT, SDLK_d);
  KBD(ACTION_START_RIGHT, ACTION_END_RIGHT, SDLK_a);
  KBD(ACTION_START_JUMP, ACTION_END_JUMP, SDLK_SPACE);

#define JB(s, p, r, b) jb = (joybutton_event_t) { .stick = s, .press_action = p,\
    .release_action = r, .button = b}; bind_joybutton_event(jb)

  bind_joystick_to_player(0, 0);
  bind_joystick_to_player(1, 1);
  JB(0, ACTION_START_JUMP, ACTION_END_JUMP, 14);
  JB(1, ACTION_START_JUMP, ACTION_END_JUMP, 14);

#define JS(s, a, t, minp, minf, maxp, maxf) js = (joystick_event_t) {\
    .stick = s,\
    .action_min_pass = minp, .action_min_fail = minf,\
    .action_max_pass = maxp, .action_max_fail = maxf,\
    .axis = a, .threshold = t}; bind_joystick_event(js)

  JS(0, 0, 1000, ACTION_START_RIGHT, ACTION_END_RIGHT, ACTION_START_LEFT, ACTION_END_LEFT);
  JS(0, 1, 1000, ACTION_START_UP, ACTION_END_UP, ACTION_START_DOWN, ACTION_END_DOWN);
  JS(1, 0, 1000, ACTION_START_RIGHT, ACTION_END_RIGHT, ACTION_START_LEFT, ACTION_END_LEFT);
  JS(1, 1, 1000, ACTION_START_UP, ACTION_END_UP, ACTION_START_DOWN, ACTION_END_DOWN);

#undef KBD
#undef JB
#undef JS
}