Stellarium что это за программа

Введение

Stellarium представляет собой программу, позволяющую использовать домашний компьютер в качестве виртуального планетария. Она рассчитывает положение Солнца, Луны, звезд и планет и выдает изображение неба таким, каким его видит наблюдатель в указанное время и в указанном месте. К тому же, программа выдает изображения созвездий, а также имитирует различные события, такие как метеорные потоки, а также солнечные или лунные затмения. Stellarium можно использовать в качестве образовательного инструмента для преподавания астрономии, планетария для астрономов-любителей, желающих спланировать наблюдения на ночь или просто для развлечения. Благодаря тому, что программа генерирует очень высококачественную картинку, она используется в некоторых настоящих планетариях с проекторами. Некоторыми группами астрономов-любителей она используется для подготовки наглядных материалов в виде карт неба для статей в журналах и газетах. Stellarium достаточно активно развивается и к тому времени, как вы читаете это руководство, возможно уже выпущена более свежая версия, содержащая еще больше возможностей, чем указано здесь. Обновления программы можно найти на сайте Stellarium. Со всеми вопросами и комментариями к этому руководству, просим обращаться к его автору по электронной почте. Комментарии по самой Stellarium можно оставить на форуме Stellarium.

Замечания к версии 0.12.x

Данный документ описывает ветку версий Stellarium 0.12.x. Ветка 0.12.x включает в себя большое количество изменений как в программном коде, так и во внешнем виде. Наиболее очевидным отличием новой ветки от более старой 0.9.x является переработанный пользовательский интерфейс.

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

Источник

Stellarium что это за программа

Stellarium — это свободный планетарий для Вашего компьютера с открытым исходным кодом. Он отображает реалистичное небо в 3D таким, каким Вы видите его невооружённым глазом, в бинокль или телескоп.

Stellarium что это за программа. Смотреть фото Stellarium что это за программа. Смотреть картинку Stellarium что это за программа. Картинка про Stellarium что это за программа. Фото Stellarium что это за программа

Stellarium что это за программа. Смотреть фото Stellarium что это за программа. Смотреть картинку Stellarium что это за программа. Картинка про Stellarium что это за программа. Фото Stellarium что это за программа

Падающая звезда вспыхнула близ Юпитера. Выбрать различную интенсивность можно в окне просмотра.

Stellarium что это за программа. Смотреть фото Stellarium что это за программа. Смотреть картинку Stellarium что это за программа. Картинка про Stellarium что это за программа. Фото Stellarium что это за программа

Большая туманность Ориона. Нажмите N для отображения названий туманностей.

Stellarium что это за программа. Смотреть фото Stellarium что это за программа. Смотреть картинку Stellarium что это за программа. Картинка про Stellarium что это за программа. Фото Stellarium что это за программа

Танец планет над штаб-квартирой ESO, близ Мюнхена.

Stellarium что это за программа. Смотреть фото Stellarium что это за программа. Смотреть картинку Stellarium что это за программа. Картинка про Stellarium что это за программа. Фото Stellarium что это за программа

Всё небо с созвездиями, их границами и Млечным путём.

Stellarium что это за программа. Смотреть фото Stellarium что это за программа. Смотреть картинку Stellarium что это за программа. Картинка про Stellarium что это за программа. Фото Stellarium что это за программа

Включены изображения созвездий.

Кликните по картинке слева для получения подробностей.

особенности

небосвод

интерфейс

отображение

настраиваемость и расширение

новости

системные требования

минимальные

рекомендуемые

разработчики

Координатор проекта: Fabien Chéreau
Графический дизайнер: Martín Bernardi
Разработчик: Alexander V. Wolf, Guillaume Chéreau, Georg Zotti
Исследователь культур неба: Susanne M. Hoffmann
Сотрудник: Alexander Duytschaever
и каждый в сообществе пользователей.

социальные медиа

сотрудничество

Вы можете узнать больше о Stellarium, получить поддержку и помощь проекта по этим ссылкам:

признательность

Если планетарий Stellarium был полезен для вашей исследовательской работы, мы будем признательны за следующее:

В этом исследовании использовался планетарий Stellarium

