Полярная система координат
Полярная система координат
Двухмерная система координат, в которой каждая точка на плоскости однозначно определяется двумя числами — полярным углом и полярным радиусом. Полярная система координат особенно полезна в случаях, когда отношения между точками проще изобразить в виде радиусов и углов; в более распространённой, декартовой или прямоугольной системе координат, такие отношения можно установить только путём применения тригонометрических уравнений.История
Понятие угла и радиуса были известны ещё в первом тысячелетии до н. э. Греческий астроном Гиппарх (190—120 гг до н. э.) создал таблицу, в которой для разных углов приводились длины хорд. Существуют свидетельства применения им полярных координат для определения положения небесных тел. Архимед в своём сочинении «Спирали» описывает так называемую спираль Архимеда, функцию, радиус которой зависит от угла. Работы греческих исследователей, однако, не развились в целостное определение системы координат. В IX веке персидский математик Хаббаш аль-Хасиб (аль-Марвази́) применял методы картографических проекций и сферической тригонометрии для преобразования полярных координат в другую систему координат с центром в некоторой точке на сфере, в этом случае, для определения Киблы — направления на Мекку. Персидский астроном Абу Райхан Бируни (973—1048) выдвинул идеи, которые выглядят как описание полярной системы координат. Он был первым, кто, примерно в 1025 году, описал полярную экви-азимутальную равнопромежуточную проекцию небесной сферы. Существуют разные версии о введении полярных координат в качестве формальной системы координат. Полная история возникновения и исследования описана в работе профессора из Гарварда Джулиан Лоувел Кулидж «Происхождение полярных координат». Грегуар де Сен-Венсан и Бонавентура Кавальери независимо друг от друга пришли к похожей концепции в середине XVII века. Сен-Венсан описал полярную систему в личных заметках в 1625 году, напечатав свои труды в 1647; а Кавальери напечатал свои труды в 1635 году, и исправленную версию в 1653 году. Кавальери применял полярные координаты для вычисления площади, ограниченной спиралью Архимеда. Блез Паскаль впоследствии использовал полярные координаты для вычисления длин параболических дуг. В книге «Методы флукций» (написана в 1671 году, напечатана в 1736 году) сэр Исаак Ньютон исследовал преобразование между полярными координатами, которые он обозначал как «Седьмой способ; Для спиралей» («англ. Seventh Manner; For Spirals»), и девятью другими системами координат. В статье, опубликованной в 1691 году в журнале Acta eruditorum, Якоб Бернулли использовал систему с точкой на прямой, которые он назвал полюсом и полярной осью соответственно. Координаты задавались как расстояние от полюса и угол от полярной оси. Работа Бернулли была посвящена проблеме нахождения радиуса кривизны кривых, определённых в этой системе координат. Введение термина «полярные координаты» приписывают Грегорио Фонтана. В XVIII веке он входил в лексикон итальянских авторов. В английский язык термин попал через перевод трактата Сильвестра Лакруа «Дифференциальное и интегральное исчисление», выполненного в 1816 году Джорджем Пикоком Для трёхмерного пространства полярные координаты впервые предложил Алекси Клеро, а Леонард Эйлер был первым, кто разработал соответствующую систему.Графическое представление
Каждая точка в полярной системе координат может быть определена двумя полярными координатами, что обычно называются



Полярный радиус определен для любой точки плоскости и принимает неотрицательные значения




