іння константністю об'єктів (модифікатори const, mutable, volatile).
Використання константних об'єктів підвищує надійність і служить підказкою для оптимізації. Перевантаження функцій-членів за ознакою константності дозволяє визначати вибір методу залежно мету виклику (константних для читання, неконстантний для зміни). Оголошення mutable дозволяє зберігати логічну константність при вигляді ззовні коду, що використовує кеші і ледачі обчислення.
Доступність. Для С ++ існує величезна кількість навчальної літератури, перекладеної на всілякі мови. Мова має низький поріг входження, але серед всіх мов такого роду володіє найбільш широкими можливостями.
1.3 Завдання базової фігури
Базова фігура задається за допомогою математичних формул, які описують дані об'єкти, і методів задання об'єктів мови програмування з ++.
Окружність в даному випадку простіше реалізувати у вигляді отрисовки двома півколами за допомогою методу отрисовки секторів виду:
Image- gt; Canvas- gt; Pie (xl, yl, x2, y2, x3, y3, x4, y4)
Параметри xl, yl, x2, у2 визначають коло, частиною якого є сектор; х3, у3, х4 і у4 - прямі - кордону сектора. Початкова точка кордонів збігається з центром кола. Сектор вирізається проти годинникової стрілки від прямої, заданої точкою з координатами (х3, у3), до прямої, заданої точкою з координатами (х4, у4). Вид кордону сектора визначають значення властивості Реn, а вид заливки області, обмеженою лінією кордону - значення властивості Brush тій поверхні, на якій метод малює.
Для отрисовки дуг усередині білого сектора кола Бенхема використовується метод Arc - отрисовка частини дуги кола.
Інструкція виклику методу в загальному вигляді виглядає так:
gt; Canvas- gt; Arc (xl, yl, x2, y2, x3, y3, x4, y4),
Параметри x1, yl, х2, y2 визначають коло, частиною якого є дуга. Параметри х3 і y3 задають початкову, а х4 і у4 - кінцеву точку дуги. Початкова (кінцева) точка дуги - це точка перетину кордону кола і прямої, проведеної з центру еліпса в точку з координатами х3 і y3 (х4, у4). Метод Arc викреслює дугу проти годинникової стрілки від початкової точки до кінцевої. Колір, товщина і стиль лінії, якої викреслюється дуга, визначаються значеннями властивості Реn поверхні, на яку виконується виведення.
Для базової фігури
M=X + (- D/2) * cos (B * M_PI/180);=Y + (- D/2) * sin (B * M_PI/180);=X + D/2 * cos (B * M_PI/180);=Y + D/2 * sin (B * M_PI/180);=X + (- 3 * D/4) * cos (B * M_PI/180) - (-3 * D/4) * sin (B * M_PI/180);=Y + (- 3 * D/4) * cos (B * M_PI/180) + (- 3 * D/4) * sin (B * M_PI/180);=X + (- D/2 + D/32) * cos (B * M_PI/180);=Y + (- D/2 + D/32) * sin (B * M_PI/180);=X- (- D/4) * sin (B * M_PI/180);=Y + (- D/4) * cos (B * M_PI/180);=X + D/4 * cos (B * M_PI/180)- (- D/4) * sin (B * M_PI/180);=Y + (- D/4) * cos (B * M_PI/180) + D/4 * sin (B * M_PI/180);=X + 3 * D/4 * cos (B * M_PI/180);=Y + 3 * D/4 * sin (B *M_PI/180);-gt;PaintBox1-gt;Canvas-gt;Brush-gt;Color=clBlack;-gt;PaintBox1-gt;Canvas-gt;Pie(X-D/2 , YD/2, X + D/2, Y + D/2, M, N, M1, N1); - gt; PaintBox1- gt; Canvas- gt; Brush- gt; Color=clWhite; - gt; PaintBox1- gt; Canvas- gt; Pie (XD/2, YD/2, X + D/2, Y + D/2, M1, N1, M, N); - gt; PaintBox1- gt; Canvas- gt; Arc ( XD/2 + D/32, YD/2 + D/32, X + D/2-D/32, Y + D/2-D/32, M3, N3, K, L); - gt; PaintBox1- gt; Canvas- gt; Arc (XD/2 + 2 * D/32, YD/2 + 2 * D/32, X + D/2-2 * D/32, Y + D/2-2 * D/ 32, M3, N3, K, L); - gt; PaintBox1- gt; Canvas- gt; Arc (XD/2 + 3 * D/32, YD/2 + 3 * D/32, X + D/2-3 * D/32, Y + D/2-3 * D/32, M3, N3, K, L); - gt; PaintBox1- gt; Canvas- gt; Arc (XD/2 + 4 * D/32, YD/2 + 4 * D/32, X + D/2-4 * D/32, Y + D/2-4 * D/32, K1, L1, M3, N3); - gt; PaintBox1- gt; Canvas- gt; Arc (XD/2 + 5 * D/32, YD/2 + 5 * D/32, X + D/2-5 * D/32, Y + D/2-5 * D/32, K1, L1, M3, N3); - gt; PaintBox1- gt; Canvas- gt; Arc (XD/2 + 6 * D/32, YD/2 + 6 * D/32, X + D/2-6 * D/32, Y + D/2-6 * D/32, K1, L1, M3, N3); - gt; PaintBox1- gt; Canvas- gt; Arc (XD/2 + 7 * D/32, YD/ 2 + 7 * D/32, X + D/2-7 * D/32, Y + D/2-7 * D/32, K2, L2, K1, L1); - gt; PaintBox1- gt; Canvas- gt; Arc (XD/2 + 8 * D/32, YD/2 + 8 * D/32, X + D/2-8 * D/32, Y + D/2-8 * D/32, K2, L2, K1, L1); - gt; PaintBox1- gt; Canvas- gt; Arc (XD/2 + 9 * D/32, YD/2 + 9 * D/32, X + D/2-9 * D/ 32, Y + D/2-9 * D/32, K2, L2, K1, L1); - gt; PaintBox1- gt; Canvas- gt; Arc (XD/2 + 10 * D/32, YD/2 + 10 * D/32, X + D/2-10 * D/32, Y + D/2-10 * D/32, K3, L3, K2, L2); - gt; PaintBox1- gt; Canvas- gt; Arc (XD/2 + 11 * D/32, YD/2 + 11 * D/32, X + D/2-11 * D/32, Y + D/2-11 * D/32, K3, L3, K2, L2); - gt; PaintBox1- gt; Canvas- gt; Arc (XD/2 + 12 * D/32, YD/2 + 12 * D/32, X ...