Zotti, G., Hoffmann, S. M., Wolf, A., Chéreau, F., & Chéreau, G. (2021). The Simulated Sky: Stellarium for Cultural Astronomy Research. Journal of Skyscape Archaeology, 6(2), 221–258. https://doi.org/10.1558/jsa.17822

Или можно скачать файл BibTeX этой статьи для создания другого формата цитирования.

Самый последний код от разработчиков Stellarium находится на Github. Если Вы хотите скомпилировать текущую версию Stellarium, находящуюся в разработке, то это место где вы можете получить её исходный код.

сторонники и друзья

Источник

Stellarium — виртуальный планетарий на компьютере

Stellarium — бесплатная программа для наблюдения за небом, это компьютерный виртуальный планетарий для любителей астрономии. В Stellarium отображается небосвод в 3D, в том виде, каким он виден невооруженным глазом, в бинокль или телескоп с определенной точки на Земле или с планет Солнечной системы.

В современном мире, особенно жителям больших городов, не всегда получается увидеть звездное небо, не закрытое зданиями или окружающим ландшафтом. Программа Stellarium заменит любительский телескоп для наблюдения за космическими объектами с экрана компьютера.

Проект разрабатывается с 2000 года, за это время им воспользовались более 20 миллионов пользователей. Астрономическая программа Stellarium обеспечивает точное моделирование звездного неба на основе огромного количества снимков, изображений и каталогов небесных объектов.

Виртуальный планетарий Stellarium

Благодаря Stellarium, пользователь увидит астрономическую карту звездного неба на своем ПК, с реалистическим отображением звезд и планет.

Планетарий Stellarium имеет следующие возможности:

Программа Stellarium работает на русском языке. Пользователю необходимо перейти на официальный сайт stellarium.org для того, чтобы скачать планетарий Stellarium. Здесь находятся версии программы для операционных систем: Windows (32-bit и 64-bit), Linux, macOS, онлайн версия Stellarium Web.

Нажмите на значок с разрядностью соответствующей операционной системы, чтобы скачать программу Stellarium на свой компьютер. В нашем случае, мы загрузим Stellarium для Windows, согласно разрядности данного ПК.

Наблюдаем в Stellarium звездное небо

При первом запуске программы Stellarium, на экране ПК отображается поляна, соответствующая времени года, со звездным небом в режиме реального времени. Если сейчас дневное время, то вы здесь не увидите звезд, а только солнечный диск на небе. Впрочем, в приложении можно ускорить время или посмотреть на небосвод, каким он был, например, прошлой ночью.

По умолчанию, окно Stellarium открывается с видом звездного неба в текущий момент времени, отображающимся из одного сельского населенного пункта Франции — родины автора программы.

Stellarium что это за программа. Смотреть фото Stellarium что это за программа. Смотреть картинку Stellarium что это за программа. Картинка про Stellarium что это за программа. Фото Stellarium что это за программа

Вам нужно выбрать свое месторасположение. Сделать это можно следующим образом:

На панели управления находятся кнопки для управления функциями программы, отсюда можно войти в настройки приложения.

Stellarium что это за программа. Смотреть фото Stellarium что это за программа. Смотреть картинку Stellarium что это за программа. Картинка про Stellarium что это за программа. Фото Stellarium что это за программа

Выберите вид программы, порядок астрономических расчетов, окуляры и другие функции.

Stellarium что это за программа. Смотреть фото Stellarium что это за программа. Смотреть картинку Stellarium что это за программа. Картинка про Stellarium что это за программа. Фото Stellarium что это за программа

Необходимые действия в Stellarium быстро выполняются с помощью клавиш клавиатуры. Сочетания «горячих клавиш» указаны в окне «Справка», которое вызывается нажатием на клавишу «F1».

Чтобы самостоятельно долго не искать нужные звезды, планеты или созвездия в космическом пространстве, воспользуйтесь услугами встроенного поиска. Вызов окна для поиска небесных светил осуществляется при помощи клавиши «F3». Введите название объекта или его местоположение, выполните поиск по списку.

Stellarium что это за программа. Смотреть фото Stellarium что это за программа. Смотреть картинку Stellarium что это за программа. Картинка про Stellarium что это за программа. Фото Stellarium что это за программа

