| Author | Message | 
        
			| Mind 
					Joined: Thu Mar 06, 2008 10:54 pm
 Posts: 1360
 Location: USA
   |   Circular MotionIt's a pretty basic topic if you know what you're doing. Unfortunately, I do not.  This is what I've come to so far: Code: function Create(self)circlex = self.Pos.X;
 circley = self.Pos.Y;
 radius = 10;
 speed = (2 * math.pi * radius)/2
 speedScale  = speedScale + .5;
 end
 
 function Update(self)
 angle = speedScale;
 self.Pos.X = circlex + math.sin(angle)*radius;
 self.Pos.Y = circley + math.cos(angle)*radius;
 end
I'm pretty positive it has to do with speed/speedscale, but I'm unable to find what it is. Any help would be greatly appreciated.Edit: It's the fact that I don't get how to constantly make the point actually MOVE around the circle, rather than it being a static point on the circle.
 
 | 
		
			| Thu Feb 24, 2011 1:20 am | 
					
					   | 
	
	
		|  | 
	
			| TheLastBanana DRL Developer 
					Joined: Wed Dec 13, 2006 5:27 am
 Posts: 3138
 Location: A little south and a lot west of Moscow
   |   Re: Circular MotionThe problem is that the variable "angle" never changes. You're just setting it to the same value every frame, instead of incrementing it. 
 
 | 
		
			| Thu Feb 24, 2011 1:57 am | 
					
					     | 
	
	
		|  | 
	
			| Mind 
					Joined: Thu Mar 06, 2008 10:54 pm
 Posts: 1360
 Location: USA
   |   Re: Circular MotionBut that's what I don't get.  I have angle(SpeedScale) increasing in increments of 0.5... Idk why I have two variables when I could have just one, but it should  steadily increase by .5 every single frame, no?  I'm sure it's something dumb that I'm not noticing, but like I said I can't get it. And should it decrease back to 0 once it does reach 180, right? (By adding code, of course) Code: function Create(self)circlex = self.Pos.X;
 circley = self.Pos.Y;
 radius = 10;
 speed = (2 * math.pi * radius)/2
 speedScale  = speedScale + .5;
 end
 
 function Update(self)
 angle = speedScale;
 self.Pos.X = circlex + math.sin(angle)*radius;
 self.Pos.Y = circley + math.cos(angle)*radius;
 end
 
 | 
		
			| Thu Feb 24, 2011 2:04 am | 
					
					   | 
	
	
		|  | 
	
			| Roast Veg Data Realms Elite 
					Joined: Tue May 25, 2010 8:27 pm
 Posts: 4522
 Location: Constant motion
   |   Re: Circular MotionIt will only update if it's in the update function. Declare speedscale in create, then increment it in update. 
 
 | 
		
			| Thu Feb 24, 2011 2:08 am | 
					
					   | 
	
	
		|  | 
	
			| Mind 
					Joined: Thu Mar 06, 2008 10:54 pm
 Posts: 1360
 Location: USA
   |   Re: Circular MotionI love you, TLB and Roast Veg both.  I seriously appreciate the help, guys.  Thanks a lot.(it worked)
 
 
 | 
		
			| Thu Feb 24, 2011 2:14 am | 
					
					   | 
	
	
		|  | 
	
			| Mind 
					Joined: Thu Mar 06, 2008 10:54 pm
 Posts: 1360
 Location: USA
   |   Re: Circular MotionCode: function Create(self)circlex = self.Pos.X;
 circley = self.Pos.Y;
 radius = 100;
 radiuscheck = true;
 speedScale  = 0;
 
 end
 
 function Update(self)
 if radius == 100 then
 radiuscheck = false;
 end
 
 if radius > 99 and radiuscheck == false then
 radius = radius + 1;
 elseif radius > 200 then
 radius = radius - 1;
 elseif radius < 50 then
 radius = radius + 1
 end
 
 
 speedScale = speedScale + 0.1;
 if speedScale > 180 then
 speedScale = 0;
 end
 
 angle = speedScale;
 self.Pos.X = circlex + math.cos(angle)*radius;
 self.Pos.Y = circley + math.sin(angle)*radius;
 end
Alright I'm trying to make the radius increase to 200 then decrease back to 100 continuously, but I can't figure out how to through checks.  It just keeps increasing, for I can see the radius = radius + 1 is overriding the "if radius > 200" statement.  I just don't know how to fix it. Thanks again!
 
 | 
		
			| Thu Feb 24, 2011 2:39 am | 
					
					   | 
	
	
		|  | 
	
			| Roast Veg Data Realms Elite 
					Joined: Tue May 25, 2010 8:27 pm
 Posts: 4522
 Location: Constant motion
   |   Re: Circular MotionCode: function Create(self)circlex = self.Pos.X;
 circley = self.Pos.Y;
 radius = 100;
 radiuscheck = true;
 speedScale  = 0;
 reverse = false;
 end
 
 function Update(self)
 if radius == 50 then
 reverse = false;
 elseif radius == 200 then
 reverse = true;
 end
 
 if reverse == false then
 radius = radius + 1;
 else
 radius = radius -1;
 end
 
 speedScale = speedScale + 0.1;
 if speedScale > 180 then
 speedScale = 0;
 end
 
 angle = speedScale;
 self.Pos.X = circlex + math.cos(angle)*radius;
 self.Pos.Y = circley + math.sin(angle)*radius;
 end
 
 | 
		
			| Thu Feb 24, 2011 2:50 am | 
					
					   | 
	
	
		|  | 
	
			| Mind 
					Joined: Thu Mar 06, 2008 10:54 pm
 Posts: 1360
 Location: USA
   |   Re: Circular MotionThat makes so much more sense.  Changing the values at specific values rather than a range of them. Thanks <3
 
 
 | 
		
			| Thu Feb 24, 2011 3:02 am | 
					
					   | 
	
	
		|  | 
	
			| Roast Veg Data Realms Elite 
					Joined: Tue May 25, 2010 8:27 pm
 Posts: 4522
 Location: Constant motion
   |   Re: Circular MotionDon't mention it. I'm having rather the Lua filled evening anyway. 
 
 | 
		
			| Thu Feb 24, 2011 3:03 am | 
					
					   | 
	
	
		|  | 
	
			| Nocifer 
					Joined: Tue Mar 16, 2010 7:38 pm
 Posts: 447
 Location: The Ninth Circle
   |   Re: Circular MotionJust to add to your Lua-filled evening, how well does Lua handle parametric equations? I'm wondering if that might help with defining this sort of thing. 
 
 | 
		
			| Thu Mar 03, 2011 1:25 am | 
					
					   | 
	
	
		|  | 
	
			| TheLastBanana DRL Developer 
					Joined: Wed Dec 13, 2006 5:27 am
 Posts: 3138
 Location: A little south and a lot west of Moscow
   |   Re: Circular MotionI'm not sure what you mean by that. You don't really use equations in programming. 
 
 | 
		
			| Thu Mar 03, 2011 1:33 am | 
					
					     | 
	
	
		|  | 
	
			| 411570N3 
					Joined: Wed Jan 07, 2009 10:26 am
 Posts: 4074
 Location: That quaint little British colony down south
   |   Re: Circular MotionLua would handle parametric equations just fine, but it's probably easier and more efficient to chuck it all on the one line. 
 
 | 
		
			| Thu Mar 03, 2011 7:58 am | 
					
					     | 
	
	
		|  | 
	
	
		|  |