/
eurlov
/
Geographic_Information_Systems
Обзор
Документация
Войти
/
eurlov
/
Geographic_Information_Systems
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
Lab3/MainUnit.cpp
116 строк
3 KB
Egor Urlov
first_commit
06 май 2026, 11:36
06 май 2026, 11:36
6ce308f
Код
Авторство
О чём код?
//--------------------------------------------------------------------------- #include <vcl.h> #pragma hdrstop #include "MainUnit.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma link "GLS.BaseClasses" #pragma link "GLS.Cadencer" #pragma link "GLS.Coordinates" #pragma link "GLS.Material" #pragma link "GLS.Objects" #pragma link "GLS.Scene" #pragma link "GLS.SceneViewer" #pragma link "GLS.SimpleNavigation" #pragma link "GLS.SkyDome" #pragma link "GLS.GeomObjects" #pragma resource "*.dfm" TForm1 *Form1; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void __fastcall TForm1::FormCreate(TObject *Sender) { RadioGroup1->ItemIndex = 0; RadioGroup1Click(this); // ������������ �������� ���� // ������������� ������� (������� ������) // CheckBox1->Checked = true; // CheckBox1Click(this); float R = sfPlanet->Radius + 0.1f; float lat = 55.75f * M_PI / 180.0f; float lon = 37.61f * M_PI / 180.0f; float x = R * cos(lat) * sin(lon); float y = R * sin(lat); float z = R * cos(lat) * cos(lon); GLPoints1->Positions->Add(x, y, z); // --- 2. ��������� ���� (X, Y, Z) --- float axisLen = 8.0f; // ������� � ������ ��� X (�������) LineX->Nodes->Clear(); LineX->AddNode(0, 0, 0); LineX->AddNode(axisLen, 0, 0); // ������� � ������ ��� Y (�������) LineY->Nodes->Clear(); LineY->AddNode(0, 0, 0); LineY->AddNode(0, axisLen, 0); // ������� � ������ ��� Z (�����) LineZ->Nodes->Clear(); LineZ->AddNode(0, 0, 0); LineZ->AddNode(0, 0, axisLen); // ����� ����� ���� ����� �����, ����� ��������� �������: LineX->LineWidth = 2; LineY->LineWidth = 2; LineZ->LineWidth = 2; sfPlanet->Stop = 360; sfGrid->Stop = 360; // ������ ������ CutWall1->Visible = false; CutWall2->Visible = false; } //--------------------------------------------------------------------------- void __fastcall TForm1::RadioGroup1Click(TObject *Sender) { // �������� ������ � ��������� ����� �� ���������� TGLLibMaterial *mat = GLMaterialLibrary1->Materials->GetLibMaterialByName("matPlanet"); if (mat) { if (RadioGroup1->ItemIndex == 0) { // ���������, ��� ����� �������� ����� � ����� � .exe ������ �������! mat->Material->Texture->Image->LoadFromFile("Earth.jpg"); } else if (RadioGroup1->ItemIndex == 1) { mat->Material->Texture->Image->LoadFromFile("Earth_temperature.jpg"); } } } //--------------------------------------------------------------------------- void __fastcall TForm1::CheckBox1Click(TObject *Sender) { // �������� �������� ����� if (CheckBox1->Checked) { // �������� ������ sfPlanet->Stop = 270; sfGrid->Stop = 270; // ���������� ������ ������� (���� �����), ���� �� �� �������� CutWall1->Visible = true; CutWall2->Visible = true; } else { // ������ ������� sfPlanet->Stop = 360; sfGrid->Stop = 360; // ������ ������ CutWall1->Visible = false; CutWall2->Visible = false; } } //---------------------------------------------------------------------------