Для вывода объектов из каталога Мессье необходимо использовать латинский алфавит. Например, чтобы посмотреть на Галактику Андромеды (Туманность Андромеды), в окно поиска нужно ввести наименование объекта на английском языке «M 31».

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

Stellarium что это за программа. Смотреть фото Stellarium что это за программа. Смотреть картинку Stellarium что это за программа. Картинка про Stellarium что это за программа. Фото Stellarium что это за программа

В Stellarium имеется возможность включить отображение созвездий на звездном небе в разных видах. Например, показать изображения в подобном виде, или отобразить только линии созвездий.

Stellarium что это за программа. Смотреть фото Stellarium что это за программа. Смотреть картинку Stellarium что это за программа. Картинка про Stellarium что это за программа. Фото Stellarium что это за программа

Приближение или удаление космических объектов в окне программы Стеллариум осуществляется при помощи колесика мыши.

Если вы выберите для наблюдения планету Солнечной системы, а затем приблизите ее, то небесный объект начнет перемещаться в окне программы в режиме реального времени, и быстро уйдет из вида. Для постоянного слежения за выделенным объектом нажмите на клавишу «пробел».

В правом верхнем углу окне программы Stellarium расположены настройки плагина. Здесь можно выбрать окуляры, линзы, сенсоры, телескопы.

С помощью кнопок панели управления выберите другие параметры: включите экваториальную или азимутную сетку, измените ход времени, включите или отключите другие опции приложения.

Stellarium Online

В онлайн версии Stellarium Web, пользователь может наблюдать за космическим пространством из браузера, без использования программы, установленной на ПК.

Stellarium онлайн работает на английском языке и имеет урезанные возможности по сравнению с программой Stellarium.

Stellarium что это за программа. Смотреть фото Stellarium что это за программа. Смотреть картинку Stellarium что это за программа. Картинка про Stellarium что это за программа. Фото Stellarium что это за программа

Stellarium Mobile — планетарий на телефоне или планшете

Если вы хотите увидеть звездное небо на своем смартфоне или планшете, вам нужно скачать Stellarium для Андроид или iOS, для своего мобильного устройства. Stellarium для Андроид, а также для iOS, перенесен на мобильные устройства, работающие в операционных системах Android или iOS.

Для использования приложения на устройствах Android, вам нужно будет перейти в магазин Google Play, а затем скачать «Stellarium планетарий» (Stellarium Mobile) или «Stellarium Mobile Plus — Карта звездного неба». Оба приложения платные от одного разработчика (Stellarium Labs от Noctua Software), связанного со свободным проектом Stellarium.

Stellarium что это за программа. Смотреть фото Stellarium что это за программа. Смотреть картинку Stellarium что это за программа. Картинка про Stellarium что это за программа. Фото Stellarium что это за программа

Выводы статьи

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

Источник

Программа-планетарий Stellarium: как узнать, что за звёзды светят по ночам в окно

Stellarium что это за программа. Смотреть фото Stellarium что это за программа. Смотреть картинку Stellarium что это за программа. Картинка про Stellarium что это за программа. Фото Stellarium что это за программа

S tellarium – это программа-планетарий для исследования неба в режиме реального времени и с возможностью управления временем. Бесплатная, достаточно простая в использовании, гибко настраиваемая Stellarium, вряд ли, конечно, удивит профессионалов в области астрономии, но будет весьма кстати на первых этапах изучения Вселенной астрономами-новичками. А обыватели с её помощью смогут расширить свой кругозор, ознакомившись с азами устройства небосвода.

Или хотя бы просто узнать, что за звёзды светят по ночам в окно. Ниже познакомимся с ключевыми особенностями Stellarium в обзоре программы.

Бесплатно скачать программу для ОС Windows, Linux, Mac OS можно на официальном сайте:

1. Основной функционал программы

Stellarium что это за программа. Смотреть фото Stellarium что это за программа. Смотреть картинку Stellarium что это за программа. Картинка про Stellarium что это за программа. Фото Stellarium что это за программа

