четверг, 20 августа 2026 г.

Как рассчитать длину ВПП имея только apt.dat?

Рассмотрим X-Plane. В нем файл apt.dat это простой текстовый файл с множеством записей, описывающих аэропорты. Каждая запись  состоит из полей через пробел и в начале имеет код записи. Записи, описывающие аэропорт начинаются с записи, имеющие код 1 и заканчиваются следующим аэропортом.  

Записи с кодом 100 описывают ВПП. 

Пример записи с кодом 100: 

100 29.87 1 0 0.15 0 2 1 13L 47.53801700 -122.30746100 73.15 0.00 2 0 0 1 31R 47.52919200 -122.30000000 110.95 0.00 2 0 0 1   

 Второе число это ширина ВПП в метрах.

Девятое число - это метка ВПП - в данном случае 130 градусов левая. Затем идет широта конца ВПП. Следующее число это долгота конца ВПП.  Одиннадцатое число это длина смещенного порога в метрах (входит в предполагаемую длину взлетно-посадочной полосы).

Начиная с 18 числа идет описание этой же ВПП в обратную сторону: метка ВПП 310 градусов правая, широта и долгота конца ВПП,  длина смещенного порога в метрах.

 

четверг, 13 ноября 2025 г.

Что такое SQLite?

 Что такое SQLite

SQLite — это внутрипроцессная библиотека, реализующая автономную, бессерверную, не требующую настройки, транзакционную СУБД SQL. Код SQLite находится в открытом доступе и, следовательно, может использоваться бесплатно в любых целях, как коммерческих, так и личных. SQLite — самая распространённая СУБД в мире, имеющая бесчисленное количество применений, включая несколько известных проектов.

SQLite — это встраиваемая СУБД SQL. В отличие от большинства других СУБД SQL, SQLite не имеет отдельного серверного процесса. SQLite выполняет чтение и запись непосредственно в обычные файлы на диске. Полноценная база данных SQL с несколькими таблицами, индексами, триггерами и представлениями хранится в одном файле на диске. Формат файла базы данных кроссплатформенный — вы можете свободно копировать базу данных между 32- и 64-разрядными системами, а также между архитектурами с прямым и обратным порядком байтов. Эти особенности делают SQLite популярным форматом файлов приложений. Файлы баз данных SQLite являются рекомендуемым форматом хранения Библиотекой Конгресса США. SQLite — это не замена Oracle, а замена функции fopen().

SQLite — компактная библиотека. При включении всех функций размер библиотеки может составлять менее 900 КБ, в зависимости от целевой платформы и настроек оптимизации компилятора. (64-битный код больше. А некоторые оптимизации компилятора, такие как агрессивная встраивание функций и развёртывание циклов, могут значительно увеличить объём объектного кода.) Существует компромисс между использованием памяти и скоростью. SQLite, как правило, работает тем быстрее, чем больше памяти вы ей выделяете. Тем не менее, производительность обычно довольно высока даже в средах с ограниченным объёмом памяти. В зависимости от способа использования SQLite может быть быстрее, чем прямой ввод-вывод в файловой системе.

SQLite тщательно тестируется перед каждым выпуском и имеет репутацию очень надёжной библиотеки. Большая часть исходного кода SQLite предназначена исключительно для тестирования и верификации. Автоматизированный набор тестов выполняет миллионы и миллионы тестовых случаев, включающих сотни миллионов отдельных SQL-операторов, и обеспечивает 100% покрытие тестами ветвей. SQLite корректно реагирует на сбои выделения памяти и ошибки дискового ввода-вывода. Транзакции соответствуют принципам ACID, даже если прерываются системными сбоями или перебоями питания. Всё это подтверждается автоматизированными тестами с использованием специальных тестовых программ, имитирующих системные сбои. Конечно, даже при таком количестве тестов ошибки всё равно присутствуют. Но в отличие от некоторых подобных проектов (особенно коммерческих конкурентов), SQLite открыто и честно сообщает обо всех ошибках и предоставляет списки ошибок и поминутную хронологию изменений кода.

Кодовая база SQLite поддерживается международной командой разработчиков, работающих над SQLite на постоянной основе. Разработчики продолжают расширять возможности SQLite, повышать её надёжность и производительность, сохраняя при этом обратную совместимость с опубликованной спецификацией интерфейса, синтаксисом SQL и форматом файла базы данных. Исходный код предоставляется абсолютно бесплатно всем желающим, но также доступна профессиональная поддержка.

