Jump to content

  • Log In with Google      Sign In   
  • Create Account

We're offering banner ads on our site from just $5!

1. Details HERE. 2. GDNet+ Subscriptions HERE. 3. Ad upload HERE.


Please help - Stopping cubes and Speed


Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

  • You cannot reply to this topic
5 replies to this topic

#1 Ys   Members   -  Reputation: 122

Like
Likes
Like

Posted 22 October 2001 - 02:20 AM

q1)Im learning opengl and decided to have a go with cubes (eg spinning etc..) ive made them move about the screen and stuff but how can i make them stop, q2) Ive tried my opengl applications on different machines and the speed is dramitcally altered (i.e very slow or fast) i know this is because of the ability of different graphics cards, but how can i make it run at the speed i want no matter what the graphics card its using. Thanks Chris

Sponsor:

#2 no way   Members   -  Reputation: 122

Like
Likes
Like

Posted 22 October 2001 - 02:47 AM

To stop cubes, you have to implement Hunter class. Now there are two methods for the Hunter to catch a Cube, first it can try to project itself into barycentre of the Cube in 5th dimension, thats where the Cubes are most vulnerable. But if cube manages to extrapolate its volume outside of its own convex hull, this method is not gonna work. Another method involves the Hunter to traverse octree to the highest leaf, and trying to tetrahedralize the cube from there via raycasting.

(J/K)

#3 Scarab0   Members   -  Reputation: 122

Like
Likes
Like

Posted 22 October 2001 - 03:23 AM

Hahaha lol. Yeah that could work, or you could try the simpler (but crude) approach: blow it to bits with a rocket launcher.

#4 xstreme2000   Members   -  Reputation: 152

Like
Likes
Like

Posted 22 October 2001 - 03:56 AM

I wouldn't normally reply to this but Scarab & no way are twisting your mind. I don't know alot about OGL but here are the two things you need to do:

1) Stopping your cubes from spinning:
Somewhere in your source is the code to spin your cubes. (at a guess its a call to glRotate() or something). Setup a variable some thing like this:

bool CubeSpinning = true;

then where ever you catch a key press change the state of the variable. eg:

case 'VK_S':
if (CubeSpinning) {
CubeSpinning = false;
} else {
CubeSpinning = true;
}


then change you code for rotating your cube which looks something like this:

glRotate(...);

to take note of the variable CubeSpinning:

if (CubeSpinning) glRotate(...);


2) Making them spin at the same speed on different machines:
The way you do this is by taking the time since you last rotated and multipling it by a constant then rotating you cube by that amount.

You can do this by adding the following code above your rotate code.


static DWORD lastTickCount, thisTickCount;
thisTickCount = GetTickCount();
DWORD timeTaken = thisTickCount - lastTickCount;
lastTickCount = thisTickCount;

glRotate(timeTaken*0.1f, <+whatever params the fuction takes>); // Change you rotate line


The function Rotate is what ever call rotates the cube and the 0.1f it the number of whatever units you are using (Degrees or Radians) to rotate the cube every millisecond.

Hope that makes sense and is what you are looking for
Good luck
X2K

Edited by - xstreme2000 on October 22, 2001 10:57:19 AM

Edited by - xstreme2000 on October 22, 2001 10:59:47 AM

#5 Scarab0   Members   -  Reputation: 122

Like
Likes
Like

Posted 22 October 2001 - 04:33 AM

quote:
I wouldn''t normally reply to this but Scarab & no way are twisting your mind.

Couldn''t resist.

Anyway, as xstreme2000 is saying you need some variable to keep track of whether you should spin the cube or not. It would certainly help to see your code in answering this one though. Personally, if I had a spinning cude, I''d probably have some variables like cubeAngle and cubeRotation. Then every frame use: cubeAngle += cubeRotation;
glRotate(cubeAngle, ....);

Then you can certain keypresses change the cubeRotation variable. A value of 0 would make it stop rotating, a negative value would make it spin clockwise and a positive value would make it spin counter-clockwise.

As on your second question, I agree with xstreme2000 except that you should initialize lastTickCount somewhere otherwise your program could crash. (Notice the COULD, it might also work perfectly.)

Cheers.

#6 Ys   Members   -  Reputation: 122

Like
Likes
Like

Posted 22 October 2001 - 05:45 AM

no way you are a real twat




Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.



PARTNERS