Stellarium что это за программа. Смотреть фото Stellarium что это за программа. Смотреть картинку Stellarium что это за программа. Картинка про Stellarium что это за программа. Фото Stellarium что это за программа

С помощью колёсика мыши можно приближать и удалять объекты на небе. По клику правой клавиши мыши относительно выбранной звезды, планеты или прочего космического объекта появится астрономическая справка. Кликом левой клавиши мыши справка с экрана убирается. Чтобы выбранный объект постоянно оставался в центре окна программы при его увеличении, можно использовать кнопку центрирования на панели инструментов внизу или клавишу пробела.

Stellarium что это за программа. Смотреть фото Stellarium что это за программа. Смотреть картинку Stellarium что это за программа. Картинка про Stellarium что это за программа. Фото Stellarium что это за программа

Для удобства при исследовании небосвода кнопками на панели инструментов внизу (или их горячими клавишами) можно включать и отключать фильтры:

— линий, названий и изображений созвездий, видимости поверхности земли,

Stellarium что это за программа. Смотреть фото Stellarium что это за программа. Смотреть картинку Stellarium что это за программа. Картинка про Stellarium что это за программа. Фото Stellarium что это за программа

— экваториальной и азимутальной сетки,

Stellarium что это за программа. Смотреть фото Stellarium что это за программа. Смотреть картинку Stellarium что это за программа. Картинка про Stellarium что это за программа. Фото Stellarium что это за программа

— названия планет Солнечной системы, отображения на небосводе экзопланет,

Stellarium что это за программа. Смотреть фото Stellarium что это за программа. Смотреть картинку Stellarium что это за программа. Картинка про Stellarium что это за программа. Фото Stellarium что это за программа

— отображения объектов глубокого космоса,

Stellarium что это за программа. Смотреть фото Stellarium что это за программа. Смотреть картинку Stellarium что это за программа. Картинка про Stellarium что это за программа. Фото Stellarium что это за программа

— а также прочих функций, в том числе и добавляемых путём включения плагинов программы.

Программа по умолчанию настроена оптимальным образом, чтобы неподкованный в области астрономии обыватель с помощью Stellarium мог удовлетворить своё любопытство, не вникая в ненужные для него технические подробности. Разве что совсем уж новичкам придётся прежде ознакомится с классификацией космических тел и понять, что значат отдельные их показатели. Знатоки же в области астрономии могут гибко настроить Stellarium под свои потребности, например, выбрав определённые каталоги звёзд, подобрав нужную картографическую проекцию, сменив предустановленную западную систему астрономических знаний на систему знаний ацтеков, египтян, китайцев и т.д. В то же время и обыватель найдёт в настройках Stellarium, реализованных во всплывающей боковой панели слева, вполне понятные и интересные вещи. Рассмотрим подробнее некоторые из таких настроек.

2. Местоположение

Первая кнопка боковой панели – настройка местоположения. Если по умолчанию неактивна галочка получения местоположения из сети, здесь можно её выставить, чтобы каждый раз при запуске программы вручную не выставлять страну и населённый пункт для отображения небосвода в реальном времени. Главная фишка этой настройки – обилие точек обзора, откуда можно наблюдать небосвод. В качестве точки обзора Stellarium позволяет вручную выбрать любой материк, любую страну, различные населённые пункты внутри стран. Небо в окне программы будет таким, каким его видно в выбранной местности в реальности.

Stellarium что это за программа. Смотреть фото Stellarium что это за программа. Смотреть картинку Stellarium что это за программа. Картинка про Stellarium что это за программа. Фото Stellarium что это за программа

Stellarium что это за программа. Смотреть фото Stellarium что это за программа. Смотреть картинку Stellarium что это за программа. Картинка про Stellarium что это за программа. Фото Stellarium что это за программа

А красавец Сатурн наиболее эффектен, если смотреть на него с поверхности спутника Мимас.

Stellarium что это за программа. Смотреть фото Stellarium что это за программа. Смотреть картинку Stellarium что это за программа. Картинка про Stellarium что это за программа. Фото Stellarium что это за программа

3. Дата и время

Переместиться из настоящего в прошлое или будущее космоса можно с помощью второй настройки боковой панели – таблицы установки даты и времени.

