The present invention is illustrated by way of example and not limited in the accompanying figures in which like reference numerals indicate similar elements and in which:
In the following description of the various embodiments, reference is made to the accompanying drawings, which form a part hereof, and in which is shown by way of illustration various embodiments in which the invention may be practiced. It is to be understood that other embodiments may be utilized and structural and functional modifications may be made without departing from the scope of the present invention.
Device 100 may receive data and other input from a variety of sources including network devices (not shown) via a network interface 115. Network interface 115 may coordinate communications between device 100 and a network system or device (not shown) using networking protocols such as TCP/IP, UDP, SMTP, FTP and the like. Input may also be received through an input module 125 that manages incoming data from various sources such as optical disk drive 140, microphone 141, keyboard 142 and gamepad controller or control panel 143. The input interface 125 may include different ports for different types of input devices. For example, interface 125 may provide a Universal Serial Bus (USB) port for keyboard 142 which connects using a USB plug. Alternatively, an external optical disk drive like drive 140 may be connected to computing device 100 through a parallel port. In yet another arrangement, control panel 143 may send input signals to device 100 through an infrared port. Optical disk drive 140 may further provide storage capabilities and include a connection to storage unit 120 for external storage of data.
Further, device 100 may also output signals and data to one or more peripheral devices such as speaker 144 and display monitor 145. Audio signals from music or an audio track of a content file may be played through speaker 144. A video portion of the same or different content file may be simultaneously rendered on display monitor 145. Output module 130 may include a variety of interfaces and adapters to insure compatibility with output devices 144 and 145. For example, output module 130 may include a display adapter for providing the correct type and/or form of display signals to monitor 145. Output module 130 may further store control functions associated with output devices 144 and 145 such as volume control and brightness controls. In one or more arrangements, input received by input module 125 from control panel 143 may affect the rendering of one or more elements of a user interface displayed on monitor 145. For example, input from control panel 143 may control the movement and position of a bowling ball in a video game outputted on monitor 145.
While general computing device 100 has been described with respect to one specific embodiment, one of skill in the art will appreciate that a variety of configurations may be implemented.
In one or more arrangements, sensor board 235a may determine a direction and displacement of motion associated with roller 215 using multiple opto couplers (not shown). For example, sensor board 235a may use two opto couplers that are spaced apart to detect wheel slots of optical encoder wheel 225a as it rotates and to determine a direction of motion based on the detection of the wheel slots. Using the sensor readings from each of the multiple opto couplers, a sensor board 235a and/or underlying computing device may determine whether motion is in a first direction or a second direction. Since optical encoder wheel 225a might only spin in two directions (clockwise or counter clockwise), sensor board 235a might only be responsible for determining rotation of trackball 210 in one of two directions. For example, if optical encoder wheel 225a were oriented in such a way that optical encoder wheel 225a registers rotation of trackball 210 in a left and right direction, sensor board 235a may only determine whether trackball 210 is rotating in a left direction or a right direction.
The table of
In the event the transition from the last value pair to current value pair reflects a change of more than one step, a value greater than the predefined one step value, e.g., 1, may be applied to the signal counter. A change of more than one step may refer to instances where values of both sensors PH0 and PH1 change from the last input to the current input. The predefined value associated with changes of more than one step may be, e.g., 2. Whether the predefined value associated with changes of more than one step is subtracted from or added to the signal counter may be dependent on a direction of rotation associated with a previous last input/current input value pair. After the predefined period of time, the signal counter may then be transmitted to a processor to produce a corresponding result. For example, if the signal counter value is +50, an element of a video game interface may be spun in the forward direction with a force or speed of 50. In contrast, if the signal counter value is −20, the same element of the video game interface may be spun in the backward direction with a smaller force or speed of 20, instead.
A direction of motion is generally defined based on an orientation of a trackball system. In one or more arrangements, directions of rotation of a trackball may be defined based on an orientation of the trackball system with respect to a display screen associated with the overall gaming device. In one example, rotating a trackball of the trackball system toward the display screen may be considered a forward rotation while rotating the trackball away from the display screen may register as a backward rotation. The game interface may further define a left and right direction from the perspective of a user located at a position facing the display screen and such that the trackball system is positioned between the user and the display screen.
In addition, two directional axes 440 and 445 may be defined based on the orientation and positioning of user 430, display screen 425 and trackball system 400. Vertical directional axis 440 may be defined by an axis perpendicular to display screen 424 and intersecting trackball system 400 while horizontal directional axis 445 may be defined based on an axis intersecting trackball system 400 and perpendicular to the vertical directional axis 440. Each axis 440 and 445 may further be divided into a positive direction and a negative direction of motion or rotation. For example, a portion of horizontal axis 445 to the right of vertical axis 440 (when viewed from the perspective of user 430's position and orientation in
Trackball system 420 may be oriented in such a way that roller 420 is positioned at the intersection of the axes 440 and 445, between display screen 425 and trackball 410 and parallel to horizontal directional axis 445. Additionally, the axis of rotation of roller 420 is perpendicular to the vertical axis 440. The position of rollers 415a and 415b may be defined based on an angular distance from roller 420. In one or more instances, the roller 415a is located at a distance from roller 420 equal to the distance between roller 420 and roller 415b. Further, rollers 415a and 415b may be oriented such that the axis of rotation of roller 415a is perpendicular to the axis of rotation of 415b. Alternatively or additionally, the position of rollers 415a, 415b and 420 may be defined based on an angular offset from axes 440 and 445. For example, the location of roller 415a may be identified as 45° from the negative portion of horizontal axis 445 and 45° from the negative portion of vertical axis 440. The position of roller 415b, on the other hand, may also be identified as 45° from the negative portion of vertical axis 440, but 45° from the positive portion of horizontal axis 445. Such a positioning of rollers 415a, 415b and 420 and orientation of the trackball system 420 as a whole may reduce deviation in the trackball 410's direction of rotation.
In one or more arrangements, the magnitude of rotation of sensor rollers 415a and 415b may each be translated into a magnitude of rotation along the vertical and horizontal axes 440 and 445, respectively. For example, using the positioning and orientation of rollers 415a, 415b and 420 described above, the magnitude of rotation in each of the directions of rotation of rollers 415a and 415b may be translated into magnitudes of rotation along horizontal directional axis 445 and vertical directional axis 440. Since each of rollers 415a and 415b are 45° from each of the horizontal and vertical directional axes 445 and 440, magnitudes of rotation along the vertical and horizontal axes 440 and 445 may be calculated according to the following equations:
wherein dx is a magnitude of rotation or displacement along the horizontal directional axis 445 and dy is a magnitude of rotation along the vertical axis 440. The variables d1 and d2 represent the displacement values determined by rollers 415a and 415b, respectively. The resulting value may be either negative or positive indicating whether the direction is a positive or negative direction of the corresponding axis 440 or 445. A direction of rotation may further be determined using the calculated dx and dy values. The direction of rotation may further be expressed in terms of an angular offset. For example, a direction of rotation of trackball 410 may be expressed as 225° from the positive horizontal directional axis 445.
According to one or more aspects, the direction, magnitude and speed of rotation of a trackball may be translated into different actions in, for example, an electronic video game such as bowling. In an electronic bowling game, the direction and magnitude of rotation of a trackball such as trackball 410 of
According to one or more aspects, directions of rotation may be categorized into predefined ranges of directions corresponding to various actions or functions. In other words, a corresponding result or function may be determined based on whether a direction in which a trackball 510 is rotated falls within one or more predefined ranges of directions. For example, a game interface may associate a launch action or function with rotations in a 60°–120° range of directions, where 0° is directly to the right. Thus, rotations of trackball 510 in the 60°–120° range may register as a launch command. Similarly, a game interface may define a 160°–200° range of directions as a position shift command. In such an instance, a user's rotation of trackball 510 in, for example, a 175° direction may shift the position of an electronic bowling ball to the left. By defining action or function associations based on a range of directions, a user might not be required to rotate trackball 510 in a single specific direction to elicit the desired response or reaction. The predefined ranges may further be customized based on the function or action associated with the range of directions. In one example, a function for setting a linear velocity of the bowling ball may correspond to a 45° to 135° range of directions relative to the positive horizontal axis. In another example, a command associated with setting an angular velocity of the electronic ball may correspond to 253° and 283° range relative to the positive horizontal axis. Additionally, a function or command may be determined from a user's input based on a speed of the input in a particular direction (e.g., speed along the y-axis). Thus, a function or command might not be invoked if a user's speed of input in one or more directions does not meet a predefined threshold velocity. Alternatively, the system may determine a resultant action based on a component of a directional input, e.g., by analyzing a forward, reverse, left, or right component of a multidirectional input vector.
In one or more arrangements, by rotating trackball 501 in the backward direction, the electronic bowling game may enter a spin mode, locking out further manipulations to the position of electronic ball 510. In other words, once a user pulls trackball 501 backward to indicate a desire to enter a spin mode, rotating trackball 501 in either the left or the right direction might not register as a position shift action. Instead, as illustrated in
Alternatively or additionally, a game interface may define threshold velocities associated with rotating a trackball. In
If the determined direction does not correspond to a forward range of directions, a determination is subsequently made in step 730 to determine whether the direction corresponds to a left or right range of directions. For example, the determined direction may be compared against a predefined left or right range of directions. If the determined direction does correspond to either the predefined left or right range of directions, then in step 735, one or more characteristics, including magnitude, of the rotational input may be determined based on data associated with the detected input. In one or more arrangements, a magnitude of rotation along a particular axis, e.g., a horizontal axis, may be calculated to determine appropriate parameters in a resultant action. For example, the magnitude of rotation of a user's rotational input along a horizontal axis may be relevant in determining the amount by which the position of an electronic bowling ball should be adjusted in step 740. In another example, the speed of the user's rotational input may be used to determine a speed with which to adjust the position of the electronic ball.
If, however, the determined direction does not correspond to a forward range of directions or a left or right range of directions, a further determination is made to determine whether the determined direction corresponds to a backward range of directions in step 745. If the determined direction does correspond to the backward range of directions, then in step 750, the game interface may enter a spin mode. Entering a spin mode may cause other directions and/or types of inputs to be restricted. For example, upon entering a spin mode, the game interface might not register left and/or right rotations of a trackball or other input device as a positional shift request. In one or more arrangements, entering a spin mode modifies the correspondence between input direction and resultant actions or functions.
Alternatively, if the identified direction does not correspond to the forward range of directions, but does correspond to a backwards range of directions in step 780 (e.g., includes a backward component, regardless of left/right direction of input), the game interface may further determine a magnitude and speed of rotation associated with the detected user input in step 785, based on the left, right, and/or backward components of the input. Using the determined direction, magnitude and speed of the detected input, a determined spin may be applied to the electronic ball in steps 790 and 795. In particular, the angle of spin of the electronic ball may be adjusted based on the identified direction in step 790. For example, in one or more arrangements, a backward component of the rotational input is reversed such that the backward component is converted into a forward spin component. Thus, instead of applying a back spin, a forward spin may be applied. Further, the magnitude and/or speed of rotation may be used to establish a speed of spin of the electronic ball in step 795. Once the spin has been applied to the electronic ball, a user may launch the ball by inputting a forward rotation. In response, spin parameters may be applied to the ball to determine a resultant trajectory or path. The resultant trajectory may be determined based on simulated laws of physics and corresponding computations. For example, coefficients of friction associated with different portions of a bowling lane may be used in the calculations. A linear velocity and angular velocity of the electronic bowling ball, as determined by the rotational input and spin parameters, may also be relevant to the trajectory calculations. In one or more instances, the significance or magnitude of spin may depend on the friction of the portion of the bowling lane. In one or more arrangements, the electronic ball is placed directly on a lane surface once the ball crosses the foul line. That is, loft might not be supported.
Once the electronic ball is launched, the electronic ball may encounter a number of variables associated with a simulated virtual environment such as a bowling lane. These variables may include one or more coefficients of friction associated with one or more sections of the simulated lane surface, and obstacles such as bowling pins. One or more laws of physics may be applied to the motions and interactions of the elements of the virtual environment based on the variables that are defined and/or applied to the environment and to the electronic ball. For example, a first portion of the simulated bowling lane may be oiled and thus have a low coefficient of friction. Thus, as the electronic ball is moving across this portion of the lane, an applied spin might have a lesser effect on the ball. In a second portion of the bowling lane, however, the coefficient of friction may be increased such that an applied spin has a greater effect on the ball and is registered based on the magnitude of the simulated friction between the ball and the lane surface. In another example, the reaction of one or more bowling pins may be defined based on a simulated weight distribution and position of each pin in relation to the ball (or other pins) upon contact.
Referring again to
If the user input does correspond to launching the electronic ball, a user path may be determined based on the parameters selected or inputted by the user in step 820. For example, a direction of launch may be determined based on the direction of the launch input (i.e., rotation of a trackball within a predefined forward range of directions)). In addition, spin parameters may be determined based on an applied angle and speed of rotation of the user input. Using various calculations and/or modeling protocols, a user path may be determined. In step 825, a determination is made as to whether the user path matches the target path. The determination may be performed based on whether the extracted or determined set of points associated with the target path matches a second set of coordinates associated with the user path. Some flexibility may be provided in the target path to reduce the level of difficulty in matching the target path. If the paths match, a user may be rewarded with points or other prizes in step 830. If the paths do not match, however, the user may be given a failure message in step 835. Alternatively or additionally, a user may be given advice on how to adjust the parameters of the electronic ball to better match the target path.
While the methods and systems described herein have been discussed with respect to trackballs and trackball input systems, any one of a variety of two-dimensional input devices may also be implemented. For example, a user may stroke a touch pad in one or more directions to elicit the responses and activate the functions described herein. In addition, various parameters of the touch stroke may be used to modify or defined parameters associated with an element of the interface. The speed of a stroke, for example, may be used to determine the speed with which an electronic bowling ball is launched. Other two-dimensional input devices include joysticks and mice.
The methods and features recited herein may further be implemented through any number of computer readable mediums that are able to store computer readable instructions. Examples of computer readable mediums that may be used include RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, DVD or other optical disk storage, magnetic cassettes, magnetic tape, magnetic storage and the like.
The present invention has been described in terms of preferred and exemplary embodiments thereof. Numerous other embodiments, modifications and variations within the scope and spirit of the appended claims will occur to persons of ordinary skill in the art from a review of this disclosure.