박격포 공학용 계산 식
군대 있을 때 보직이 FDC 인데
M16 계산판으로 계산하는게 오차도 매우 크고 해서 따로 계산식을 유도해 만들었는데..
이해하는 사람이 없어 그냥 나만 쓰다 매장되었다.
내가 있던 부대에는 이 식을 이용하여 만든 엑셀 계산기까지 있는데.. 지금도 쓰고 있을지도 모른다.
여튼 군대 일병때 FDC 보직 시작하고 며칠만에 기본 사격 계산식을 만들었고, 나머지 계산식을 만드는데엔 몇달 걸렸던 것으로 기억한다. 만드느라 개고생 했는데 딱히 보상은 없었다.
중대장에게 최소한 FDC들에게 공학용 계산기를 지급하여 계산하게 해달라고 했는데 전역할때까지 걍 저 의견을 개무시했다.
M17로 방안좌표법 계산하는데 엄청 숙달되었을 때 1분~1분 10초 정도로 계산 완료시켰었는데,
공학용 계산기 사용 했을 때 10초~17초 사이로 계산 완료시켰었다.
박격포 사격에 있어 50초 가량 아끼는건 엄청난 차이임에도 불구하고 아무도 이 점을 중요시 하지 않는게 이해가질 않는다.
그당시 프로그래밍 가능한 계산기가 있었으나 검열때문에 부대 반입은 못하고 계속해서 식을 타이핑해서 계산했는데 저 시간 나온걸 감안하면 아래 계산식을 프로그래밍 해서 계산한다면 10초 이내로도 가능하다.
물론 계산시간이 엄청나게 빠른것 보다 더 중요한건 계산식으로 계산 했을 때 오차가 없는 것이다.
좌표 측정이 잘못되었을지 언정 계산식이 틀릴 일은 없다.
추가로, 이 글을 쓰게 된 것은 박격포의 사격 정확성 향상에 조금이라도 도움이 되었으면 하는 바램에서 쓴 것이다. 기존에 사용하는 계산판의 경우 오차가 너무 심하다. (점 찍는것 자체에서도 몇밀 틀어지는데 죄다 눈짐작으로 좌표를 잡는데다 8계단 좌표 기준이라 오차가 매우 심하다.)
예전에 써놓은 글을 다시 수정해서 업로드 한다. (그당시 정말 대충 끄적여놓아서..)
먼저, rectangular coordinate 에서 polar coordinate를 변환하여 사용했는데
계산기에 있는 Pol 기능 이용하면 훨씬 빠른 계산이 가능하고, 나 또한 그렇게 계산해먹었다.
그리고 degree를 mils로 변환하면서 각도단위의 회전방향이 바뀌는 문제를 x와 y를 역으로 두는 것으로 해결하고 unit conversion에 따른 상수가 붙게 된다.
arctangent의 정의역이 (-π/2,π/2) 이므로 정의역에 벗어나는 방향에 대해서는 π/2를 더하여 모든 방향을 계산 할 수 있도록 하였다.
참고로 mils 단위의 정의는 1 km 에 있는 지점에서 측변으로 1 m 움직인 각도를 1 mils로 하며, 12시방향을 0 mils로 하며, 반시계방향으로 증가하며 6400 mil까지 있다. 그리고, 6400 mils = 0 mils이다.
기본적인 계산은 다음과 같다.
좌표계산부터 시행한다.
지도좌표는 임의로 정의했다. 아마도 북한지역일듯 싶다. (아직 내 머릿속엔 내가 있던 부대의 포진 좌표가 있긴하지만..)
Mortar : DK 02455 03597
Target : DJ 03300 99980
이라 할 경우.
T - M를 이용하여, 횡좌표 T - M = 03300 - 02455 = 00845, 종좌표 T - M = 99980 - 103597 = -03617
횡좌표 T - M 을 A로(저장), 종좌표 T - M 을 B로(저장)한다.
사격방위각.
arctan( A / B ) * 6400 / 360 = 17.814.. mils.
여기에서 종좌표 T - M < 0 일 경우 arctangent의 정의역에 벗어나므로 결과값에 π/2(3200 mils)를 더한다.
고로, 3217.814.. mils
사거리.
피타고라스를 이용.
sqrt( A^2 + B^2 ) * ( T표고 - M 표고 ) / 낙각인수
를 쓰면 되는데.. 보통 낙각인수는 2로 한다.
이제 기지점 전이법, 극표정법, 그리고 수정탄 사격방법을 소개하려 하는데
딱히 셋다 신기하고 요상하고 뉴월드 뉴라이프 급이 아닌
그냥 기지점 전이법에 대한 특별한 케이스들이라고 보면 된다.
1. 기지점 전이법.
1. OP - M 을 계산하여 횡좌표를 A에 저장하고, 종좌표를 B에다 저장한다.
2. sqrt( 수평전이량^2 + 사거리전이량^2 ) 를 C에다 저장한다.
3. arctan( 수평전이량 / 사거리 전이량 ) x 6400 / 360 을 D에다 저장한다.
단, 사거리 전이량이 음일 경우 위의 값에 3200을 더해줘야 한다. (arctangent의 정의역에서 벗어남)
그리고 사거리 전이량이 0일 경우 근사값 1E-10 을 써주면 된다. 0을 쓰게 될 경우 x/0 꼴의 오류가 생기게 된다.
4. A 의 값을 A + C sin( ( D + OTAZ ) x 360 / 6400 ) 으로 바꾸어 주고,
B 의 값을 B + C cos( ( D + OTAZ ) x 360 / 6400 ) 으로 바꾸어 준다.
5. 방열방위각은
arctan( A / B ) x 6400 / 360임
단, B의 값이 음일 경우 위의 값에 3200을 더해줘야 한다. (arctangent의 그래프를 그려보면 이해하리라 믿음)
B의 값이 0일 경우 근사값 알아서 취하도록.
6. 사거리는
sqrt( A^2 + B^2 ) + ( OP 표고 + 수직전이량 - M 표고 ) / 낙각인수
로 해주면 된다.
2. 극표정법
일일히 또쓰기 귀찮으니 ctrl + c, ctrl + v 라는 귀차니스트의 필수 단축키를 사용했다.
1. OP - M 을 계산하여 횡좌표를 A에 저장하고, 종좌표를 B에다 저장한다.
2. OTRN 를 C에다 저장한다.
3. 0 을 D에다 저장한다. (안해도 상관없다. 혹시나 모를 실수(다른 방법같이 공식을 쓰는..)에 대비해서 쓰는 것이다.)
4. A 의 값을 A + C sin( OTAZ x 360 / 6400 ) 으로 바꾸어 주고,
B 의 값을 B + C cos( OTAZ x 360 / 6400 ) 으로 바꾸어 준다.
5. 방열방위각은
arctan( A / B ) x 6400 / 360 이다.
단, B의 값이 음일 경우 위의 값에 3200을 더해줘야 헌더, (arctangent의 그래프를 그려보면 이해하리라 믿음)
B의 값이 0일 경우 근사값 알아서 취하도록.
6. 사거리는
sqrt( A^2 + B^2 ) + ( OP 표고 + 수직전이량 - M 표고 ) / 낙각인수
로 해주면 된다.
3 수정탄 사격.
1. T - M 을 계산하여 횡좌표를 A에 저장하고, 종좌표를 B에다 저장한다.
2. 방안좌표법을 이용하여 일단 한방 쏜다.
3. sqrt( 수평수정량^2 + 사거리수정량^2 ) 를 C에다 저장한다.
4. arctan( 수평수정량 / 사거리수정량 ) x 6400 / 360 을 D에다 저장한다.
단, 사거리수정량이 음일 경우 위의 값에 3200을 더해줘야 한다. (arctangent의 정의역에서 벗어남)
그리고 사거리수정량이 0일 경우 근사값 1E-10 을 써주면 된다. 0을 쓰게 될 경우 x/0 꼴의 오류가 생김.
5. A 의 값을 A + C sin( ( D + OTAZ ) x 360 / 6400 ) 으로 바꾸어 주고,
B 의 값을 B + C cos( ( D + OTAZ ) x 360 / 6400 ) 으로 바꾸어 준다.
6. 방열방위각은
arctan( A / B ) x 6400 / 360이다.
단, B의 값이 음일 경우 위의 값에 3200을 더해줘야 한다. (arctangent의 그래프를 그려보면 이해하리라 믿음)
B의 값이 0일 경우 근사값 알아서 취하도록.
7. 사거리는
sqrt( A^2 + B^2 ) + ( T 표고 + 수직수정량 - M 표고 ) / 낙각인수
로 해주면 된다.