Stellarium что это за программа. Смотреть фото Stellarium что это за программа. Смотреть картинку Stellarium что это за программа. Картинка про Stellarium что это за программа. Фото Stellarium что это за программа

4. Ландшафт

Третья кнопка боковой панели запускает окно с настройками неба, объектов глубокого космоса, системы знаний о звёздах и ландшафта. Вкладка «Ландшафт» позволяет выбрать картинку поверхности до горизонта. В числе возможных для настройки картинок – океан, местности на Земле, Марсе, Луне, верхние слои атмосферы газовых гигантов.

Stellarium что это за программа. Смотреть фото Stellarium что это за программа. Смотреть картинку Stellarium что это за программа. Картинка про Stellarium что это за программа. Фото Stellarium что это за программа

Имитация поверхности планет – не более чем эффект, и чтобы сконцентрироваться лишь на небосводе, в качестве ландшафта можно выбрать нулевой горизонт, который просто окрасит поверхность в зелёный цвет. Ландшафт применяется для всех точек, откуда можно наблюдать небосвод, задав их в настройках местоположения. Утопать в верхних слоях газа Юпитера и Сатурна будем, рассматривая небосвод с Земли, Марса, Луны, а ландшафты последних придётся лицезреть, находясь на Уране, Нептуне и даже на Солнце.

Прорисовка атмосферы также одна для всех планет. Например, на Венере, на поверхности которой в реальности ничего не рассмотреть на небосводе ни днём, ни ночью из-за густых облаков из серной кислоты, в окне Stellarium на звёзды будем смотреть, как из райского безоблачного местечка на Земле.

5. Поиск космических объектов

Четвёртая кнопка боковой панели – поиск космических объектов по ключевому слову, по их координатам или в рамках списков. Списки космических объектов – неплохой инструмент для изучения Вселенной, если изначально не знать, что искать. Во вкладке «Списки» окна поиска Stellarium можем узнать местоположение на небосводе и получить справку об отдельных космических объектах как то: галактики, созвездия, квазары, блазары, скопления звёзд, остатки сверхновых и т.п. А на отдельные из них можно будет даже посмотреть.

Stellarium что это за программа. Смотреть фото Stellarium что это за программа. Смотреть картинку Stellarium что это за программа. Картинка про Stellarium что это за программа. Фото Stellarium что это за программа

6. Сценарии

Ещё один инструмент для тех, кто не знает с чего начать освоение Вселенной – инструмент «Сценарии».

Stellarium что это за программа. Смотреть фото Stellarium что это за программа. Смотреть картинку Stellarium что это за программа. Картинка про Stellarium что это за программа. Фото Stellarium что это за программа

Пятая кнопка боковой панели открывает окно с настройками программы. В предпоследней вкладке «Сценарии» будут доступны скрипты, демонстрирующие пользователю отдельные возможности Stellarium. Можем запустить скрипты для просмотра лунных и солнечных затмений, вспышки сверхновой, прохождения Венеры по диску Солнца и прочих астрономических событий. Есть скрипты в формате туров по различным уголкам космоса.

7. Плагины

Stellarium что это за программа. Смотреть фото Stellarium что это за программа. Смотреть картинку Stellarium что это за программа. Картинка про Stellarium что это за программа. Фото Stellarium что это за программа

После установки галочки активации того или иного плагина программу Stellarium необходимо перезапустить. У плагинов, как, например, у окуляра, могут быть свои отдельные настройки.

8. Сохранение и сброс настроек программы

С настройками Stellarium не стоит бояться экспериментировать, в любой момент всё настроенное можно вернуть в исходное состояние. Во вкладке настроек «Основная» присутствует кнопка «Первоначальные настройки». Рядом с ней расположена другая кнопка – «Сохранить настройки». О ней не нужно забывать перед выходом из программы, иначе после перезапуска внесённые настройки не сохранятся.

Stellarium что это за программа. Смотреть фото Stellarium что это за программа. Смотреть картинку Stellarium что это за программа. Картинка про Stellarium что это за программа. Фото Stellarium что это за программа

9. Ускорение хода времени