Проект SQLite был запущен 9 мая 2000 г. Будущее всегда сложно предсказать, но разработчики намерены поддерживать SQLite до 2050 года. Именно с этой целью и принимаются проектные решения.

Мы, разработчики, надеемся, что SQLite будет вам полезен, и просим вас использовать его с пользой: создавать качественные и красивые продукты, быстрые, надёжные и простые в использовании. Просите прощения себе, как вы прощаете других. И как вы получили SQLite даром, так и отдавайте даром, выплачивая долг вперёд.

понедельник, 23 декабря 2024 г.

Снижение в симуляторе X-Plane

 Допустим, на самолете нет регулятора тяги: самолет типа небольшой турбопроб. На эшелоне, перед снижением убираем газ до нужной скорости. Затем ставим нужную высоту и активируем ее. Нажимаем на автопилоте кнопку IAS. Теперь уменьшаем газ и самолет начинает снижаться. Вертикальная скорость будет тем больше, чем больше уменьшили газ. Автопилот будет стараться сохранить скорость при нажатии IAS снижением.

Цель - не разогнать самолет при снижении.  

вторник, 17 декабря 2024 г.

приоритет в scenery_pack.ini

 Каким должен быть приоритет в scenery_pack.ini?

Порядок и, следовательно, приоритет в «scenery_packs.ini» (вы найдете его в папке «custom scenery») сверху вниз должны быть следующими (от локальных к глобальным):

1 собственные и пользовательские аэропорты

2 оригинальные аэропорты

(Aerosoft…, Global Airports…)

3 дополнительные региональные пейзажи

(VFR-Addons, такие как VFR-Objects, …)

4 X-EUROPE X-AMERICA X-ASIA ….

5 библиотеки

(OpenSceneryX …)

6 наложение фотопейзажей (если установлено, НЕ требуется для пакетов X-…)

(yOrtho4XP_Overlays, если вы используете Ortho4XP сцены)

7 фотопейзажи (если установлены)

(создаются с помощью G2XPL Ortho4XP…)

8 файлы сеток (если установлены)

(HD Scenery Mesh v4)


Обратите внимание, что файлы сеток HD работают только тогда, когда в этом регионе нет активных фотопейзажей, так как фотопейзажи имеют собственную сетку, полученную из стандартного x-plane dsf или из сетки пейзажа hd.

суббота, 27 июля 2024 г.

skycycle Posted Thursday at 01:38 PM

 X-Plane НЕ включает в себя вещи, созданные другими людьми - это то, что указано в «Основном списке библиотек». Вам нужно будет их установить.

НО – имейте в виду, что причина, по которой XP12 называется «XP12», заключается в том, что это НЕ XP10 или XP11. Основные изменения в работе программы в том, что НЕТ НИКАКОЙ гарантии обратной совместимости с вещами, созданными для X-Plane 11.

Просто швырять библиотеки и аэропорты, созданные для более ранних версий X-Plane, это все равно, что играть в русскую рулетку — с пятью патронами в шестизарядном пистолете.

Хотя аэропорты, которые по большей части представляют собой просто неработающие «красивые штучки», несколько более совместимы, чем самолеты.

А вот SAM Scenery Animations Manager, например, больше не работает и больше не обновляется. Таким образом, аэропорты, которые зависят от него, могут не работать - или, по крайней мере, вместо этого могут потребоваться новые дополнения/библиотеки OpenSAM (например openSAM-1.60-b2), обновленные для XP12. Надстройка AutoGate для анимированных трапов в настоящее время практически устарела в XP12 (которая в большинстве мест имеет собственные встроенные анимированные трапы). Better PushBack имеет новую версию для XP12.

Система управления воздушным движением в XP12 теперь опирается на информацию, встроенную в аэропорты (потоки движения для определения используемых взлетно-посадочных полос в различных погодных условиях), которая могла полностью отсутствовать в более ранних специализированных аэропортах.

Рекомендация: Я бы начал с того, что ничего не добавлял в XP12 (у которого теперь есть значительно улучшенные аэропорты). И полетайте на нем месяц «прямо с завода», чтобы посмотреть, действительно ли вам нужны дополнительные аэропорты.

