From e2bac2d092ecd4d1257a28ac8c3e06f61a678b4c Mon Sep 17 00:00:00 2001 From: oltnd Date: Fri, 1 Nov 2024 22:55:34 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8=D1=82?= =?UTF-8?q?=D1=8C=20z-5-sinus.cpp?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- z-5-sinus.cpp | 87 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 87 insertions(+) create mode 100644 z-5-sinus.cpp diff --git a/z-5-sinus.cpp b/z-5-sinus.cpp new file mode 100644 index 0000000..2ee3820 --- /dev/null +++ b/z-5-sinus.cpp @@ -0,0 +1,87 @@ +#include +#include +#include + +// Определение размеров окна +const int WIDTH = 800; +const int HEIGHT = 600; + +// Определение параметров синусоид +const double PI = 3.14159265358979323846; +const double X_SCALE = 0.01; // Уменьшено для повышения плотности пикселей +const double Y_SCALE = 100.0; // Масштабирование по Y + +// Основная функция для рисования синусоид +void DrawSineWaves(HDC hdc) { + int centerY = HEIGHT / 2; + + // Рисование синусоид + for (double x = 0; x < WIDTH; x += 0.5) { // Уменьшено расстояние между итерациями + double xVal = x * X_SCALE; + + + + // Жёлтая синусоида (меньшая) + int ySmall2 = static_cast(0.3 * std::sin(7 * xVal) * Y_SCALE); + SetPixel(hdc, static_cast(x), centerY - ySmall2, RGB(255, 204, 0)); // Жёлтая синусоида + + + } +} + +// Оконная процедура +LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { + switch (uMsg) { + case WM_PAINT: { + PAINTSTRUCT ps; + HDC hdc = BeginPaint(hwnd, &ps); + DrawSineWaves(hdc); + EndPaint(hwnd, &ps); + } + return 0; + + case WM_DESTROY: + PostQuitMessage(0); + return 0; + } + return DefWindowProc(hwnd, uMsg, wParam, lParam); +} + +// Основная функция WinAPI +int WINAPI wWinMain(_In_ HINSTANCE hInstance, _In_opt_ HINSTANCE hPrevInstance, _In_ PWSTR pCmdLine, _In_ int nCmdShow) { + const wchar_t CLASS_NAME[] = L"SineWaveWindowClass"; + + WNDCLASS wc = {}; + wc.lpfnWndProc = WindowProc; + wc.hInstance = hInstance; + wc.lpszClassName = CLASS_NAME; + wc.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1); + + RegisterClass(&wc); + + HWND hwnd = CreateWindowEx( + 0, + CLASS_NAME, + L"Sine Waves Graph", + WS_OVERLAPPEDWINDOW, + CW_USEDEFAULT, CW_USEDEFAULT, WIDTH, HEIGHT, + nullptr, + nullptr, + hInstance, + nullptr + ); + + if (hwnd == nullptr) { + return 0; + } + + ShowWindow(hwnd, nCmdShow); + + MSG msg; + while (GetMessage(&msg, nullptr, 0, 0)) { + TranslateMessage(&msg); + DispatchMessage(&msg); + } + + return 0; +} \ No newline at end of file