Плеерные кнопки на панели инструментов внизу – ещё одна возможность попасть в виртуальное прошлое или будущее, но не в один миг, как в случае с установкой конкретной даты, а постепенно и с определённой скоростью воспроизведения событий на небосводе. Закаты и рассветы на Земле и прочих планетах Солнечной системы можем наблюдать, как в кино, ускоренном вперёд или назад по временной линии. Плеерные кнопки в этих же целях могут быть использованы при просмотре сценариев.

Stellarium что это за программа. Смотреть фото Stellarium что это за программа. Смотреть картинку Stellarium что это за программа. Картинка про Stellarium что это за программа. Фото Stellarium что это за программа

Подводя итоги…

Что там говорить о качестве прорисовки планет, если в программе изображения имеются не для всех объектов глубокого космоса. О квазарах, блазарах, отдельных галактиках и остатках сверхновых, а также прочих космических объектах получим лишь краткую астрономическую справку, но не увидим, как они выглядят. Но ладно объекты глубокого космоса, искусственные спутники Земли хотя бы можно было нарисовать. Чтобы МКС выглядела как МКС, а не как звезда.

Stellarium что это за программа. Смотреть фото Stellarium что это за программа. Смотреть картинку Stellarium что это за программа. Картинка про Stellarium что это за программа. Фото Stellarium что это за программа

Ущербность графики Stellarium имеет обратную, положительную сторону – программу можно устанавливать на маломощные компьютеры.

Источник

И снова в космос: как единорог Stellarium посещал

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

Stellarium что это за программа. Смотреть фото Stellarium что это за программа. Смотреть картинку Stellarium что это за программа. Картинка про Stellarium что это за программа. Фото Stellarium что это за программа

Немного о проекте.

Согласно описанию на сайте Wikipedia, Stellarium — это виртуальный планетарий с открытым исходным кодом, доступный для платформ Linux, Mac OS X, Microsoft Windows, Symbian, Android и iOS, а также MeeGo. Программа использует технологии OpenGL и Qt, чтобы создавать реалистичное небо в режиме реального времени. Со Stellarium возможно увидеть то, что можно видеть средним и даже крупным телескопом. Также программа предоставляет наблюдения за солнечными затмениями и движением комет.

Stellarium создан французским программистом Фабианом Шеро, который запустил проект летом 2001 года. Другие видные разработчики включают Роберта Спирмана, Джохэйннса Гадждозика, Мэтью Гейтса, Тимоти Ривза, Богдана Маринова и Джохана Меериса, который является ответственным за художественные работы.

… и об анализаторе

Анализ проекта проводился с помощью статического анализатора кода PVS-Studio. Это инструмент для выявления ошибок и потенциальных уязвимостей в исходном коде программ, написанных на языках С, C++ и C# (в скором времени и на Java!). Работает в среде Windows, Linux и macOS. Он разработан для тех, кому важно повышать качество своего кода.

Провести анализ было достаточно просто. Сначала я скачал проект Stellarium с GitHub, после чего установил все необходимые для сборки пакеты. Так как проект собирается с помощью Qt Creator, я использовал систему отслеживания запуска компиляторов, которая является встроенной в Standalone-версию анализатора. Там же можно просмотреть готовый отчёт об анализе.

Новые читатели и пользователи Stellarium возможно задались вопросом: почему в заголовке статьи фигурирует единорог и как он связан с анализом кода? Отвечаю: я являюсь одним из разработчиков PVS-Studio, а единорог — это наш любимый озорной маскот. Итак, вверх!

Stellarium что это за программа. Смотреть фото Stellarium что это за программа. Смотреть картинку Stellarium что это за программа. Картинка про Stellarium что это за программа. Фото Stellarium что это за программа

Я надеюсь, что благодаря этой статье читатели узнают для себя что-то новое, а разработчики Stellarium смогут устранить часть ошибок и улучшить качество кода.

Приносите себе кофе с воздушным круассаном и устраивайтесь поудобнее, ведь мы переходим к самому интересному — обзору результатов анализа и разбору ошибок!

Подозрительные условия

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

Предупреждение PVS-Studio: V654 The condition ‘start_of_directory == — 1’ of loop is always true. qzip.cpp 617

Смогли найти ошибку? Если да, то хвалю.

