So - I think I’m missing something fundamental. Or maybe not.
I have a player (a space ship) that rotates fixed about the center of the screen. I have a variable, r, that represents its angle of rotation compared to some arbitrary origin. So far, so good.
Now, I want to be able to touch, and turn toward that touch. I’ve done it like this:
t = vec2(CurrentTouch.x-w2, CurrentTouch.y-w2)
r = math.deg(origin:angleBetween(t))-90
Origin is a vector that defines that arbitrary origin I mentioned. The 90 is a fudge factor because my model was sideways.
This works. But now I want it to not “snap” to the touch, but turn at some maximum angular speed - say 5 degrees per frame. This being a game-level approximation of rotational inertia.
Here’s the issue - I’m starting to have to convert back and forth between angles and vectors and I am concerned about cumulative effects on the angles and it’s just becoming ugly and non-elegant. And non-elegant is often a sign I’m doing something wrong.
There’s a part of me says I should be able to do this all with vectors, elegantly. I know rotate() takes degrees, but I have this gut feeling the rest should be all in vectors. There’s a part of my spine screaming “dot product” at me, but I’ve not been a math major for a loooong time.
So - someone who knows the math better (Andrew, I’m looking at you, but anyone might know better than I - this sort of thing for me has always been very trial-and-error.) to say “nope, it’s complex, that’s just what you do” or “how pitiful, you do this and this -see?”.
I would normally just pummel it into submission, but when I make code for others to see… Well, I should try to set a better example. And I am not proud - I freely admit my ignorance, I seek to learn the right way to do it.
In the end, what I really want is “turnToward(x,y)” such that it observes some maximum rotation, and so that it rotates thru the smallest angle. I’ve done this before by brute force (did I ever share my “battle” JavaScript stuff? Remind me to… It’s pretty fun if you don’t view source) but one of the issues with brute force is I look at my own JavaScript code and say “ewww…”