O'Neill Cylinder

Posted By: Turotulco

O'Neill Cylinder - 11/30/04 04:57

OK, this one is going to be fun. 6.31 Commercial.

I have created a hollow cylinder and set it to rotate slowly around the x axis. I have cbabe inside, just floating there. I'm using the RPG point and click method to indicate a direction in which to move. Let's just assume for the moment she has something to push against. Now when she collides with the outer wall of the cylinder, I would like for her to pick up the circular motion from friction and begin to follow the rotation of the outer wall. This means gravity for me will not be on the z axis, but on a line from the x axis through the center of the entity that is in contact with the spinning cylinder wall. Entities on either side of the cylinder will appear to be standing on the ceiling.

This sounds like a good physics thing to me. Would it be best to apply the physics to the cylinder? Or to all of the individual objects I place inside of it? Is it even possible to allow this kind of friction to affect a collection of objects? Think tables, chairs, rayguns and little green men.

I'm really going into this blind; don't really know where to start. Any advice is appreciated.
Posted By: Doug

Re: O'Neill Cylinder - 11/30/04 05:57

I would avoid trying to simulate this with physics, especially if you have many objects. This is a "Fun with Vector Math" sort of problem.

Write a script where all your moving entities calculate their own gravity vector by taking a point on the center line of the cylinder to the entity (keeping the vector perpendicular to the center line). As an extra bonus, the length of the vector could be used to scale the force. You would also use this vector to handle the entity's orientation.

Rotating the entity is a bit trickier. But it can be done with good old Pythagoras Theorem.

Do a quick search on the web for "physics centrifugal force" and you'll find all sorts of math.
Posted By: Turotulco

Re: O'Neill Cylinder - 11/30/04 06:38

Thanks Doug. I was hoping physics was going to be a magic bullet for me here. This is sounding more and more fun all the time. I've got cbabe weightless and moving around inside the cylinder now, banging into the walls like a chick in a washing machine..

I figured I could use the distance to x_axis for my g force, and I have the formula to calculate that for different cylinder sizes and rotation speeds. Thanks for the Pythagoran tip. I'd forgotten about that. That would be excellent. Then it doesn't matter what the rotation speed is at different levels I can just figure her aspect with respect to the floor and apply a force along the axis\entity line.

The thing about mimicing gravity with centripital force is that "down" is not on a straight line with the axis\cylinder wall intersection. You are always leaning a little forward into the direction of rotation as you are carried around. So when you walk in the direction of rotation, it feels like you are walikng uphill. But when you walk in the other direction, against the rotation, it feels like you are walking downhill. The interior of the cylinder will be all uphill in one direction and down in another, Very Escheresque.

Thanks for the pointer, so to speak. <g>
Posted By: Doug

Re: O'Neill Cylinder - 11/30/04 10:29

Quote:

So when you walk in the direction of rotation, it feels like you are walikng uphill. But when you walk in the other direction, against the rotation, it feels like you are walking downhill.




If you plan on simulating this, you are going all out.
Maybe you want to start out with a Dyson sphere?
Posted By: Turotulco

Re: O'Neill Cylinder - 11/30/04 15:19

The math for centrifugal force is the same for a sphere as a cylinder, isn't it? The object rotates at a set RPM. As you move towards the center of the rotating structure the centrifugal force lessens due to the drop in radial velocity at the smaller radius. An O'Neil cylinder is just a Dyson sphere that has been extruded.

BTW, thanks for the search tip, I whipped up a little calculator that allows me to enter a mass value and calculate the CF at different radius for different RPM. Some really neat results. Not sure if I will have to take Corialis force into this yet, but I suspect so. And friction may come into play yet, in one form or another.

My next challange is to come up with the formula to calculate object rotation on the wall surface. But as you pointed out, good old Pythagoras to the rescue there.

This is sweet!
Posted By: Doug

Re: O'Neill Cylinder - 12/01/04 05:20

Quote:

An O'Neil cylinder is just a Dyson sphere that has been extruded.




You're right. I think I just wanted to use the term Dyson Sphere in a forum answer.
Posted By: Turotulco

Re: O'Neill Cylinder - 12/01/04 05:57

I completely understand. <G>

I got one solution for the angle that didn't involve much calculation at all. Since the cylinder is rolling on it's x axis, the roll factor modulo 360 gives me the current roll angle. If I track the entities distance from the 0 "meridian", I know the angle needed for the entity. It's all frame of reference after all.

I'll still planning to investigate the straight vector calculation. I'll need to settle on one method or the other for a more general centrifugal movement scheme. But the calculated vectors may be necessary if I try to model something like a baseball game under centrifugal conditions.

One thing that comes to mind is any entity injected into the rotating cylinder is going to be affected by the airflow of the atmosphere around it. as it drifts further from the 0 axis there will be more and more of a "push" from the spinning gas inside the cylinder that will add to the objects own angle of momentum. Until it splatters into the wall anyway.

I'm now playing with the vector math and dusting off old math skills that I haven't used in ages. I'm trying to stick with c_move and the latest entity techniques as much as possible. Does anyone know where I can find a little more documentation on c_move and it's relatives?
Posted By: Turotulco

Re: O'Neill Cylinder - 12/01/04 07:16

Quote:

Does anyone know where I can find a little more documentation on c_move and it's relatives?




Never mind found it. Ahhhhh.... too sweet.
© 2024 lite-C Forums