на тему рефераты Информационно-образоательный портал
Рефераты, курсовые, дипломы, научные работы,
на тему рефераты
на тему рефераты
МЕНЮ|
на тему рефераты
поиск
Розробка засобами Delphi дидактичного ілюстративного матеріалу для розв’язання задачі з аналітичної геометрії. Побудова в координатній площині логарифмічних спіралей
p align="left">

1.1 Умова задачі

Необхідно в системі координат побудувати логарифмічну спіраль:

Рисунок 1

1.2 Аналітичне розв'язання задачі в загальному вигляді

1.2.1 Визначення

Нехай пряма UV (див. Рисунок2) рівномірно обертається біля нерухомої точки O (полюс), а крапка М рухається уздовж UV, віддаляючись від О зі швидкістю, пропорційною відстані ОМ. Лінія, що описується точкою М, має назву логарифмічної спіралі [3].

Рисунок 2

У 1638 р. Р. Декарт знайшов, що спіраль, дуга якої зростає пропорційно полярному радіусу, володіє тією властивістю, що її дотична утворює постійний кут з полярним радіусом [7].

1.2.2 Рівняння у полярних координатах

Рівняння логарифмічної спіралі для полярних координат може бути записано так [1]:

, (1)

де  -- полярний радіус точки , а q -- коефіцієнт росту.

Коефіцієнт росту логарифмічної спіралі -- це відношення q кінцевого полярного радіусу до початкового при повороті прямої UV на кут [3].

Звичайно рівняння (1) записується у вигляді:

, (2)

де k -- параметр, що виражається через коефіцієнт росту q так:

(3)

Для переходу від полярної системи координат до Декартової використовуються формули переходу [1]:

(4)

1.2.3 Властивості логарифмічної спіралі

Із багатьох властивостей логарифмічної спіралі відзначимо:

1. Будь-який промінь, що виходить з початку, перетинає будь-який виток спіралі під одним і тим же кутом. Величина цього кута залежить від числа k у рівнянні спіралі. При цьому під кутом між променем та спіраллю розуміється кут між цим променем та дотичної до спіралі, що проведена у крапці перетину (див. Рисунок3) [7].

Рисунок 3

2. Розмір витків логарифмічної спіралі поступово збільшується, але їх форма залишається незмінною.

3. Якщо віддалення точки М від полюса О супроводжується обертанням прямої UV проти часової стрілки, то логарифмічна спіраль має назву правої; в противному випадку -- лівої. Для правої спіралі коефіцієнт росту , для лівої --; при спіраль вироджується у коло з радіусом . Також для правих спіралей параметр k має позитивне значення, а для лівих -- негативне. У граничному випадку, коли спіраль вироджується в коло з радіусом . Навпаки, коли k прагне до нескінченності спіраль прагне до прямої лінії [1].

2. Розв'язання задачі для самостійно заданих початкових даних

Задача:

Побудувати в координатній площі логарифмічну спіраль.

Дано:

Коефіцієнт росту (умова 1); (умова 2); (умова 3).

Полярний радіус ;

Кількість обертів

Виконання:

1. По формулі (3) знаходимо через коефіцієнт росту параметр k:

, (для умови 1);

, (для умови 2);

, (для умови 3);

2. Отриманий результат підставляємо до формули (2):

, (для умови 1); , (для умови 2); , (для умови 3);

Із умови 3 бачимо, що спіраль вироджується у коло з радіусом .

3. Кут постійний. Виразимо його через вираз:

, де -- змінна, що характеризує крок зростання спіралі.

