Пишу программу для создания расписания из Exel.
Столкнулся вот с такой проблемкой.
Мне нужно высчитать путевой угол между двумя данными аэропортами. Для этого использую формулу:
ctg( b ) = cos(fi1)*tg(fi2)*cosec(l2 — l1) — sin(fi1)*ctg(l2 — l1), взятую тут тыц.
где b — направление ортодромии или путевой угол, fi1 — широта аэропорта откуда летим, l1 — долгота аэропорта откуда летим, fi2 и l2 — куда летим.
После упрощения получил: b = arctg( (cos(fi2) * sin(l2 — l1)) / (cos(fi1) * sin(fi2) — cos(fi2) * sin(fi1) * cos(l2 — l1)) ).
После расчёта получаю следующие рузультаты:
1. 56.273224844637127
2. -54.710219585068785
3. -58.049867496061268
4. 5.6723515785769250
5. -70.479172252844634
6. -62.100431498667035
7. 35.205859499423546
8. -25.921513010402307
9. -5.5618740532924287
10. 78.581146398313294
11. 25.002774624404534
12. -39.283729837880642
13. -56.533277937403454
14. -7.1199568453538635
15. 42.292072487865099
16. 66.158046794857839
17. 72.168125829477290
18. 44.453098381587218
19. 3.5693213209589381
20. -14.950513395493871
Для таких входящих данных:
1. EDDV, 52.460214011, 9.683521986 -> UNNT, 55.011666678, 82.651666850 =
2. UEEE, 62.093333490, 129.771666527 -> UUDD, 55.408333540, 37.908333242 +360
3. UIII, 52.266666815, 104.395000041 -> UUDD, 55.408333540, 37.908333242 +360
4. UIII, 52.266666815, 104.395000041 -> VTBS, 13.685716689, 100.748949945 +180
5. UNNT, 55.011666678, 82.651666850 -> UUDD, 55.408333540, 37.908333242 +360
6. UNNT, 55.011666678, 82.651666850 -> EDDV, 52.460214011, 9.683521986 +360
7. UNNT, 55.011666678, 82.651666850 -> UTDD, 38.543333486, 68.825000077 +180
8. UNNT, 55.011666678, 82.651666850 -> VTBS, 13.685716689, 100.748949945 +180
9. URSS, 43.445000052, 39.948333353 -> UUDD, 55.408333540, 37.908333242 +360
10. USMU, 66.070000045, 76.521666348 -> UUDD, 55.408333540, 37.908333242 +180
11. UTDD, 38.543333486, 68.825000077 -> UNNT, 55.011666678, 82.651666850 =
12. UTNU, 41.583333425, 60.645000190 -> UUDD, 55.408333540, 37.908333242 +360
13. UUDD, 55.408333540, 37.908333242 -> UTNU, 41.583333425, 60.645000190 +180
14. UUDD, 55.408333540, 37.908333242 -> URSS, 43.445000052, 39.948333353 +180
15. UUDD, 55.408333540, 37.908333242 -> UEEE, 62.093333490, 129.771666527 =
16. UUDD, 55.408333540, 37.908333242 -> UIII, 52.266666815, 104.395000041 =
17. UUDD, 55.408333540, 37.908333242 -> UNNT, 55.011666678, 82.651666850 =
18. UUDD, 55.408333540, 37.908333242 -> USMU, 66.070000045, 76.521666348 =
19. VTBS, 13.685716689, 100.748949945 -> UIII, 52.266666815, 104.395000041 =
20. VTBS, 13.685716689, 100.748949945 -> UNNT, 55.011666678, 82.651666850 +360
Где последний столбик означает, чтобы получить правильный ответ нужно: = — ничего не нужно ответ такой, +360 — добавить 360 и будет правильный ответ, +180 — добавить 180 и будет правильный ответ.
Теперь вопросик: Что делать с формулой чтобы она сразу считала правильно? ну или может что-то дописать надо?
Может быть в конце просто добавлять эти 360 или 180 но при каких условиях?
Подскажите плиз :help:
ilbrehta (17.06.2009 17:39):
Спасибо за ответ.
Если не трудно вышлите пожалуйста на lantz3@yandex.ru
Борт174 (17.06.2009 17:30):
Наверное я неправильно выразился я пишу на C++ просто расписание берётся из экселя)
Программа для тех укого есть расписание в экселе а вречную переделывать влом)
ilbrehta (17.06.2009 23:08):
Пасибо огромное.