For cannons
Elevation
clamp((acos((cos(RollAngle) * (-sin(-PitchAngle)) * ((TargetDistance + rate(TargetDistance) * TargetDistance/Velocity) * sin(((TargetElevation + 90 + rate(TargetElevation) * TargetDistance/Velocity) + (asin((cos(TargetElevation + (rate(TargetElevation)) * TargetDistance/Velocity) * (TargetDistance + rate(TargetDistance)*TargetDistance/Velocity) * 9.81)/(Velocity * Velocity))/2))) * cos((TargetHeading - Heading + rate(TargetHeading) * TargetDistance/Velocity))) + sin(RollAngle) * ((TargetDistance + rate(TargetDistance) * TargetDistance/Velocity) * sin(((TargetElevation + 90 + rate(TargetElevation) * TargetDistance/Velocity) + (asin((cos(TargetElevation + (rate(TargetElevation)) * TargetDistance/Velocity) * (TargetDistance + rate(TargetDistance)*TargetDistance/Velocity) * 9.81)/(Velocity * Velocity))/2))) * sin((TargetHeading - Heading + rate(TargetHeading) * TargetDistance/Velocity))) + cos(RollAngle) * cos(-PitchAngle) * ((TargetDistance + rate(TargetDistance) * TargetDistance/Velocity) * cos(((TargetElevation + 90 + rate(TargetElevation) * TargetDistance/Velocity) + (asin((cos(TargetElevation + (rate(TargetElevation)) * TargetDistance/Velocity) * (TargetDistance + rate(TargetDistance)*TargetDistance/Velocity) * 9.81)/(Velocity * Velocity))/2))))) / (TargetDistance + rate(TargetDistance) * TargetDistance/Velocity)) - 90),negativeAngle,positiveAngle)
Heading
clamp(deltaangle(turretAngle,
atan((sin(RollAngle) * sin(-PitchAngle) * ((TargetDistance + rate(TargetDistance) * TargetDistance/Velocity) * sin(((TargetElevation + 90 + rate(TargetElevation) * TargetDistance/Velocity) + (asin((cos(TargetElevation + (rate(TargetElevation)) * TargetDistance/Velocity) * (TargetDistance + rate(TargetDistance)*TargetDistance/Velocity) * 9.81)/(Velocity * Velocity))/2))) * cos((TargetHeading - Heading + rate(TargetHeading) * TargetDistance/Velocity))) + cos(RollAngle) * ((TargetDistance + rate(TargetDistance) * TargetDistance/Velocity) * sin(((TargetElevation + 90 + rate(TargetElevation) * TargetDistance/Velocity) + (asin((cos(TargetElevation + (rate(TargetElevation)) * TargetDistance/Velocity) * (TargetDistance + rate(TargetDistance)*TargetDistance/Velocity) * 9.81)/(Velocity * Velocity))/2))) * sin((TargetHeading - Heading + rate(TargetHeading) * TargetDistance/Velocity))) + cos(-PitchAngle) * (-sin(RollAngle)) * ((TargetDistance + rate(TargetDistance) * TargetDistance/Velocity) * cos(((TargetElevation + 90 + rate(TargetElevation) * TargetDistance/Velocity) + (asin((cos(TargetElevation + (rate(TargetElevation)) * TargetDistance/Velocity) * (TargetDistance + rate(TargetDistance)*TargetDistance/Velocity) * 9.81)/(Velocity * Velocity))/2))))) / (cos(-PitchAngle) * ((TargetDistance + rate(TargetDistance) * TargetDistance/Velocity) * sin(((TargetElevation + 90 + rate(TargetElevation) * TargetDistance/Velocity) + (asin((cos(TargetElevation + (rate(TargetElevation)) * TargetDistance/Velocity) * (TargetDistance + rate(TargetDistance)*TargetDistance/Velocity) * 9.81)/(Velocity * Velocity))/2))) * cos((TargetHeading - Heading + rate(TargetHeading) * TargetDistance/Velocity))) + sin(-PitchAngle) * ((TargetDistance + rate(TargetDistance) * TargetDistance/Velocity) * cos(((TargetElevation + 90 + rate(TargetElevation) * TargetDistance/Velocity) + (asin((cos(TargetElevation + (rate(TargetElevation)) * TargetDistance/Velocity) * (TargetDistance + rate(TargetDistance)*TargetDistance/Velocity) * 9.81)/(Velocity * Velocity))/2)))))) + (((cos(-PitchAngle) * ((TargetDistance + rate(TargetDistance) * TargetDistance/Velocity) * sin(((TargetElevation + 90 + rate(TargetElevation) * TargetDistance/Velocity) + (asin((cos(TargetElevation + (rate(TargetElevation)) * TargetDistance/Velocity) * (TargetDistance + rate(TargetDistance)*TargetDistance/Velocity) * 9.81)/(Velocity * Velocity))/2))) * cos((TargetHeading - Heading + rate(TargetHeading) * TargetDistance/Velocity))) + sin(-PitchAngle) * ((TargetDistance + rate(TargetDistance) * TargetDistance/Velocity) * cos(((TargetElevation + 90 + rate(TargetElevation) * TargetDistance/Velocity) + (asin((cos(TargetElevation + (rate(TargetElevation)) * TargetDistance/Velocity) * (TargetDistance + rate(TargetDistance)*TargetDistance/Velocity) * 9.81)/(Velocity * Velocity))/2))))) < 0) ? (((sin(RollAngle) * sin(-PitchAngle) * ((TargetDistance + rate(TargetDistance) * TargetDistance/Velocity) * sin(((TargetElevation + 90 + rate(TargetElevation) * TargetDistance/Velocity) + (asin((cos(TargetElevation + (rate(TargetElevation)) * TargetDistance/Velocity) * (TargetDistance + rate(TargetDistance)*TargetDistance/Velocity) * 9.81)/(Velocity * Velocity))/2))) * cos((TargetHeading - Heading + rate(TargetHeading) * TargetDistance/Velocity))) + cos(RollAngle) * ((TargetDistance + rate(TargetDistance) * TargetDistance/Velocity) * sin(((TargetElevation + 90 + rate(TargetElevation) * TargetDistance/Velocity) + (asin((cos(TargetElevation + (rate(TargetElevation)) * TargetDistance/Velocity) * (TargetDistance + rate(TargetDistance)*TargetDistance/Velocity) * 9.81)/(Velocity * Velocity))/2))) * sin((TargetHeading - Heading + rate(TargetHeading) * TargetDistance/Velocity))) + cos(-PitchAngle) * (-sin(RollAngle)) * ((TargetDistance + rate(TargetDistance) * TargetDistance/Velocity) * cos(((TargetElevation + 90 + rate(TargetElevation) * TargetDistance/Velocity) + (asin((cos(TargetElevation + (rate(TargetElevation)) * TargetDistance/Velocity) * (TargetDistance + rate(TargetDistance)*TargetDistance/Velocity) * 9.81)/(Velocity * Velocity))/2)))))>0) ? 180 : -180) : 0)),negativeAngle,positiveAngle)
For guns
Elevation
clamp((acos((cos(RollAngle) * (-sin(-PitchAngle)) * ((TargetDistance + rate(TargetDistance) * TargetDistance/Velocity) * sin((TargetElevation + 90 + rate(TargetElevation) * TargetDistance/Velocity)) * cos((TargetHeading - Heading + rate(TargetHeading) * TargetDistance/Velocity))) + sin(RollAngle) * ((TargetDistance + rate(TargetDistance) * TargetDistance/Velocity) * sin((TargetElevation + 90 + rate(TargetElevation) * TargetDistance/Velocity)) * sin((TargetHeading - Heading + rate(TargetHeading) * TargetDistance/Velocity))) + cos(RollAngle) * cos(-PitchAngle) * ((TargetDistance + rate(TargetDistance) * TargetDistance/Velocity) * cos((TargetElevation + 90 + rate(TargetElevation) * TargetDistance/Velocity)))) / (TargetDistance + rate(TargetDistance) * TargetDistance/Velocity)) - 90),negativeAngle, positiveAngle)
Heading
clamp(deltaangle(turretAngle,
atan((sin(RollAngle) * sin(-PitchAngle) * ((TargetDistance + rate(TargetDistance) * TargetDistance/Velocity) * sin((TargetElevation + 90 + rate(TargetElevation) * TargetDistance/Velocity)) * cos((TargetHeading - Heading + rate(TargetHeading) * TargetDistance/Velocity))) + cos(RollAngle) * ((TargetDistance + rate(TargetDistance) * TargetDistance/Velocity) * sin((TargetElevation + 90 + rate(TargetElevation) * TargetDistance/Velocity)) * sin((TargetHeading - Heading + rate(TargetHeading) * TargetDistance/Velocity))) + cos(-PitchAngle) * (-sin(RollAngle)) * ((TargetDistance + rate(TargetDistance) * TargetDistance/Velocity) * cos((TargetElevation + 90 + rate(TargetElevation) * TargetDistance/Velocity)))) / (cos(-PitchAngle) * ((TargetDistance + rate(TargetDistance) * TargetDistance/Velocity) * sin((TargetElevation + 90 + rate(TargetElevation) * TargetDistance/Velocity)) * cos((TargetHeading - Heading + rate(TargetHeading) * TargetDistance/Velocity))) + sin(-PitchAngle) * ((TargetDistance + rate(TargetDistance) * TargetDistance/Velocity) * cos((TargetElevation + 90 + rate(TargetElevation) * TargetDistance/Velocity))))) + (((cos(-PitchAngle) * ((TargetDistance + rate(TargetDistance) * TargetDistance/Velocity) * sin((TargetElevation + 90 + rate(TargetElevation) * TargetDistance/Velocity)) * cos((TargetHeading - Heading + rate(TargetHeading) * TargetDistance/Velocity))) + sin(-PitchAngle) * ((TargetDistance + rate(TargetDistance) * TargetDistance/Velocity) * cos((TargetElevation + 90 + rate(TargetElevation) * TargetDistance/Velocity)))) < 0) ? (((sin(RollAngle) * sin(-PitchAngle) * ((TargetDistance + rate(TargetDistance) * TargetDistance/Velocity) * sin((TargetElevation + 90 + rate(TargetElevation) * TargetDistance/Velocity)) * cos((TargetHeading - Heading + rate(TargetHeading) * TargetDistance/Velocity))) + cos(RollAngle) * ((TargetDistance + rate(TargetDistance) * TargetDistance/Velocity) * sin((TargetElevation + 90 + rate(TargetElevation) * TargetDistance/Velocity)) * sin((TargetHeading - Heading + rate(TargetHeading) * TargetDistance/Velocity))) + cos(-PitchAngle) * (-sin(RollAngle)) * ((TargetDistance + rate(TargetDistance) * TargetDistance/Velocity) * cos((TargetElevation + 90 + rate(TargetElevation) * TargetDistance/Velocity))))>0) ? 180 : -180) : 0)),negativeAngle, positiveAngle)
example of a car with two turrets
Source
Elevation
clamp((acos((cos(RollAngle) * (-sin(-PitchAngle)) * (R * sin(O) * cos(F)) + sin(RollAngle) * (R * sin(O) * sin(F)) + cos(RollAngle) * cos(-PitchAngle) * (R * cos(O))) / R) - 90),negativeAngle,positiveAngle)
Heading
clamp(deltaangle(turretAngle,
atan((sin(RollAngle) * sin(-PitchAngle) * (R * sin(O) * cos(F)) + cos(RollAngle) * (R * sin(O) * sin(F)) + cos(-PitchAngle) * (-sin(RollAngle)) * (R * cos(O))) / (cos(-PitchAngle) * (R * sin(O) * cos(F)) + sin(-PitchAngle) * (R * cos(O)))) + (((cos(-PitchAngle) * (R * sin(O) * cos(F)) + sin(-PitchAngle) * (R * cos(O))) < 0) ? (((sin(RollAngle) * sin(-PitchAngle) * (R * sin(O) * cos(F)) + cos(RollAngle) * (R * sin(O) * sin(F)) + cos(-PitchAngle) * (-sin(RollAngle)) * (R * cos(O)))>0) ? 180 : -180) : 0)),negativeAngle,positiveAngle)
How it works?
It's hard to explain ... In short, a spherical coordinate system is converted to a cartesian one, multiplied by the rotation matrix and returned back
Before transfer to FT, it looked something like this
And how to use it
even two
Table two, xlsx
Hmm. Should have done it before - autocomplete table
Oh... < it's <
Sorry
@ThomasRoderick
Basically, what you guys are supposed to do with this is to make a copy of it yourselves and use it, since unlocking it for all to use exposes it to vandals and users with a lot of skill issue, myself included. Yep, that's a good solution
@RichardScepton @SenSkysh
Here is my personal backup of table 1.
To make sure the table would not get damaged again through either accident or vandalism, the sheet is protected this time.
To anyone who wants to use this table:
Unfortunately, for some unknown reason, most likely the spreadsheet itself being mangled by inexperienced users who didn't know what they were doing, the table itself was rendered offline, most likely for a long time in the future. Same applies for table 2, apparently, as it was set to read-only. However, I have found an archived copy of the second table on my PC last night as I was clearing it out, and so, I will put it below. It's all in Russian, AFAIK, but it should still suffice to fit your needs. Remember to use it properly this time or else imma have to deal with a migraine fixing it
!link to my archived table
@natemomog
@SiBangsatYa
@SenSkysh I cant access
@SenSkysh yo, I can't access the original table.
Thanks bruddah! Now I just need to manage how should it work with naval designs with LOTS of shooting stuff.
This should come in handy, Thanks!
I tried it. Didn't work. But probably because I had both a cannon and a machine guns.
@OtakuNekoToT If I knew, I would post the appropriate code right away
@SenSkysh So what should I do and how do I fix it?
@OtakuNekoToT Maybe you're right
@SenSkysh I forgot to tell you that this code is used for the auto targeting m102 howitzer mounted on ac-130 and the target is an aircraft carrier or any ground target that does not have fast travelling speed. Only the elevation code have this problem, which seems to be due to the bullet drop.
@OtakuNekoToT during the flight of the projectile, the enemy has time to change the trajectory or speed. it cannot be fixed. Is it possible to increase the speed of the projectile
@SenSkysh The elevation code for cannon works well on the ground but there's a problem. The higher altitudes and greater distance, the greater distance between hit point and target. How do I fix it?
@Dysonchipss em?
@SenSkysh how do we fix it then?
@mitsuki the problem is probably in the settings of the rotator, it should rotate 1 ° for every 1 in input
I seem to have the same problem as DysonChipss, as the turret leads too much. For example: If I target a plane on my 12 o clock my turret rotates 180 degrees away from it
@mitsuki yes, approximately
is turret x,y,z the coords of the rotator connected to the craft?
@Dysonchipss come on show me the craft on which you check the code