-в отрицательном направлении (по направлению движения часовой стрелки), если значение угла отрицательное.
Уравнение кривых в полярных координатах
Благодаря радиальной природе полярной системы координат, некоторые кривые могут быть достаточно просто описаны полярным уравнением, тогда как уравнение в прямоугольной системе координат было бы намного сложнее. Среди самых известных кривых: полярная роза, архимедова спираль, Лемниската.Окружность
Общее уравнение окружности с центром в (



Программа
Результат после написания программы
Написание программы
Для начала открываем заготовку ее можно скачать здесьПервым делом компилируем то что скачали и видим
Написание тела программы
Я покаже как делать на примере pic1 а дальше просто буду кидать кодПКМ по pic1 Add Event Handler Нас перекинуло в файл ProgramDlg.cpp Преступаем к написанию кода программы, первым будем круг на скриншоте чтоб все было видно не получилось так что буду просто кидать код он будет подписан что за то отвечает
CClientDC dc(this);
GetClientRect(&rc);
hNew = CreateFont(28, 0, 0, 0, FW_NORMAL, 0, 0, 0, ANSI_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH | FF_DONTCARE, L"Times New Roman Cyr");
hold = (HFONT)SelectObject(dc, hNew);
dc.FillSolidRect(&rc, RGB(255, 255, 255));
cf = RGB(255, 255, 255);
ck = RGB(50, 70, 120);
SetTextColor(dc, ck);
SetBkColor(dc, cf);
msg.Format(L"Полярная");
TextOutW(dc, rc.left + 50, rc.bottom - 450, msg, msg.GetLength());
msg.Format(L"система");
TextOutW(dc, rc.left + 50, rc.bottom - 420, msg, msg.GetLength());
msg.Format(L"координат");
TextOutW(dc, rc.left + 50, rc.bottom - 390, msg, msg.GetLength());
COLORREF crFunction = RGB(0, 190, 0);//цвет графика
COLORREF crAxes = RGB(89, 89, 250);//цвет осей (линий)
COLORREF crMarks = RGB(0, 0, 160);//цвет отметок на шкале
COLORREF crXYLines = RGB(140, 70, 0);//название осей
COLORREF crDeleniya = RGB(0, 0, 165);//цвет текста
HPEN hPenOxy, hOldPen;
hPenOxy = CreatePen(PS_SOLID, 2, crAxes);//создаем кисть цветом "crAxy"
hOldPen = (HPEN)SelectObject(dc, hPenOxy);
SetTextColor(dc, crAxes);//устанавливаем цвет текста
int cxClient, cyClient;
cyClient = rc.bottom;//высота
cxClient = rc.right;//ширина
//выводим ось OX
MoveToEx(dc, 0, cyClient / 2, NULL);
LineTo(dc, cxClient, cyClient / 2);
//выводим стрелочку
MoveToEx(dc, cxClient, cyClient / 2, NULL);
LineTo(dc, cxClient - cxClient / 100 * 2, cyClient / 2 - cyClient / 100 * 2);
MoveToEx(dc, cxClient, cyClient / 2, NULL);
LineTo(dc, cxClient - cxClient / 100 * 2, cyClient / 2 + cyClient / 100 * 2);
//рисуем ось OY
MoveToEx(dc, cxClient / 2, 00, NULL);
LineTo(dc, cxClient / 2, cyClient);
//выводим стрелочку
MoveToEx(dc, cxClient / 2, 0, NULL);
LineTo(dc, cxClient / 2 - cxClient / 100 * 2, cyClient / 100 * 2);
MoveToEx(dc, cxClient / 2, 0, NULL);
LineTo(dc, cxClient / 2 + cxClient / 100 * 2, cyClient / 100 * 2);
//название осей
SetTextColor(dc, crXYLines);
TextOut(dc, cxClient - cxClient / 100 * 2 - 30, cyClient / 2 + cyClient / 100 * 2, L"OX", 2);
TextOut(dc, cxClient / 2 + cxClient / 100 * 2.5, cyClient / 200, L"OY", 2);
TextOut(dc, cxClient - cxClient / 100 * 2 - 120, cyClient / 200 + 140, L"R=200", 5);
double x, y;//значений функций
int width, height;//высота, ширина делений
//ширину области деленим на колличество делений
width = cxClient / 12;
height = cyClient / 4;
double r, f;
r = 200;
f = 0;
do
{
x = r*cos(f);
y = r*sin(f);
SetPixel(dc, x + cxClient / 2, y + cyClient / 2, crFunction);
f += 0.01;
} while (f <= 360);
SelectObject(dc, hOldPen);
DeleteObject(hPenOxy);
DeleteObject(hNew);
hold = (HFONT)SelectObject(dc, hbk);
Код для pic2
CClientDC dc(this);
GetClientRect(&rc);
hNew = CreateFont(28, 0, 0, 0, FW_NORMAL, 0, 0, 0, ANSI_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH | FF_DONTCARE, L"Times New Roman Cyr");
hold = (HFONT)SelectObject(dc, hNew);
dc.FillSolidRect(&rc, RGB(255, 255, 255));
cf = RGB(255, 255, 255);
ck = RGB(50, 70, 120);
SetTextColor(dc, ck);
SetBkColor(dc, cf);
msg.Format(L"Полярная");
TextOutW(dc, rc.left + 50, rc.bottom - 450, msg, msg.GetLength());
msg.Format(L"система");
TextOutW(dc, rc.left + 50, rc.bottom - 420, msg, msg.GetLength());
msg.Format(L"координат");
TextOutW(dc, rc.left + 50, rc.bottom - 390, msg, msg.GetLength());
COLORREF crFunction = RGB(230, 0, 0);//цвет графика
COLORREF crAxes = RGB(89, 89, 250);//цвет осей (линий)
COLORREF crMarks = RGB(0, 0, 160);//цвет отметок на шкале
COLORREF crXYLines = RGB(140, 70, 0);//название осей
COLORREF crDeleniya = RGB(0, 0, 165);//цвет текста
HPEN hPenOxy, hOldPen;
hPenOxy = CreatePen(PS_SOLID, 2, crAxes);//создаем кисть цветом "crAxy"
hOldPen = (HPEN)SelectObject(dc, hPenOxy);
SetTextColor(dc, crAxes);//устанавливаем цвет текста
int cxClient, cyClient;
cyClient = rc.bottom;//высота
cxClient = rc.right;//ширина
//выводим ось OX
MoveToEx(dc, 0, cyClient / 2, NULL);
LineTo(dc, cxClient, cyClient / 2);
//выводим стрелочку
MoveToEx(dc, cxClient, cyClient / 2, NULL);
LineTo(dc, cxClient - cxClient / 100 * 2, cyClient / 2 - cyClient / 100 * 2);
MoveToEx(dc, cxClient, cyClient / 2, NULL);
LineTo(dc, cxClient - cxClient / 100 * 2, cyClient / 2 + cyClient / 100 * 2);
//рисуем ось OY
MoveToEx(dc, cxClient / 2, 00, NULL);
LineTo(dc, cxClient / 2, cyClient);
//выводим стрелочку
MoveToEx(dc, cxClient / 2, 0, NULL);
LineTo(dc, cxClient / 2 - cxClient / 100 * 2, cyClient / 100 * 2);
MoveToEx(dc, cxClient / 2, 0, NULL);
LineTo(dc, cxClient / 2 + cxClient / 100 * 2, cyClient / 100 * 2);
//название осей
SetTextColor(dc, crXYLines);
TextOut(dc, cxClient - cxClient / 100 * 2 - 30, cyClient / 2 + cyClient / 100 * 2, L"OX", 2);
TextOut(dc, cxClient / 2 + cxClient / 100 * 2.5, cyClient / 200, L"OY", 2);
TextOut(dc, cxClient - cxClient / 100 * 2 - 180, cyClient / 200 + 110, L"спираль", 7);
TextOut(dc, cxClient - cxClient / 100 * 2 - 180, cyClient / 200 + 140, L"\"АРХИМЕДА\"", 10);
double x, y;//значений функций
int width, height;//высота, ширина делений
//ширину области деленим на колличество делений
width = cxClient / 12;
height = cyClient / 4;
double r, f;
r = 0;
f = 0.1;
do
{
r += 0.05;
x = r*cos(f);
y = r*sin(f);
SetPixel(dc, x + cxClient / 2, y + cyClient / 2, crFunction);
f += 0.01;
} while (f <= 360);
SelectObject(dc, hOldPen);
DeleteObject(hPenOxy);
DeleteObject(hNew);
hold = (HFONT)SelectObject(dc, hbk);
Код для pic3
CClientDC dc(this);
GetClientRect(&rc);
hNew = CreateFont(28, 0, 0, 0, FW_NORMAL, 0, 0, 0, ANSI_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH | FF_DONTCARE, L"Times New Roman Cyr");
hold = (HFONT)SelectObject(dc, hNew);
dc.FillSolidRect(&rc, RGB(255, 255, 255));
cf = RGB(255, 255, 255);
ck = RGB(50, 70, 120);
SetTextColor(dc, ck);
SetBkColor(dc, cf);
msg.Format(L"Полярная");
TextOutW(dc, rc.left + 50, rc.bottom - 450, msg, msg.GetLength());
msg.Format(L"система");
TextOutW(dc, rc.left + 50, rc.bottom - 420, msg, msg.GetLength());
msg.Format(L"координат");
TextOutW(dc, rc.left + 50, rc.bottom - 390, msg, msg.GetLength());
COLORREF crFunction = RGB(250, 100, 50);//цвет графика
COLORREF crAxes = RGB(89, 89, 250);//цвет осей (линий)
COLORREF crMarks = RGB(0, 0, 160);//цвет отметок на шкале
COLORREF crXYLines = RGB(140, 70, 0);//название осей
COLORREF crDeleniya = RGB(0, 0, 165);//цвет текста
HPEN hPenOxy, hOldPen;
hPenOxy = CreatePen(PS_SOLID, 2, crAxes);//создаем кисть цветом "crAxy"
hOldPen = (HPEN)SelectObject(dc, hPenOxy);
SetTextColor(dc, crAxes);//устанавливаем цвет текста
int cxClient, cyClient;
cyClient = rc.bottom;//высота
cxClient = rc.right;//ширина
//выводим ось OX
MoveToEx(dc, 0, cyClient / 2, NULL);
LineTo(dc, cxClient, cyClient / 2);
//выводим стрелочку
MoveToEx(dc, cxClient, cyClient / 2, NULL);
LineTo(dc, cxClient - cxClient / 100 * 2, cyClient / 2 - cyClient / 100 * 2);
MoveToEx(dc, cxClient, cyClient / 2, NULL);
LineTo(dc, cxClient - cxClient / 100 * 2, cyClient / 2 + cyClient / 100 * 2);
//рисуем ось OY
MoveToEx(dc, cxClient / 2, 00, NULL);
LineTo(dc, cxClient / 2, cyClient);
//выводим стрелочку
MoveToEx(dc, cxClient / 2, 0, NULL);
LineTo(dc, cxClient / 2 - cxClient / 100 * 2, cyClient / 100 * 2);
MoveToEx(dc, cxClient / 2, 0, NULL);
LineTo(dc, cxClient / 2 + cxClient / 100 * 2, cyClient / 100 * 2);
//название осей
SetTextColor(dc, crXYLines);
TextOut(dc, cxClient - cxClient / 100 * 2 - 30, cyClient / 2 + cyClient / 100 * 2, L"OX", 2);
TextOut(dc, cxClient / 2 + cxClient / 100 * 2.5, cyClient / 200, L"OY", 2);
TextOut(dc, cxClient - cxClient / 100 * 2 - 120, cyClient / 200 + 140, L"k=7", 3);
double x, y;//значений функций
int width, height;//высота, ширина делений
//ширину области деленим на колличество делений
width = cxClient / 12;
height = cyClient / 4;
double r, f;
int a, k;
a = 200;
k = 7;
r = 200;
f = 0.1;
do
{
r = a*sin(k*f);
x = r*cos(f);
y = r*sin(f);
SetPixel(dc, x + cxClient / 2, y + cyClient / 2, crFunction);
f += 0.01;
} while (f <= 360);
SelectObject(dc, hOldPen);
DeleteObject(hPenOxy);
DeleteObject(hNew);
hold = (HFONT)SelectObject(dc, hbk);
Код для pic4
CClientDC dc(this);
GetClientRect(&rc);
hNew = CreateFont(28, 0, 0, 0, FW_NORMAL, 0, 0, 0, ANSI_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH | FF_DONTCARE, L"Times New Roman Cyr");
hold = (HFONT)SelectObject(dc, hNew);
dc.FillSolidRect(&rc, RGB(255, 255, 255));
cf = RGB(255, 255, 255);
ck = RGB(50, 70, 120);
SetTextColor(dc, ck);
SetBkColor(dc, cf);
msg.Format(L"Полярная");
TextOutW(dc, rc.left + 50, rc.bottom - 450, msg, msg.GetLength());
msg.Format(L"система");
TextOutW(dc, rc.left + 50, rc.bottom - 420, msg, msg.GetLength());
msg.Format(L"координат");
TextOutW(dc, rc.left + 50, rc.bottom - 390, msg, msg.GetLength());
COLORREF crFunction = RGB(250, 100, 50);//цвет графика
COLORREF crAxes = RGB(89, 89, 250);//цвет осей (линий)
COLORREF crMarks = RGB(0, 0, 160);//цвет отметок на шкале
COLORREF crXYLines = RGB(140, 70, 0);//название осей
COLORREF crDeleniya = RGB(0, 0, 165);//цвет текста
HPEN hPenOxy, hOldPen;
hPenOxy = CreatePen(PS_SOLID, 2, crAxes);//создаем кисть цветом "crAxy"
hOldPen = (HPEN)SelectObject(dc, hPenOxy);
SetTextColor(dc, crAxes);//устанавливаем цвет текста
int cxClient, cyClient;
cyClient = rc.bottom;//высота
cxClient = rc.right;//ширина
//выводим ось OX
MoveToEx(dc, 0, cyClient / 2, NULL);
LineTo(dc, cxClient, cyClient / 2);
//выводим стрелочку
MoveToEx(dc, cxClient, cyClient / 2, NULL);
LineTo(dc, cxClient - cxClient / 100 * 2, cyClient / 2 - cyClient / 100 * 2);
MoveToEx(dc, cxClient, cyClient / 2, NULL);
LineTo(dc, cxClient - cxClient / 100 * 2, cyClient / 2 + cyClient / 100 * 2);
//рисуем ось OY
MoveToEx(dc, cxClient / 2, 00, NULL);
LineTo(dc, cxClient / 2, cyClient);
//выводим стрелочку
MoveToEx(dc, cxClient / 2, 0, NULL);
LineTo(dc, cxClient / 2 - cxClient / 100 * 2, cyClient / 100 * 2);
MoveToEx(dc, cxClient / 2, 0, NULL);
LineTo(dc, cxClient / 2 + cxClient / 100 * 2, cyClient / 100 * 2);
//название осей
SetTextColor(dc, crXYLines);
TextOut(dc, cxClient - cxClient / 100 * 2 - 30, cyClient / 2 + cyClient / 100 * 2, L"OX", 2);
TextOut(dc, cxClient / 2 + cxClient / 100 * 2.5, cyClient / 200, L"OY", 2);
TextOut(dc, cxClient - cxClient / 100 * 2 - 120, cyClient / 200 + 140, L"k=3", 3);
double x, y;//значений функций
int width, height;//высота, ширина делений
//ширину области деленим на колличество делений
width = cxClient / 12;
height = cyClient / 4;
double r, f;
int a, k;
a = 200;
k = 3;
r = 200;
f = 0.1;
do
{
r = a*sin(k*f);
x = r*cos(f);
y = r*sin(f);
SetPixel(dc, x + cxClient / 2, y + cyClient / 2, crFunction);
f += 0.01;
} while (f <= 360);
SelectObject(dc, hOldPen);
DeleteObject(hPenOxy);
DeleteObject(hNew);
hold = (HFONT)SelectObject(dc, hbk);
Код для pic5
CClientDC dc(this);
GetClientRect(&rc);
hNew = CreateFont(28, 0, 0, 0, FW_NORMAL, 0, 0, 0, ANSI_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH | FF_DONTCARE, L"Times New Roman Cyr");
hold = (HFONT)SelectObject(dc, hNew);
dc.FillSolidRect(&rc, RGB(255, 255, 255));
cf = RGB(255, 255, 255);
ck = RGB(50, 70, 120);
SetTextColor(dc, ck);
SetBkColor(dc, cf);
msg.Format(L"Полярная");
TextOutW(dc, rc.left + 50, rc.bottom - 450, msg, msg.GetLength());
msg.Format(L"система");
TextOutW(dc, rc.left + 50, rc.bottom - 420, msg, msg.GetLength());
msg.Format(L"координат");
TextOutW(dc, rc.left + 50, rc.bottom - 390, msg, msg.GetLength());
COLORREF crFunction = RGB(250, 100, 50);//цвет графика
COLORREF crAxes = RGB(89, 89, 250);//цвет осей (линий)
COLORREF crMarks = RGB(0, 0, 160);//цвет отметок на шкале
COLORREF crXYLines = RGB(140, 70, 0);//название осей
COLORREF crDeleniya = RGB(0, 0, 165);//цвет текста
HPEN hPenOxy, hOldPen;
hPenOxy = CreatePen(PS_SOLID, 2, crAxes);//создаем кисть цветом "crAxy"
hOldPen = (HPEN)SelectObject(dc, hPenOxy);
SetTextColor(dc, crAxes);//устанавливаем цвет текста
int cxClient, cyClient;
cyClient = rc.bottom;//высота
cxClient = rc.right;//ширина
//выводим ось OX
MoveToEx(dc, 0, cyClient / 2, NULL);
LineTo(dc, cxClient, cyClient / 2);
//выводим стрелочку
MoveToEx(dc, cxClient, cyClient / 2, NULL);
LineTo(dc, cxClient - cxClient / 100 * 2, cyClient / 2 - cyClient / 100 * 2);
MoveToEx(dc, cxClient, cyClient / 2, NULL);
LineTo(dc, cxClient - cxClient / 100 * 2, cyClient / 2 + cyClient / 100 * 2);
//рисуем ось OY
MoveToEx(dc, cxClient / 2, 00, NULL);
LineTo(dc, cxClient / 2, cyClient);
//выводим стрелочку
MoveToEx(dc, cxClient / 2, 0, NULL);
LineTo(dc, cxClient / 2 - cxClient / 100 * 2, cyClient / 100 * 2);
MoveToEx(dc, cxClient / 2, 0, NULL);
LineTo(dc, cxClient / 2 + cxClient / 100 * 2, cyClient / 100 * 2);
//название осей
SetTextColor(dc, crXYLines);
TextOut(dc, cxClient - cxClient / 100 * 2 - 30, cyClient / 2 + cyClient / 100 * 2, L"OX", 2);
TextOut(dc, cxClient / 2 + cxClient / 100 * 2.5, cyClient / 200, L"OY", 2);
TextOut(dc, cxClient - cxClient / 100 * 2 - 120, cyClient / 200 + 140, L"k=5", 3);
double x, y;//значений функций
int width, height;//высота, ширина делений
//ширину области деленим на колличество делений
width = cxClient / 12;
height = cyClient / 4;
double r, f;
int a, k;
a = 200;
k = 5;
r = 200;
f = 0.1;
do
{
r = a*sin(k*f);
x = r*cos(f);
y = r*sin(f);
SetPixel(dc, x + cxClient / 2, y + cyClient / 2, crFunction);
f += 0.01;
} while (f <= 360);
SelectObject(dc, hOldPen);
DeleteObject(hPenOxy);
DeleteObject(hNew);
hold = (HFONT)SelectObject(dc, hbk);
Код для pic6
CClientDC dc(this);
GetClientRect(&rc);
hNew = CreateFont(28, 0, 0, 0, FW_NORMAL, 0, 0, 0, ANSI_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH | FF_DONTCARE, L"Times New Roman Cyr");
hold = (HFONT)SelectObject(dc, hNew);
dc.FillSolidRect(&rc, RGB(255, 255, 255));
cf = RGB(255, 255, 255);
ck = RGB(50, 70, 120);
SetTextColor(dc, ck);
SetBkColor(dc, cf);
msg.Format(L"Полярная");
TextOutW(dc, rc.left + 50, rc.bottom - 450, msg, msg.GetLength());
msg.Format(L"система");
TextOutW(dc, rc.left + 50, rc.bottom - 420, msg, msg.GetLength());
msg.Format(L"координат");
TextOutW(dc, rc.left + 50, rc.bottom - 390, msg, msg.GetLength());
COLORREF crFunction = RGB(250, 100, 50);//цвет графика
COLORREF crAxes = RGB(89, 89, 250);//цвет осей (линий)
COLORREF crMarks = RGB(0, 0, 160);//цвет отметок на шкале
COLORREF crXYLines = RGB(140, 70, 0);//название осей
COLORREF crDeleniya = RGB(0, 0, 165);//цвет текста
HPEN hPenOxy, hOldPen;
hPenOxy = CreatePen(PS_SOLID, 2, crAxes);//создаем кисть цветом "crAxy"
hOldPen = (HPEN)SelectObject(dc, hPenOxy);
SetTextColor(dc, crAxes);//устанавливаем цвет текста
int cxClient, cyClient;
cyClient = rc.bottom;//высота
cxClient = rc.right;//ширина
//выводим ось OX
MoveToEx(dc, 0, cyClient / 2, NULL);
LineTo(dc, cxClient, cyClient / 2);
//выводим стрелочку
MoveToEx(dc, cxClient, cyClient / 2, NULL);
LineTo(dc, cxClient - cxClient / 100 * 2, cyClient / 2 - cyClient / 100 * 2);
MoveToEx(dc, cxClient, cyClient / 2, NULL);
LineTo(dc, cxClient - cxClient / 100 * 2, cyClient / 2 + cyClient / 100 * 2);
//рисуем ось OY
MoveToEx(dc, cxClient / 2, 00, NULL);
LineTo(dc, cxClient / 2, cyClient);
//выводим стрелочку
MoveToEx(dc, cxClient / 2, 0, NULL);
LineTo(dc, cxClient / 2 - cxClient / 100 * 2, cyClient / 100 * 2);
MoveToEx(dc, cxClient / 2, 0, NULL);
LineTo(dc, cxClient / 2 + cxClient / 100 * 2, cyClient / 100 * 2);
//название осей
SetTextColor(dc, crXYLines);
TextOut(dc, cxClient - cxClient / 100 * 2 - 30, cyClient / 2 + cyClient / 100 * 2, L"OX", 2);
TextOut(dc, cxClient / 2 + cxClient / 100 * 2.5, cyClient / 200, L"OY", 2);
TextOut(dc, cxClient - cxClient / 100 * 2 - 120, cyClient / 200 + 140, L"k=129", 5);
double x, y;//значений функций
int width, height;//высота, ширина делений
//ширину области деленим на колличество делений
width = cxClient / 12;
height = cyClient / 4;
double r, f;
int a, k;
a = 200;
k = 128;
r = 200;
f = 0.1;
do
{
r = a*sin(k*f);
x = r*cos(f);
y = r*sin(f);
SetPixel(dc, x + cxClient / 2, y + cyClient / 2, crFunction);
f += 0.01;
} while (f <= 360);
SelectObject(dc, hOldPen);
DeleteObject(hPenOxy);
DeleteObject(hNew);
hold = (HFONT)SelectObject(dc, hbk);
Код для pic7
CClientDC dc(this);
GetClientRect(&rc);
hNew = CreateFont(28, 0, 0, 0, FW_NORMAL, 0, 0, 0, ANSI_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH | FF_DONTCARE, L"Times New Roman Cyr");
hold = (HFONT)SelectObject(dc, hNew);
dc.FillSolidRect(&rc, RGB(255, 255, 255));
cf = RGB(255, 255, 255);
ck = RGB(50, 70, 120);
SetTextColor(dc, ck);
SetBkColor(dc, cf);
msg.Format(L"Полярная");
TextOutW(dc, rc.left + 50, rc.bottom - 450, msg, msg.GetLength());
msg.Format(L"система");
TextOutW(dc, rc.left + 50, rc.bottom - 420, msg, msg.GetLength());
msg.Format(L"координат");
TextOutW(dc, rc.left + 50, rc.bottom - 390, msg, msg.GetLength());
COLORREF crFunction = RGB(250, 100, 50);//цвет графика
COLORREF crAxes = RGB(89, 89, 250);//цвет осей (линий)
COLORREF crMarks = RGB(0, 0, 160);//цвет отметок на шкале
COLORREF crXYLines = RGB(140, 70, 0);//название осей
COLORREF crDeleniya = RGB(0, 0, 165);//цвет текста
HPEN hPenOxy, hOldPen;
hPenOxy = CreatePen(PS_SOLID, 2, crAxes);//создаем кисть цветом "crAxy"
hOldPen = (HPEN)SelectObject(dc, hPenOxy);
SetTextColor(dc, crAxes);//устанавливаем цвет текста
int cxClient, cyClient;
cyClient = rc.bottom;//высота
cxClient = rc.right;//ширина
//выводим ось OX
MoveToEx(dc, 0, cyClient / 2, NULL);
LineTo(dc, cxClient, cyClient / 2);
//выводим стрелочку
MoveToEx(dc, cxClient, cyClient / 2, NULL);
LineTo(dc, cxClient - cxClient / 100 * 2, cyClient / 2 - cyClient / 100 * 2);
MoveToEx(dc, cxClient, cyClient / 2, NULL);
LineTo(dc, cxClient - cxClient / 100 * 2, cyClient / 2 + cyClient / 100 * 2);
//рисуем ось OY
MoveToEx(dc, cxClient / 2, 00, NULL);
LineTo(dc, cxClient / 2, cyClient);
//выводим стрелочку
MoveToEx(dc, cxClient / 2, 0, NULL);
LineTo(dc, cxClient / 2 - cxClient / 100 * 2, cyClient / 100 * 2);
MoveToEx(dc, cxClient / 2, 0, NULL);
LineTo(dc, cxClient / 2 + cxClient / 100 * 2, cyClient / 100 * 2);
//название осей
SetTextColor(dc, crXYLines);
TextOut(dc, cxClient - cxClient / 100 * 2 - 30, cyClient / 2 + cyClient / 100 * 2, L"OX", 2);
TextOut(dc, cxClient / 2 + cxClient / 100 * 2.5, cyClient / 200, L"OY", 2);
TextOut(dc, cxClient - cxClient / 100 * 2 - 150, cyClient / 200 + 140, L"КАРДИОИДА", 9);
double x, y;//значений функций
int width, height;//высота, ширина делений
//ширину области деленим на колличество делений
width = cxClient / 12;
height = cyClient / 4;
double e, r, f;
int a, b, k;
a = 90;
b = 70;
k = 82;
e = a / b;
r = 200;
f = 0;
do
{
x = (b + e*b)*cos(e*f) - k*cos(f + e*f);
y = (b + e*b)*sin(e*f) - k*sin(f + e*f);
SetPixel(dc, x + cxClient / 2, y + cyClient / 2, crFunction);
f += 0.01;
} while (f <= 360);
SelectObject(dc, hOldPen);
DeleteObject(hPenOxy);
DeleteObject(hNew);
hold = (HFONT)SelectObject(dc, hbk);
Теперь русифицируем меню. Заходим в файл там где мы формировали меню и вместо pic пишем название графиков.
Теперь осталось прикрепить меню к планшетке.
И так переходим в Resource View раскрываем папку dialog и переходим в файл который там есть нажимаем на кнопку Toggle Grid.
ПКМ по планшетке выбираем properties в пункте меню выбираем menu и в выпадающим списке будет наше меню.
Комментарии
Отправить комментарий