# [RUBY] FINDING COORDINATES ALONG A LINE USING AN ANGLE

## Posts

Pages:
1

Given x1 and y1 on any chart, to find x2 and y2 along the same line:

x2 = x1 + (distance * cos(angle))

y2 = y1 + (distance * sin(angle))

RPG Maker is programmed so that

*cos*and

*sin*are accessed using Math.cos and Math.sin, which returns the answer in radians. This threw me for a loop when I tried it, because I had my angle in degrees. Angles must first be converted into radians before they can be used in Math.cos and Math.sin. This is done through the following:

radians = (angle * pi) / 180

This is where we are now:

radians = (angle * pi) / 180

x2 = x1 + (distance * Math.cos(radians))

y2 = y1 + (distance * Math.sin(radians))

Now, for the twist ending. I conceptualized 0-degrees as pointing straight up; 0 degrees was 12 o' clock. But Math.cos and Math.sin consider 0 degrees as flat; instead, 90 degrees is pointing straight up, like the right angle of all of those math problem triangles in high school.

Conceptualizing 0 degrees as up, the final look of the equation is this:

corrected_degrees = (angle + 450) % 360

radians = (corrected_degrees * pi) / 180

x2 = x1 + (distance * Math.cos(radians))

y2 = y1 + (distance * Math.sin(radians))

Currently, this code works, but the movement appears to be offset towards the upper-left. When I am able to move a distance of 1 space, these are the squares accessible to my unit:

I don't understand why this is happening. I can understand why a diagonal movement might be inaccessible due to being two coordinates away, but I don't know why I'm restricted as shown in the image.

----------------------------------------------------------------------------------

The problem has been solved. I needed to execute a ".round" on "x2" and "y2", because certain angles yield move-distances that are slightly below 1.

Pages:
1