p align="left">Замість того, щоб проектувати вектор m на осі OX, ОУ, OZ, можна проектувати його на осі М1А, М1В, М1С (рис. 1.3), проведені через початок М1 вектора m і дорівнює направленню з осями координат. Координати вектора не змінюються при паралельному перенесенні системи координат. Навпаки, координати точки при паралельному перенесенні системи координат змінюються. [1] Якщо початкова точка вектора ОМ співпадає з початком координат, то координати вектора ОМ відповідно рівні координатами кінцевої його точки М. Рисунок 1.3 Координати вектора 1.2.3 Кут між віссю координат та векторомКути б, в, г (рис. 1.4), утворених позитивними напрямками OX, OY, OZ з вектором a{X;Y;Z}, можна знайти за формулами, (1), (2), (3)ПрикладРисунок 1.4 Кут між віссю координат так вектором Якщо вектор a має довжину, що дорівнює одиниці масштабу, тобто якщо |a| = 1, то , , . З формул (1), (2), (3) випливає: (4) Приклад: Знайти кути, утворених осями координат з вектором {2;-2;-1}. Розв'язання. ,, , звідки 1.2.4 Аналітичне розв'язанняПо заданому модулю вектора і заданими кутах між вектором і осями OX, OY, OZ, обчислити проекції вектора на координатні осі.Дано: Розв'язання:1. За формулою обчислюємо відповідно x, y, z 2. Отримані значення перетворимо в екранні координати cpX, cpY - центр системи координат dp - масштаб 3. Виводимо вектор за отриманими координатами Рисунок 1.5 Отриманий вектор 1.2.5 Математичний прикладДано: Рішення:1. За формулою обчислюємо відповідно x, y, z 1. Виходить вектор з координатами 2. Отримані значення перетворимо в екранні координати 3. Будуємо вектор у системі координат 2. Сценарій розв'язання задачі в Delphi 2.1 Програмування в консольному режимі2.1.1 Блок-схема алгоритму2.1.2 Програмний код консольної програмиprogram Console; {$APPTYPE CONSOLE} uses SysUtils, Windows, Forms, Math; var a,b,v: real; //углы между векторами и осями m: integer; //модуль вектора x,y,z: integer; //координаты вектора xe,ye: integer; //экранные координаты вектора const dp = 14; cpX = 250; cpY = 200; //Вывод текста кириллицей на экран procedure printf(const S: AnsiString); var Result: AnsiString; begin SetLength(Result, Length(S)); AnsiToOemBuff(@S[1], @Result[1], Length(S)); writeln(result); end; //Задержка procedure Delay(ms : cardinal); var t1: cardinal; begin t1:=GetTickCount; while (GetTickCount - t1) < ms do Application.ProcessMessages; end; begin //Ввод данных printf('Введите угол альфа'); readln(a); printf('Введите угол бета'); readln(b); printf('Введите угол гамма'); readln(v); printf('Введите модуль вектора'); readln(m); //Расчет данных printf('Идет расчет данных...'); x:=round(cos(a*(Pi/180))*m); y:=round(cos(b*(Pi/180))*m); z:=round(cos(v*(Pi/180))*m); delay(4000); //Расчет экранных координат xe:=cpX + (y * dp) - (x * dp div 2); ye:=cpY + (x * dp div 2) - (z * dp); //Вывод информации printf(Format('Вектор с координатами: a={%d,%d,%d}',[x,y,z])); printf(Format('Экранные координаты: Xe=%d, Ye=%d',[xe,ye])); readln; end.
Рисунок 2.2 Консольна програма 2.2 Компоненти та їх властивостіСтворюючи цю програму я використовував багато графічних компонентів, наприклад Edit, Button, CheckBox, MainMenu, ColorBox, PageControl и TrackBar.2.2.1 Компонент EditКомпонент для відображення, введення та редагування однорядкових текстів. Є можливість оформлення об'ємного бордюру. Основна властивість -- Text. У компоненті Edit текст, що вводиться або виводиться, міститься у властивості Text. Цю властивість можна встановлювати в процесі проектування або вказувати програмно. Вирівнювання тексту, як це має місце в позначках і панелях, неможливо. Неможливе також і перенесення рядків. Текст, який не вміщується по довжині у вікно, просто зрушується, і користувач може переміщуватися по ньому за допомогою курсору.Таблиця 2.1 - Властивості компоненту Edit |
Властивості | Опис | | AutoSize | Автоматично налаштування під розмір тексту | | Color | Колір тексту | | Font: TFont | Вибраний шрифт тексту | | Left: integer | Положення компонента по горизонталі | | ReadOnly: Boolean | Тільки для читання | | Text | Введений текст | | Top: integer | Положення компонента по вертикалі | | Visible: Boolean | Показує чи видимий компонент в даний час | | Width: integer | Ширина форми в пікселях | | | 2.2.2 Компонент ButtonКнопки TButton широко використовуються для управління програмами. Пов'язаний з кнопкою алгоритм управління реалізується в обробнику події OnClick. На відміну від більшості інших видимих компонентів кнопка TButton є компонентом самої Windows і тому не може змінювати свій колір довільним чином - вона його змінює разом зі зміною палітри Windows. Кнопка завжди має системний колір clBtnFace і не має властивості Color. Шрифт напису на кнопці може змінювати свій стиль і розмір, але компонент ігнорує зміну його кольору.Таблиця 2.2 Властивості компоненту Button |
Властивості | Опис | | Caption: string | Заголовок компоненту | | Cursor: TCursor | Тип курсору, коли він знаходиться на компоненті | | Enabled: Boolean | Вмикання/вимикання кнопки | | Font: TFont | Параметри шрифту | | Height: integer | Висота компонента в пікселях | | Left: integer | Положення компонента по горизонталі | | ModalResult: TModalResult | Результат модального вікна | | Name | Ім'я компонента | | Style: TButtonStyle | Стиль кнопки bsCommandLink - кнопка-посилання bsPushButton - звичайний стиль кнопки bsSplitButton - кнопка з випадаючого меню | | Top: integer | Положення компонента по вертикалі | | Visible: Boolean | Показує чи видимий компонент в даний час | | Width: integer | Ширина компонента в пікселях | | | 2.2.3 Компонент PageControlДозволяє створювати сторінки, керовані закладками чи іншими органами управління, для економії місця в програмі. Багатосторінкові панелі дозволяють заощаджувати простір вікна додатку, розміщуючи на одному і тому ж місці сторінки різного змісту.. Таблиця 2.3 Властивості компоненту PageControl |
Властивості | Опис | | Align: TAlignPosition | Вирівнювання компонента, по якомусь краю або по всій формі | | Caption: string | Заголовок компоненту | | Cursor: TCursor | Тип курсору, коли він знаходиться на компоненті | | Height: integer | Висота компонента в пікселях | | Left: integer | Положення компонента по горизонталі | | Name | Ім'я компонента | | Style: TButtonStyle | Стиль компонента tsTabs - Закладки tsButtons - Кнопки tsFlatButtons - Пласкі кнопки | | TabIndex: integer | Поточна закладка | | TabPosition: TTabPosition | Положення компонента tsTop - зверху tsRight - справа tsBottom - знизу tsLeft - зліва | | Top: integer | Положення компонента по вертикалі | | Visible: Boolean | Показує чи видимий компонент в даний час | | Width: integer | Ширина компонента в пікселях | | | 2.2.4 Компонент MainMenuДозволяє конструювати та створювати смугу головного меню форми та випадаючі меню. MainMenu -- це не візуальний компонент, тобто місце його розміщення на формі в процесі проектування не має ніякого значення для користувача -- він все одно побачить не сам компонент, а тільки меню, генероване ним. Таблиця 2.4 Властивості компоненту MainMenu |
Властивості | Опис | | AutoHotkeys | maAutomatic maManual | | AutoLineReduction | maAutomatic maManual | | Images: TImageList | Підключаемий компонент ImageList | | Items: TMenuItem | Елементи меню | | | 2.2.5 Компонент CheckBoxДозволяє користувачеві вмикати та вимикати опції програми. Індикатори з прапорцем CheckBox використовуються в додатках в основному для того, щоб користувач міг вмикати та вимикати якісь параметри, або для індикації стану. При кожному натисканні користувача на індикатор його стан змінюється, проходячи в загальному випадку послідовно через три значення: виділення (поява чорної галочки), проміжне (сіре вікно індикатора та сіра пташка) і не виділене (порожнє вікно індикатора). Цим трьом станам відповідають три значення властивості компоненту State: cbChecked, cbGrayed, cbUncheckedТаблиця 2.5 Властивості компоненту CheckBox
Страницы: 1, 2, 3, 4
|