Об’єкт дослідження:
Об’єктом дослідження даної курсової роботи є логарифмічна спіраль у координатній площині та її властивості.
Мета дослідження:
Метою є створення Windows-додатка на алгоритмічній мові ObjectPascal в середовищі візуального програмування Delphi. Необхідно розробити засобами Delphi дидактичний ілюстрований матеріал для розв’язання задачі з аналітичної геометрії: побудувати в координатній площі логарифмічну спіраль.
Задачі:
1) На основі теоретичного матеріалу з аналітичної геометрії розробити математичне розв’язання задачі;
2) Виконати розв’язання задачі в консольному режимі;
3) Розробити сценарій проекту в Delphi таалгоритми процедур;
4) Виконати програмну реалізацію проекту, протестувати проект та внести до нього необхідні зміні та доповнення;
5) Оформити текст пояснювальної записки для захисту.
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 Програмування в консольному режимі, отримання результату
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.
Рисунок 4 - Реакція ЕОМ при q=1