Ошибка кроется в условии цикла while. Оно всегда верно, так как переменная start_of_directory не меняется в теле цикла. Скорее всего, цикл не будет вечным, так как он содержит return и break, но выглядит такой код странно.

Как мне кажется, в коде забыли сделать присваивание start_of_directory = pos в том месте, где идёт проверка сигнатуры. Тогда и оператор break, пожалуй, лишний. В этом случае код можно переписать так:

Впрочем, я не уверен, что код должен быть именно таким. Лучше всего, чтобы сами разработчики проекта проанализировали эту часть программы и внесли нужные правки.

Еще одно странное условие:

Предупреждение PVS-Studio: V501 There are identical sub-expressions ‘cap.intersects(cap2)’ to the left and to the right of the ‘&&’ operator. StelProjectorClasses.hpp 175

Как вы уже, наверное, догадались, ошибка кроется в последней строчке функции: программист допустил опечатку, и в итоге получилось, что функция возвращает результат независимо от значения cap3.

Подобный тип ошибок встречается крайне часто: практически в каждом проверенном проекте мы встречали опечатки, связанные с именами вида имя1 и имя2 и им подобными. Как правило, такие ошибки связаны с copy-paste.

Данный экземпляр кода является ярким примером ещё одного распространенного паттерна ошибок, по поводу которого мы даже проводили отдельное мини-исследование. Мой коллега Андрей Карпов назвал его «эффектом последней строки». Если вы ещё не знакомы с этим материалом, то предлагаю открыть вкладку в браузере, чтобы почитать позже, а пока продолжим.

Да, результат этого выражения будет всегда корректен. Перед применением побитового «и» оба операнда будут повышаться до типа int. В языке C++ такая конвертация однозначна: false конвертируется в 0, а true конвертируется в 1. Поэтому результат у данного выражения будет таким же, как если бы использовался оператор &&.

Но есть нюанс. При подсчете результата операции && используется так называемое «ленивое вычисление». Если значение левого операнда является false, то правое значение даже не вычисляется, ведь логическое «и» в любом случае вернет false. Это сделано для экономии вычислительных ресурсов и позволяет писать более сложные конструкции. Например, можно проверить, что указатель не нулевой, и, если это так, разыменовать его для выполнения дополнительной проверки. Пример: if (ptr && ptr->foo()).

Такое «ленивое вычисление» не производится при использовании побитового оператора &: выражения conf->value(«. «, true).toBool() будут вычисляться каждый раз, независимо от значения pl->hasAtmosphere().

В редких случаях это бывает сделано специально. Например, если вычисление правого операнда имеет «побочные эффекты», результат которых используется позже. Так тоже делать не очень хорошо, потому что это затрудняет понимание кода и усложняет уход за ним. К тому же, порядок вычисления операндов & не определен, поэтому в некоторых случаях использования таких «трюков» можно получить неопределенное поведение.

Если нужно сохранить побочные эффекты — сделайте это в отдельной строке и сохраните результат в отдельную переменную. Люди, которые будут работать с этим кодом в дальнейшем, будут вам благодарны 🙂

Stellarium что это за программа. Смотреть фото Stellarium что это за программа. Смотреть картинку Stellarium что это за программа. Картинка про Stellarium что это за программа. Фото Stellarium что это за программа

Переходим к следующей теме.

Неправильная работа с памятью

Начнем тему динамической памяти с вот такого фрагмента:

Что же произойдет, если память под все три структуры выделится корректно, а функция MakeEdge(&mesh->eHead) вернет NULL? Поток управления достигнет второго по счету return.

Так как указатели newVertex1, newVertex2 и newFace являются локальными переменными, то после выхода из функции они прекратят своё существование. Но освобождения памяти, которая им принадлежала, не произойдет. Она останется зарезервированной, но доступа к ней мы больше иметь не будем.

Такие ситуации называются «утечка памяти». Типичный сценарий при такой ошибке: при продолжительной работе программы она начинает потреблять все больше и больше оперативной памяти, вплоть до полного её исчерпания.

Следует отметить, что в данном примере третий return не является ошибочным. Функции MakeVertex и MakeFace передают адреса выделенной памяти в другие структуры данных, тем самым делегируя ответственность за её освобождение.

