19 memset(
_sensor0, 0, 3 *
sizeof(
float));
20 memset(
_sensor1, 0, 3 *
sizeof(
float));
22 memcpy(
_mapping, mapping, 6 *
sizeof(
int));
26 if (joystick_dev[0] ==
'*')
33 fprintf(stderr,
"vrpn_Tracker_GameTrak: " 34 "Can't open joystick %s\n", joystick_dev);
63 memset(
d_quat, 0,
sizeof(vrpn_float64) * 4);
75 fprintf(stderr,
"GameTrak tracker: can't write message: tossing\n");
87 fprintf(stderr,
"GameTrak tracker: can't write message: tossing\n");
108 vrpn_float64 s1x, s1y, s1z;
109 vrpn_float64 s2x, s2y, s2z;
119 vrpn_float64 coef = (32.5 / 180.0) * Q_PI;
121 vrpn_float64 distance0 = 1.5 * (1 - s1z);
122 vrpn_float64 angleX0 = -s1x * coef;
123 vrpn_float64 angleY0 = -s1y * coef;
125 vrpn_float64 distance1 = 1.5 * (1 - s2z);
126 vrpn_float64 angleX1 = -s2x * coef;
127 vrpn_float64 angleY1 = -s2y * coef;
131 gametrak->
_sensor0[0] = sin(angleX0) * distance0 + 0.065;
132 gametrak->
_sensor0[1] = cos(angleX0) * sin(angleY0) * distance0;
133 gametrak->
_sensor0[2] = cos(angleX0) * cos(angleY0) * distance0;
135 gametrak->
_sensor1[0] = sin(angleX1) * distance1 - 0.065;
136 gametrak->
_sensor1[1] = cos(angleX1) * sin(angleY1) * distance1;
137 gametrak->
_sensor1[2] = cos(angleX1) * cos(angleY1) * distance1;
struct timeval _timestamp
static void VRPN_CALLBACK handle_update(void *, const vrpn_ANALOGCB)
const vrpn_uint32 vrpn_CONNECTION_LOW_LATENCY
void server_mainloop(void)
Handles functions that all servers should provide in their mainloop() (ping/pong, for example) Should...
virtual ~vrpn_Tracker_GameTrak()
virtual void mainloop()
Called once through each main loop iteration to handle updates. Remote object mainloop() should call ...
Generic connection class not specific to the transport mechanism.
vrpn_Connection * d_connection
Connection that this object talks to.
virtual int pack_message(vrpn_uint32 len, struct timeval time, vrpn_int32 type, vrpn_int32 sender, const char *buffer, vrpn_uint32 class_of_service)
Pack a message that will be sent the next time mainloop() is called. Turn off the RELIABLE flag if yo...
vrpn_float64 channel[vrpn_CHANNEL_MAX]
virtual int encode_to(char *buf)
virtual int register_change_handler(void *userdata, vrpn_ANALOGCHANGEHANDLER handler)
virtual void mainloop()
Called once through each main loop iteration to handle updates. Remote object mainloop() should call ...
vrpn_Analog_Remote * _analog
vrpn_int32 d_sender_id
Sender ID registered with the connection.
vrpn_Tracker_GameTrak(const char *name, vrpn_Connection *trackercon, const char *joystick_dev, int *mapping)