Нехай крок дорівнює 60 (.

4. Спіраль обертається по колу. Повне коло -- , кількість обертів , отже ми маємо отримати 12 результатів кожного кроку.5. Маємо (для умови 1):

,

(для умови 2)

У першому випадку спіраль обертається управоруч, так як . У другому -- ліворуч, так як . А у третьому -- коло з радіусом .

3 Програмування в консольному режимі, отримання результату

3.1 Код додатку

program LSpir_cons;

{$APPTYPE CONSOLE}

var

q, p, fi, a, k, p0: Real;

n, i: integer;

begin

// Расчёт данных

writeln('Введите количество оборотов (n):');

readln(n);

writeln;

writeln('Введите значение коэффициента роста (q):');

readln(q);

writeln;

writeln('Введите полярный радиус (p0):');

readln(p0);

writeln;

// Расчёт данных

if (q <> 1) then

begin

while a < 360 * n do // рассчитываем радиус, увеличивая угол от 0 до 360 градусов

for i:=0 to 11 do // index=(360/60)*n=12; [от 0 до 11]

begin

begin

fi:= a * pi / 180;

k := (ln(q))/(2*pi);

p := p0 * exp(k * fi);

a := a + 60; // шаг

writeln('p',i+1,'= ', p:6:3, ' fi',i+1,'= ', fi:6:3);

end;

end;

end

else writeln('Спираль вырождается в окружность с радиусом ',p0:2:0);

writeln;

if (q > 1) then

begin

writeln('Спираль правосторонняя.');

end;

if (q < 1) then

writeln('Спираль левосторонняя.');

readln;

end.

3.2 Блок-схема алгоритму

3.3 Реакція ЕОМ

Рисунок 4 - Реакція ЕОМ при q=1

Рисунок 5 - Реакція ЕОМ при q > 1

Рисунок 6 -Реакція ЕОМ при q < 1

4. Компоненти форми та їх властивості

Створюючи дану програму я використовував різноманітні компоненти: Edit, Label, ImageButton, Image, PaintBox, GroupBox, CheckBox, MainMenu, PageControl та OleContainer.

Таблиця 1 - Загальна характеристика компонентів:

Компонент

Піктограма

Панель компонентів

Опис

Edit
(вікно редагування)

Standard

Відображення, введення та редагування однорядкових текстів. Є можливість оформлення об'ємного бордюру. Основна властивість -- Text.

Label
(позначка)

Standard

Відображення тексту, який не з-змінюється користувачем. Ніякого оформлення тексту не передбачено, крім кольору позначки та тексту. Основна властивість -- Caption.

ImageButton
(кнопка з графікою)

Buttons

(компонент встановлювався)

Використовується для створення кнопок, на яких розташовується декілька бітових зображень.

Image
(зображення)

Additional

Використовується для відображення графіки: піктограм, бітовий матриць та метафайлів.

PaintBox
(вікно для малювання)

System

Використовується для створення на формі деякої області, в якій можна малювати.

GroupBox
(групове вікно)

Standard

Є контейнером, що об'єднує групу пов'язаних органів управління, таких, як радіокнопкі RadioButton, контрольні індикатори Checkbox і т.д.

Checkbox
(контрольний індикатор з прапорцем)

Standard

Дозволяє користувачеві вмикати та вимикати опції програми.

MainMenu

(головне меню)

Standard

Дозволяє конструювати та створювати смугу головного меню форми та випадаючі меню. Компонент не-візуальний.

PageControl
(багато сторінкове вікно)

Win32

Дозволяє створювати сторінки у стилі Windows 95/98, керовані закладками чи іншими органами управління, для економії місця на робочому столі.

OLEContainer
(контейнер OLE)

System

Використовується при створенні області клієнта для об'єкта OLE.

4.1.1 Edit

У компоненті Edit текст, що вводиться або виводиться, міститься у властивості Text. Цю властивість можна встановлювати в процесі проектування або вказувати програмно. Вирівнювання тексту, як це має місце в позначках і панелях, неможливо. Неможливе також і перенесення рядків. Текст, який не вміщується по довжині у вікно, просто зрушується, і користувач може переміщуватися по ньому за допомогою курсору.

Властивість AutoSize у вікнах редагування автоматично підлаштовує під розмір тексту тільки висоту, але не ширину вікна.

Вікна редагування забезпечені типовими комбінаціями «гарячих» клавіш: Ctrl-C -- копіювання виділеного тексту у буфер обміну (команда Copy), Ctrl_X -- вирізання виділеного тексту в буфер (команда Cut), Ctrl-V -- вставка тексту з буфера в позицію курсора (команда Paste), Ctrl-Z -- скасування останньої команди редагування [10].

Edit можна використовувати і просто як компоненти відображення тексту. Для цього потрібно встановити в true його властивість ReadOnly і доцільно встановити AutoSelect в false. У цьому випадку користувач не зможе змінювати відображуваний текст, і вікно редагування стає подібним позначкам.

При використанні вікон редагування для введення, виводу та редагування чисел необхідно використовувати функції взаємного перетворення рядків та чисел. Для виведення це функції FloatToStr та IntToStr. При введенні це функції StrToFloat -- перетворення рядка в значення з плаваючою комою, та StrToInt -- перетворення рядка в ціле значення.

Якщо текст, що вводиться, не відповідає числу (наприклад, містить неприпустимі символи), то функції перетворення генерують виняток EConvertError. Тому в програмі необхідно передбачити обробку цього виключення. Наприклад, якщо ви бажаєте, щоб користувач міг вводити у вікно редагування Edit тільки цифри та символ точки, ви можете в обробник події OnKeyPress цього компоненту вставити оператор [2]:

if not (Key in ['0'..'9', ',']) then Key := #0;

Цей оператор підмінить усі символи, крім цифр та коми, нульовим символом, який не буде занесений в текст вікна Edit.

Властивість MaxLength визначає максимальну довжину тексту, що вводиться. Якщо MaxLength = 0, то довжина тексту не обмежена. В іншому випадку значення MaxLength вказує максимальне число символів, яке може ввести користувач.

4.1.2 Label

Компонент Label використовується для відображення різних написів на формі. Label -- це позначки, що спеціально призначені для відображення тексту.

Рисунок 7 - Приклади виводу тексту у компонент Label

Страницы: 1, 2, 3, 4, 5, 6



© 2003-2013
Рефераты бесплатно, курсовые, рефераты биология, большая бибилиотека рефератов, дипломы, научные работы, рефераты право, рефераты, рефераты скачать, рефераты литература, курсовые работы, реферат, доклады, рефераты медицина, рефераты на тему, сочинения, реферат бесплатно, рефераты авиация, рефераты психология, рефераты математика, рефераты кулинария, рефераты логистика, рефераты анатомия, рефераты маркетинг, рефераты релиния, рефераты социология, рефераты менеджемент.