УДК 514.758.2 (004.438)
ББК 22.151.5
© И.И. Баглаев
Бурятский государственный университет, Улан-Удэ E-mail:[email protected]
Моделирование плоских кривых в среде FMSLogo
Статья посвящена моделированию кривых с помощью метода, основанного на законах перемещения черепашки Тортилы - исполнителя команд среды FMSLogo. Этот метод называется кинематическим методом. В статье рассмотрены 2 способа моделирования плоских кривых: пошаговый и поворотный. Приведены примеры моделирования конкретных кривых с листингом процедур на русифицированном Лого.
Ключевые слова: Лого, FMSLogo, черепашка Тортила, моделирование плоских кривых, кинематический метод, астроида, кардиоида, спираль Архимеда, эвольвента окружности, клофоида, трактриса.
© I.I. Baglaev
Buryat State University, Ulan-Ude E-mail:[email protected]
Modeling of plane curves in FMSLogo envinronment
The article is devoted to the modeling of curves using a method based on the laws of movement of turtle Tortilla - executive of instructions of FMSLogo environment. This method is called the kinematic method. The article considers two ways of modeling of plane curves: angle-control and step-control. The examples of modeling the specific curves with the listing procedures in russified Logo are given.
Key words: Logo, FMSLogo, turtle Tortila, modeling of plane curves, kinematic method, astroid, cardioid, Archimedes spiral, involute of circle, klofoida, tractrix.
Введение
Язык программирования Лого был разработан Сеймуром Пэйпертом первоначально для проведения исследований в области искусственного интеллекта и робототехники в Технологическом Институте Штата Массачусетс. Один из роботов, управляемых Лого, имел выпуклый защитный кожух для электронной начинки, из-за чего он напоминал черепаху. В дальнейшем физическая черепаха была заменена виртуальной черепахой на экране компьютера. Виртуальную черепаху снабдили пером, так, что, перемещаясь, она могла создавать рисунки. Но рисование пером посредством перемещений черепашки, конечно, специфично и значительно отличается от процесса рисования пером в руке. Имеется много версий языка Лого, одна из них FMSLogo - свободнораспространяемая среда программирования, которая является наиболее простой, мощной и лучшей, из всех существующих. Можно загрузить дистрибутив FMSLogo-6.25.0 с проектного портала SourceForge [5] или с сайта геометрического образования Geometrie [6] . Релиз 6.25.0 имеет русскую локализацию, выполненную сотрудниками Бурятского государственного университета под руководством автора. В локализованной версии черепаха названа Тортилой и в дальнейшем в данной статье будет использоваться это имя для исполнителя команд среды программирования FMSLogo. Тортила характеризуется позицией на экране, задаваемой декартовыми координатами х, у, и азимутом И, задаваемым углом между направлением головы Тортилы с направлением на «север” экрана. Декартовы координаты определяются датчиком место, а азимут - датчиком направление. В среде FMSLogo исходная позиция Тортилы центр экрана x = 0, у = 0, первоначальный азимут h =0. Положительное направление оси абсцисс слева-направо по горизонтали, а положительное направление оси ординат снизу-вверх по вертикали. Единицей измерения служит один пиксель.
Кинематический метод
Наличие системы координат в среде FMSLogo позволяет вычерчивать линии по их уравнениям [2]. Такой подход является традиционным при компьютерном моделировании геометрических объектов. Однако особенность рисования на экране с помощью перемещений Тортилы позволяет реализовать альтернативные подходы к генерированию геометрических образов, основанные на кинематических закономерностях перемещений реального робота-черепашки [1], [4].
Пример 1: Окружность
Пусть Тортила циклически делает 1 шаг вперед и поворачивается на 1 градус по часовой стрелке. Повернувшись на 3 600 , она сделает 360 шагов и вернется в исходное положение. При этом она опишет окружность длиной 360 ед., следовательно, радиус г этой окружности
будет равен 360 ~ 57.2957.
2 • я
повтори 360[вперед 1 направо 1 ]
Длина С окружности ш радиуса И равна 2-ж-И. Длина I дуги меры 10 окружности ш рав-2-Ж-И И
на---------~-----. Отсюда следует, что для рисования окружности радиуса И нужно в цик-
360 57.3
ле на каждый поворот на 10 перемещаться на I ед. Процедура окр рисования окружности
ш радиуса И имеет вид: это окр :И
повтори 360[вперед :И/57.29 направо 1 ] конец
Данный способ рисования окружности назовем «пошаговым».
Из дифференциальной геометрии известно, что окружность является кривой постоянной
1 2-п
кривизны к = —. Длина С окружности кривизны к равна--------- ед. Следовательно, при пе-
И к
ремещении по окружности на 1 ед. Тортила поворачивается на 57.3-к градусов. Альтернативная процедура рисования окружности по заданной кривизне к имеет вид: это окр1 :к
повтори целый 360/(:к*57.29)[вперед 1 направо 57.29*:к] конец
Этот способ рисования окружности назовем «поворотным».
1. Пошаговый способ моделирования кривой
2.
Окружность, имеющая с данной кривой в данной ее точке касание 2-го порядка, называется соприкасающейся окружностью.
Если кривая у задана параметрически
Г х = х(г),
(1)
= у&),
то радиус И соприкасающейся окружности вычисляется по формуле
R
У(X2 + у2)3
I V / // ,
X - у - у -X
(2)
Радиус соприкасающейся окружности называется радиусом кривизны кривой у в данной точке. Величина к обратная радиусу кривизны, называется кривизной кривой у в данной ее точке.
В окрестности точки кривой дуга соприкасающейся окружности аппроксимирует дугу кривой, поэтому можно рисовать соответствующую дугу кривой как дугу окружности радиуса И или кривизны к пошаговым или поворотным способами, соответственно. Нас интересует только форма кривой, а не размер или ориентация, т.е. определяем кривые с точностью до подобия. Таким образом, мы игнорируем постоянные множители перед формулами радиуса кривизны, кроме знака. Является также несущественным место, с которого на экране начинает рисоваться фигура.
Пример 2: Астроида
x = a - cos —, 4
(3)
у
a - sin —. 4
Радиус кривизны астроиды в произвольной ее точке находится по формуле [3]
3
R = —■ a ■ sin 2 • t. (4)
8
В нашем случае в каждой точке M дуга астроиды апроксимируется дугой окружности радиуса (4). Пошаговый способ моделирования кривой предполагает равномерное вращение Тортилы и при каждом повороте перемещение, определяемое радиусом кривизны R.
это астр
повтори 360[вперед sin 2*счетчик направо 1] конец
Пример 3: Кардиоида
Уравнение кардиоиды в полярных координатах
р = 2 • а(1 - cos^).
Радиус кривизны кардиоиды в произвольной точке находится по формуле [3]
R=
S - a
■ 9 sin —.
2
(5)
(6)
Проводя рассуждения, аналогичные рассуждениям из предыдущего пункта, напишем процедуру рисования кардиоиды, заданной уравнение (5).
t
t
Пример 4: Спираль Архимеда
к =
р = a ■р a ■ (р2 + 1У
р2 + 2
(7)
(8)
это арх
для [1 0 720 1][вп 0.005*частное степень сумма степень 2 1 1.5 сумма степень :1 2 1 пр 2 ] конец
2. Поворотный способ моделирования кривой
Если в качестве параметра кривой взята длина 8 дуги кривой, то такая параметризация называется естественной, а уравнение, выражающее кривизну к как функцию дуги ^ вдоль кривой называется натуральным уравнением кривой. Из дифференциальной геометрии известно, что натуральное уравнение к = к(я) определяет кривую с точностью до положения на плоскости.
Пример 5: Эвольвента окружности
Эвольвента является траекторией точки прямой, катящейся без скольжения по окружности радиуса а. Параметрические уравнения эвольвенты имеют вид:
х = а ■ (cos t +1 ■ sin t),
(9)
y = a ■ (sin t -1 ■ cos t.
Натуральное уравнение эвольвенты записывается в виде [3]:
1
к = .--------- (10)
V2 ■ a ■ s
Поворотный способ моделирования кривой предполагает равномерное перемещение по кривой и поворот на угол, определяемый кривизной к. В нашем случае Тортила перемеща-
й 0 5 6 ется равномерно вперед по кривои на и.5 ед. для каждого ^ и поворачивается на угол —1=
ыs
градусов по часовоИ (против часовоИ) стрелке для 1-ой (2-ой) ветви, соответственно. это эвол
пусть "т место пусть "И направление для [8 1 360 1][вперед 0.5 лв ~ частное 6 корень :8 ] пп нм :т новк :И по для [8 1 360 1][вперед 0.5 пр ~ частное 6 корень :8 ] конец
Пример 6: Клофоида
Клофоидой называется кривая, кривизна которой прямо пропорциональна длине дуги [3].
к = a-s.
(11)
это клоф
пусть "т место пусть "И направление пр 90 для [1 0 36 1][вперед 5 лв :1 ] пп нм :т новк :И по лв 90 для [1 0 36 1][вперед 5 лв :1 ] конец
Пример 7: Трактриса
Трактрисой называется плоская трансцендентная кривая, для которой длина отрезка касательной от точки касания до точки пересечения с фиксированной прямой является постоянной величиной.
Параметрические уравнения трактрисы имеют вид
х = a ■ ln tg — + a ■ cos t, 2 y = a ■ sin t.
Натуральное уравнение трактрисы записывается в виде [3]
(12)
к(s) = a • tg arcsin e
(1З)
это трак пр 180
для [s 0.1 1.4 0.01][вперед 2 лв tg arcsin exp -:s] пп домой пр 180 по для [s 0.1 1.4 0.01][вперед 2 пр tg arcsin exp -:s] конец
-s
a
25б
Литература
1. Abelson H., DiSessa A. Turtle Geometry. Изд.5-е."1Ъе MIT Press", 1983.- 480 с.
2. Баглаев И.И., Очирова Н.В. ЛОГО-ПРОГРАММИРОВАНИЕ: учеб.-метод. пособие. - Улан-Удэ: Издательство Бурятского госуниверситета, 2006.- 111 с.
3. Савелов А.А. Плоские кривые. Систематика, свойства, применения. (Справочное руководство). -М.: Физ.-мат. лит., 1960. - 293 с.
4. Rowe N.S. Some links between turtle geometry and analytic geometry// Int. J. Sci. Math. Edu. 16: 1, 1985, p. 101-112
5. http://sourceforge.net/projects/fmslogo