Добавить z-5-sinus.cpp
This commit is contained in:
87
z-5-sinus.cpp
Normal file
87
z-5-sinus.cpp
Normal file
@@ -0,0 +1,87 @@
|
||||
#include <iostream>
|
||||
#include <windows.h>
|
||||
#include <cmath>
|
||||
|
||||
// Определение размеров окна
|
||||
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<int>(0.3 * std::sin(7 * xVal) * Y_SCALE);
|
||||
SetPixel(hdc, static_cast<int>(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;
|
||||
}
|
||||
Reference in New Issue
Block a user