Если вы решите, что вам необходимо что-то добавить, просто подходите к таким дополнениям осторожно, пробуйте по одному и посмотрите, не вызывают ли они проблем.

Однако я рад видеть, что OpenSceneryX все еще работает.

четверг, 13 июня 2024 г.

Использование функции CURL в CPLUPLUS при считывании страниц HTML

 При использовании функции curl не известно какой длины будет читаемая страница. Поэтому используют режим 

curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION,ФУНКЦИЯ ...
curl читает страницу блоками постоянной длины и передает прочитанный буфер указанной ФУНКЦИИ. 
Она же обязана добавить блок к результату. 
В C++ многие используют лямда функцию вместо ссылки на реальную функцию. При выполнения готового примера 
я столкнулся с аварийным завершением программы: exit value 1073 741 819. В Windows 
это означает защита доступа к памяти!
После длительных поисков я нашел такой текст:
--------------------------------------------------------------------------------------

Curl_easy_setopt документирован сигнатурой

CURLcode curl_easy_setopt(CURL *handle, CURLoption option, parameter);

где параметр может быть одним из нескольких типов в зависимости от опции. Очевидно, что (как C API, где C не имеет перегрузки) он должен делать что-то странное, и это подтверждается рассмотрением the source, где мы видим, что Curl_easy_setopt реализован с помощью varargs.

CURL_EXTERN CURLcode curl_easy_setopt(CURL *curl, CURLoption option, ...);

Таким образом, проблема с передачей лямбды в Curl_easy_setopt заключается в том, что она передается как есть, поскольку Curl_easy_setopt говорит, что может принимать объекты любого типа. Фактический объект, представленный лямбда-выражением, представляет собой всего лишь структуру захватов; в этом случае вы просто передаете пустой объект структуры в функцию Curl_easy_setopt, когда она ожидает указатель на функцию. Наступает хаос.

Лямбда-выражения без захватов можно явно преобразовать в указатели на функции с помощью унарного +.

                                                                                              // v one char fix! 

curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, +[](void *buffer, size_t size, size_t count, std::string *stream) -> size_t { auto s_size = size * count; stream->append((char *)buffer, 0, s_size); return s_size; });

Это преобразование также может происходить неявно, но curl_easy_setopt не предоставляет никакой информации о типе и, следовательно, не запускает преобразование автоматически.

***********************************************************************

Как только я поставил этот плюсик ВСЕ заработало!

 
  

понедельник, 15 апреля 2024 г.

Узлы - Knots

В чем разница между морской милей и узлом?

Морские мили/Nautical Miles

Морские мили используются для измерения расстояния, пройденного по воде. Морская миля немного длиннее, чем миля на суше, и равна 1,1508 наземной (или уставной/statute) мили. Морская миля основана на координатах долготы/longitude и широты Земли: одна морская миля равна одной минуте широты/latitude.

Но зачем использовать другую систему измерения для морской навигации? Использование координат широты и долготы более практично для путешествий на большие расстояния, когда кривизна Земли становится фактором точности измерений. На морских картах используются широта и долгота, поэтому мореплавателям гораздо проще измерять расстояние в морских милях. В воздушных и космических путешествиях широта и долгота также используются для навигации, а морские мили — для измерения расстояния.

Слово «миля» может заставить вас задуматься, существует ли еще «морской километр». Нет. Международная морская миля используется во всем мире. В 1929 году организация, известная как Международная гидрографическая организация, официально установила длину ровно в 1,852 километра. После этого США и Великобритания использовали несколько разные размеры, но США приняли международную морскую милю в 1954 году, а Великобритания - в 1970 году.

Узлы/Knots


Измерение узла в 17 веке.

Узлы, с другой стороны, используются для измерения скорости. Один узел равен одной морской миле в час, или примерно 1,15 статутной мили в час.

Термин «узел» появился в 17 веке, когда моряки измеряли скорость своего корабля с помощью устройства, называемого «обычным бревном». Обычное бревно представляло собой веревку с узлами через равные промежутки времени, прикрепленную к куску дерева в форме куска пирога. Моряки опускали кусок дерева в воду и позволяли ему свободно плавать за кораблем в течение определенного времени (часто измеряемого песочными часами). Когда время истекало, они считали узлы между кораблем и куском дерева, и это число определяло их скорость.

Мечты о прошлом

X-Plane 11, 12 - любитель, Фото любитель со стажем

Постоянные читатели

Архив блога