Следующая недоработка находится в методе, который занимает 90 строк. Для удобства я сократил его, оставив только проблемные места.

Осталась всего одна строчка. Дам подсказку: это единственное упоминание объектов xs и ys.

Странные приведения типов

Еще один пример после небольшого форматирования выглядит вот так:

Для того, чтобы понять, в чем ошибка, вам придется посмотреть на прототипы конструкторов класса Qcolor:

Stellarium что это за программа. Смотреть фото Stellarium что это за программа. Смотреть картинку Stellarium что это за программа. Картинка про Stellarium что это за программа. Фото Stellarium что это за программа

Если программист намеревался создать объект из значений типа double, ему следовало использовать другой конструктор.

Например, можно было использовать конструктор, принимающий Qrgb, написав:

Можно было сделать и по-другому. В Qt для обозначения RGB-цветов используются вещественные значения в диапазоне [0.0, 1.0] или целочисленные в диапазоне [0, 255].

Поэтому программист мог перевести значения из вещественных в целочисленные, написав вот так:

Заскучали? Не переживайте: впереди нас ждут более интересные ошибки.

Stellarium что это за программа. Смотреть фото Stellarium что это за программа. Смотреть картинку Stellarium что это за программа. Картинка про Stellarium что это за программа. Фото Stellarium что это за программа

«Единорог в космосе». Вид из Stellarium.

Прочие ошибки

Напоследок я оставил вам еще несколько вкусняшек 🙂 Приступим к одной из них.

Предупреждение PVS-Studio: V634 The priority of the ‘*’ operation is higher than that of the ‘ Plane::Plane(. )’ should be used. Plane.cpp 29

Программист рассчитывал, что часть полей объекта будет инициализирована внутри вложенного конструктора, но получилось так: когда вызывается конструктор Plane(Vec3f &v1, Vec3f &v2, Vec3f &v3), внутри него создается безымянный временный объект, который сразу же удаляется. В результате часть послей объекта остается неинициализированной.

Чтобы код заработал правильно, следует использовать удобную и безопасную фичу C++11 — делегирующий конструктор:

Но если вы используете компилятор для более старых версий языка, то можно написать так:

Замечу, что последние два способа являются весьма опасными. Поэтому следует быть очень осторожным и хорошо понимать, как такие способы работают.

Заключение

Какие выводы можно сделать о качестве кода Stellarium? Честно говоря, ошибок было не очень много. Также во всем проекте я не обнаружил ни одной ошибки, в которой код завязан на неопределенном поведении. Для opensource-проекта качество кода оказалось на высоком уровне, за что я снимаю шляпу перед разработчиками. Ребята, вы молодцы! Мне было приятно и интересно делать обзор на ваш проект.

Что же насчет самого планетария — я пользуюсь им достаточно часто. К сожалению, живя в городе, я очень редко могу насладиться ясным ночным небом, а Stellarium позволяет мне оказаться в любой точке планеты, не вставая с дивана. Это действительно комфортно!

Особенно мне нравится режим «Constellation art». От вида огромных фигур, застилающих все небо в странном танце, захватывает дух.

Stellarium что это за программа. Смотреть фото Stellarium что это за программа. Смотреть картинку Stellarium что это за программа. Картинка про Stellarium что это за программа. Фото Stellarium что это за программа

«Странный танец». Вид из Stellarium.

Нам, землянам, свойственно ошибаться, и нет ничего постыдного в том, что эти ошибки просачиваются в код. Для этого и разрабатываются инструменты анализа кода, такие, как PVS-Studio. Если вы один из землян — ставьте лайк предлагаю скачать и попробовать самому.

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

Подписывайтесь на наши каналы и следите за новостями из мира программирования!

Stellarium что это за программа. Смотреть фото Stellarium что это за программа. Смотреть картинку Stellarium что это за программа. Картинка про Stellarium что это за программа. Фото Stellarium что это за программа

Если хотите поделиться этой статьей с англоязычной аудиторией, то прошу использовать ссылку на перевод: George Gribkov. Into Space Again: how the Unicorn Visited Stellarium

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *