From 73c6ec80c71dd43125b6a9b00dd9e940b827f29f Mon Sep 17 00:00:00 2001 From: Andrew Guschin Date: Tue, 10 Nov 2020 01:15:07 +0300 Subject: =?UTF-8?q?=D0=A0=D0=B0=D0=B7=D0=B4=D0=B5=D0=BB=D0=B8=D0=BB=205=20?= =?UTF-8?q?=D0=B7=D0=B0=D0=B4=D0=B0=D1=87=D1=83=20=D0=BD=D0=B0=20=D0=B4?= =?UTF-8?q?=D0=B2=D0=B0=20=D0=BF=D1=80=D0=BE=D0=B5=D0=BA=D1=82=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- task05/Guschin/MyForm.h | 189 ------------------------------------------------ 1 file changed, 189 deletions(-) delete mode 100644 task05/Guschin/MyForm.h (limited to 'task05/Guschin/MyForm.h') diff --git a/task05/Guschin/MyForm.h b/task05/Guschin/MyForm.h deleted file mode 100644 index 7e76f41..0000000 --- a/task05/Guschin/MyForm.h +++ /dev/null @@ -1,189 +0,0 @@ -#pragma once - -namespace Guschin { - - using namespace System; - using namespace System::ComponentModel; - using namespace System::Collections; - using namespace System::Windows::Forms; - using namespace System::Data; - using namespace System::Drawing; - using namespace std; - - vec2 Vc; - vec2 V; - vec2 Vc_work, V_work; - mat3 T; - mat3 initT; - - public ref class MyForm : public System::Windows::Forms::Form - { - public: - MyForm(void) - { - InitializeComponent(); - } - - protected: - ~MyForm() - { - if (components) - { - delete components; - } - } - - private: - System::ComponentModel::Container ^components; - -#pragma region Windows Form Designer generated code - void InitializeComponent(void) - { - this->SuspendLayout(); - // - // MyForm - // - this->AutoScaleDimensions = System::Drawing::SizeF(8, 16); - this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font; - this->ClientSize = System::Drawing::Size(737, 686); - this->KeyPreview = true; - this->Margin = System::Windows::Forms::Padding(4, 4, 4, 4); - this->Name = L"MyForm"; - this->Text = L"MyForm"; - this->Load += gcnew System::EventHandler(this, &MyForm::MyForm_Load); - this->Paint += gcnew System::Windows::Forms::PaintEventHandler(this, &MyForm::MyForm_Paint); - this->KeyDown += gcnew System::Windows::Forms::KeyEventHandler(this, &MyForm::MyForm_KeyDown); - this->Resize += gcnew System::EventHandler(this, &MyForm::MyForm_Resize); - this->ResumeLayout(false); - - } -#pragma endregion - private: - float left = 30, right = 100, top = 20, bottom = 50; - float minX = left, maxX; - float minY = top, maxY; - float Wcx = left, Wcy; - float Wx, Wy; - - private: - System::Void rectCalc() { - maxX = ClientRectangle.Width - right; - maxY = ClientRectangle.Height - bottom; - Wcy = maxY; - Wx = maxX - left; - Wy = maxY - top; - } - System::Void worldRectCalc() - { - Vc_work = normalize(T * vec3(Vc, 1.f)); - V_work = mat2(T) * V; - } - float f(float x) - { - return tan(x); - } - bool f_exists(float x, float delta) - { - return fabs(2.f * acos(cos(x)) - Math::PI) > delta; - } - private: - System::Void MyForm_Resize(System::Object^ sender, System::EventArgs^ e) { - rectCalc(); - Refresh(); - } - private: - System::Void MyForm_Paint(System::Object^ sender, System::Windows::Forms::PaintEventArgs^ e) { - Graphics^ g = e->Graphics; - g->Clear(Color::Aquamarine); - - Pen^ rectPen = gcnew Pen(Color::Black, 2); - g->DrawRectangle(rectPen, left, top, Wx, Wy); - - Pen^ pen = gcnew Pen(Color::Blue, 1); - - float deltaX = V_work.x / Wx; - bool hasStart, hasEnd; - vec2 start, end; - float x, y; - - start.x = Wcx; - x = Vc_work.x; - hasStart = f_exists(x, deltaX); - if (hasStart) - { - y = f(x); - start.y = Wcy - (y - Vc_work.y) / V_work.y * Wy; - } - - float deltaY; - float red, green, blue; - while (start.x < maxX) - { - end.x = start.x + 1.f; - x += deltaX; - hasEnd = f_exists(x, deltaX); - if (hasEnd) - { - y = f(x); - deltaY = (y - Vc_work.y) / V_work.y; - end.y = Wcy - deltaY * Wy; - } - - vec2 tmpEnd = end; - bool visible = hasStart && hasEnd && clip(start, end, minX, minY, maxX, maxY); - if (visible) { - if (deltaY > 1.f) deltaY = 1.f; - if (deltaY < 0.f) deltaY = 0.f; - green = 510.f * deltaY; - if (deltaY < 0.5) - { - blue = 255.f - green; - red = 0.f; - } - else - { - blue = 0.f; - red = green - 255.f; - green = 510.f - green; - } - pen->Color = Color::FromArgb(red, green, blue); - g->DrawLine(pen, start.x, start.y, end.x, end.y); - } - start = tmpEnd; - hasStart = hasEnd; - } - } - private: - System::Void MyForm_Load(System::Object^ sender, System::EventArgs^ e) { - initT = mat3(1.f); - T = initT; - Vc = vec2(-2.f, -2.f); - V = vec2(4.f, 4.f); - rectCalc(); - worldRectCalc(); - } - private: - System::Void MyForm_KeyDown(System::Object^ sender, System::Windows::Forms::KeyEventArgs^ e) { - float centerX = Vc_work.x + V_work.x / 2; - float centerY = Vc_work.y + V_work.y / 2; - - switch (e->KeyCode) { - case Keys::Escape: - T = initT; - break; - case Keys::A: - T = translate(-V_work.x / Wx, 0.f) * T; - break; - case Keys::Z: - T = translate(-centerX, -centerY) * T; - T = scale(1.1) * T; - T = translate(centerX, centerY) * T; - break; - default: - break; - } - worldRectCalc(); - Refresh(); - } - }; -} -- cgit v1.2.3