User talk:Dsekercioglu/MEA
- [View source↑]
- [History↑]
Contents
Thread title | Replies | Last modified |
---|---|---|
And to make it even faster | 22 | 16:08, 25 September 2017 |
Principles behind? | 1 | 02:56, 24 September 2017 |
double x = bulletSpeed; double a = -3.508129323E-5; double b = 2.460363294E-3; double c = -6.666318894E-2; double d = 8.545020365E-1; double e = -3.337830707; double angle = a * x * x * x * x + b * x * x * x + c * x * x + d * x + e; return Math.sin(angle) / (bulletSpeed / 8 - Math.cos(angle));
I know. But calculated numbers weren't exact and Wolfram Alpha's computation time exceeds.
Precision is up to 9 numbers. I think that it is enough.
Sorry, I didn't see that you changed the code. In my robot I did it like that but it is more understandable with Math.pow(x, y).
Wow, I had no idea that the escape angle could be 15% bigger than traditional MEA calculation at the most common bulletspeed of 1.9 . . . Seems like my list of things to do for GresSuffurd to become top-10 again, gets bigger and bigger.
Can you give the formula you used to prove that my formula is wrong?
I also agree that it's wrong. But why is it bigger than the correct one? Can you clarify that?
I understood that the problem with this is that it assumes that it's optimal to move in a fixed retreat angle (like moving in a perfect orbit), when it's actually true that the best retreat angle isn't a function only of the initial position, but it changes as you move around the wave. Is that the real issue?
I knew it's wrong because I had made the same mistake in my previous research.
It's bigger, simply because it uses some smaller distance to calculate the radians.
The correct one is:
<math>\theta = \int_0^{t_1} \frac{v_{lateral}}{d_{initial} + v_{retreat} t}dt</math>
where <math>\theta</math> is the escape angle, <math>t_1</math> is the total time (from bullet fired, to bullet hit). (this formula is true even if <math>v_{lateral}</math> or <math>v_{retreat}</math> is not constant)
Note that <math>d_{initial} + v_{retreat} t</math> is bigger than (his) <math>(v_{bullet} - \overline{v_{retreat}})t_1</math> almost all of the time,
as <math>d_{initial} =
(v_{bullet} - \overline{v_{retreat}})t_1</math>.
Therefore his integral (<math>\theta = \int_0^{t_1} \frac{v_{lateral}}{(v_{bullet} - \overline{v_{retreat}})t_1}dt = \frac{v_{lateral}}{v_{bullet} - \overline{v_{retreat}}}</math>, assume <math>v_{lateral}</math> is constant) is bigger.
- Actually, I'm not sure that Traditional MEA is correct. It assumes that the bot doesn't change it's move angle until the wave hits. Because of that you can't get a MEA higher than Pi / 2 with Traditional MEA formula. When you move orbitally, lateralVelocity / (bulletSpeed + advancingVelocity) is the formula that will give you the EA so you can get a EA higher than Pi / 2.
in your calculation, you are calculating escape angle theta as theta = v_lateral / (v_bullet - v_retreat)
however, imo this formula is only true when you are moving orbital exactly ;)
Else, you have to calculate some integral, as the change rate of theta is changing everytime the distance changes. (Like my version)