ВНИМАНИЕ! На форуме началось голосование в конкурсе - астрофотография 2025!
0 Пользователей и 1 Гость просматривают эту тему.
D
Мало понятно откуда в теме про програмирование для любительской астрономии (ну и даже научной) безпрерывно вспоминают уже давно ушедшие от науки и учебы вузы.
sh + grep + sed + /bin/* + vi + make + cc + ... вполне.
В 21-м веке всем хочется readline, autocompletion и вот это вот все.
IDE не надо сравнивать с vi, сравнивайте с расширяемой средой типа emacs,Кому emacs был избыточен, написали joe, vim. А где сейчас тот Borland?
На 1011 ОЗУ было не менее 1М
Без ~1M RAM врядли.
Тема не про программирование.
Современные языки в массе своей - ад кромешный.Если их и учить, то никак не первым языком. Начинающему надо разобраться вообще с программированием и при этом не вывихнуть себе мозги.
//---------------------------------------------------------------------------#include <vcl.h>#include <tchar.h>#include <math.h>#pragma hdrstop#include "fcPanoViewer.h"//---------------------------------------------------------------------------#pragma package(smart_init)#pragma link "GLS.Objects"#pragma link "GLS.Scene"#pragma link "GLS.Texture"#pragma link "GLS.SceneViewer"#pragma link "GLS.BaseClasses"#pragma link "GLS.Coordinates"#pragma link "GLS.Material"#pragma link "Stage.Keyboard"#pragma resource "*.dfm"TFormPanorama* FormPanorama;//---------------------------------------------------------------------------__fastcall TFormPanorama::TFormPanorama(TComponent* Owner) : TForm(Owner) {}//---------------------------------------------------------------------------//---------------------------------------------------------------------------void __fastcall TFormPanorama::FormCreate(TObject* Sender){ Path = GetCurrentAssetPath(); SetCurrentDir(Path + "\\panorana"); OpenPictureDialog->InitialDir = Path + "\\panorama"; OpenPictureDialog->FileName = "sejourstmathieu2048.jpg";}void __fastcall TFormPanorama::BtnLoadClick(TObject* Sender){ if (OpenPictureDialog->Execute()) GLMaterialLibrary->Materials->Items[0] ->Material->Texture->Image->LoadFromFile( OpenPictureDialog->FileName);}//---------------------------------------------------------------------------void __fastcall TFormPanorama::TrackBarFocalChange(TObject* Sender){ Camera->FocalLength = TrackBarFocal->Position;}//---------------------------------------------------------------------------void __fastcall TFormPanorama::GLCadencerProgress( TObject* Sender, const double deltaTime, const double newTime){ const int step_size = 20; float delta; float dx, dy; delta = step_size * 40 / Camera->FocalLength * deltaTime; dx = 0; dy = 0; if (IsKeyDown(VK_LEFT)) dx = dx + delta; if (IsKeyDown(VK_UP)) dy = dy + delta; if (IsKeyDown(VK_RIGHT)) dx = dx - delta; if (IsKeyDown(VK_DOWN)) dy = dy - delta; PanCameraAround(dx, dy);}//---------------------------------------------------------------------------void __fastcall TFormPanorama::FormKeyDown( TObject* Sender, WORD &Key, TShiftState Shift){ Key = 0; // all keys handled by FormPanorama}//---------------------------------------------------------------------------void TFormPanorama::PanCameraAround(float dx, float dy){ pitch = pitch + dy; yaw = yaw - dx; if (pitch > 90) pitch = 90; if (pitch < -90) pitch = -90; if (yaw > 360) yaw = yaw - 360; if (yaw < 0) yaw = yaw + 360; Camera->Up->SetVector(0, 1, 0); Camera->Direction->SetVector( sin(DegToRad(yaw)), sin(DegToRad(pitch)), -cos(DegToRad(yaw))); LabelPitch->Caption = Format("Pitch: %3f", ARRAYOFCONST((pitch))); LabelYaw->Caption = Format("Yaw: %3f", ARRAYOFCONST((yaw)));}//---------------------------------------------------------------------------void __fastcall TFormPanorama::GLSceneViewerMouseDown( TObject* Sender, TMouseButton Button, TShiftState Shift, int X, int Y){ mx = X; my = Y;}//---------------------------------------------------------------------------void __fastcall TFormPanorama::GLSceneViewerMouseMove( TObject* Sender, TShiftState Shift, int X, int Y){ float dx, dy, f; if (Shift.Contains(ssLeft)) { f = 0.2 * 40 / Camera->FocalLength; dx = (X - mx) * f; dy = (Y - my) * f; PanCameraAround(dx, dy); } mx = X; my = Y;}//---------------------------------------------------------------------------void __fastcall TFormPanorama::FormMouseWheel(TObject* Sender, TShiftState Shift, int WheelDelta, TPoint &MousePos, bool &Handled){ TrackBarFocal->Position = TrackBarFocal->Position + (int)(2 * WheelDelta / 120);}//---------------------------------------------------------------------------
Цитата: Вантуз от 05 Дек 2025 [23:06:15]Тема не про программирование.Исходя из понимания слов в первом посте ...
Вот пример кода вьюера на С++ для просмотра изображений, например, астрономических сферических панорам
Хороший пример кода чтобы отдать его генерацию ИИ - его и так наполовину IDE сгенерировала
А вы бы как хотели, чтобы обе половины кода нейросеть сама написала на С++ и математику на ассемблере?
GLMaterialLibrary->Materials->Items[0]->Material->Texture->Image->LoadFromFile(OpenPictureDialog->FileName)
ООП тут как таковой вообще не нужен.
Это точно С++ 26 ?
Нет, неверно, здесь очень много ООП
И ничего не рухнет, поскольку в исходниках конечно есть и try, и catch
По крайней мер Clang компилятором для Windows 64 данный конкретно проект компилируется отлично
Именно в данном конкретном примере - его как такового вообще нет - ну только разве методы написаны.И указатель на форму торчит прямо в начале файла.
try { // обращение по указателю - мы не знаем что там по адресу в p, может p == NULL ? int i = p->Index[0]->value;}catch (...) {}И да - по хорошему оператор индексирования [] может кинуть исключение если массив пустой и обращение к первому элементу некорретно, а может просто тупо вернуть NULL
//---------------------------------------------------------------------------#include <vcl.h>#pragma hdrstop#include <tchar.h>//---------------------------------------------------------------------------USEFORM("fcPanoViewer.cpp", FormPanorama);//---------------------------------------------------------------------------int WINAPI _tWinMain(HINSTANCE, HINSTANCE, LPTSTR, int){ try { Application->Initialize(); Application->MainFormOnTaskBar = true; Application->CreateForm(__classid(TFormPanorama), &FormPanorama); Application->Run(); } catch (Exception &exception) { Application->ShowException(&exception); } catch (...) { try { throw Exception(""); } catch (Exception &exception) { Application->ShowException(&exception); } } return 0;}
Вот сам cpp программы с win main, в котором проверка возможных исключений, не считая таких в самих файлах либы
Цитата: Вантуз от 05 Дек 2025 [22:49:48]На 1011 ОЗУ было не менее 1МНе было на 1011 физически никогда столько ОЗУ - только 64\128К - там вообще память была на ферритовых сердечниках.
Цитата: yacc от 05 Дек 2025 [23:15:55]Цитата: Вантуз от 05 Дек 2025 [22:49:48]На 1011 ОЗУ было не менее 1МНе было на 1011 физически никогда столько ОЗУ - только 64\128К - там вообще память была на ферритовых сердечниках.В данном случае, один из двух спорящих дурак, а другой подлец.Подлецом быть не хочу.
Да что вы говорите? А подключаемые модули вы какбы и не заметили, вы что, привыкли всё в main реализовывать от начала и до конца вашей утилиты? Почитайте справку про ООП, классы, иерархию, наследование, полиморфизм и вам станет всё понятно. Указатель на форму стоит в правильном месте.
Почитайте справку про ООП, классы, иерархию, наследование, полиморфизм
Директива #pragma link "GLS.Objects" которую по незнанию называют "подключаемые модули"