Научная статья на тему 'Замечательные математические кривые (унифицированный подход к отображению и хранению)'

Замечательные математические кривые (унифицированный подход к отображению и хранению) Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
788
160
i Надоели баннеры? Вы всегда можете отключить рекламу.

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Веревкин Сергей Анатольевич, Волков Михаил Анатольевич, Шинкарева Дарья Демьяновна

Предложен унифицированный подход представления данных математических кривых и реальный программный продукт.

i Надоели баннеры? Вы всегда можете отключить рекламу.

Похожие темы научных работ по компьютерным и информационным наукам , автор научной работы — Веревкин Сергей Анатольевич, Волков Михаил Анатольевич, Шинкарева Дарья Демьяновна

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Текст научной работы на тему «Замечательные математические кривые (унифицированный подход к отображению и хранению)»

ИНФОРМАЦИОННЫЕ ТЕХНОЛОГИИ

УДК 519.6:004

С. А. Веревкин, М.А. Волков, Д. Д.Шинкарева

ЗАМЕЧАТЕЛЬНЫЕ МАТЕМАТИЧЕСКИЕ КРИВЫЕ (УНИФИЦИРОВАННЫЙ ПОДХОД К ОТОБРАЖЕНИЮ И ХРАНЕНИЮ)

Мир замечательных математических кривых весьма многообразен. Сами их названия (конхоида Никомеда, спираль Архимеда, лемниската Бернулли, улитка Паскаля, кривые Хабенихта, декартов лист и декартов овал, овалы Кассини, спирали Галилея, Ферма и Корню и др.) свидетельствуют об интересе к ним математиков и механиков всех времен и народов. Имея различное происхождение (в основном, из задач физики), они всегда восхищали поклонников точных наук и возможностью построения на их основе всевозможных оригинальных конструкций. Достаточно попытаться строить “по точкам” простейшую окружность в параметрическом задании х=Яя1п((), у= Я-са'ф при достаточно большом шаге А! и получить выпуклый п-угольник (А( =2п/п), звезду или орнамент Ж =(2к-1)л/2п при к~п и при к<<п)

Следует заметить, что построение многих кривых представляет определенные трудности, связанные с выбором допустимых диапазонов

вариации параметров.

Неудивительно, что компьютерная реализация справочников с элементами графики, в частности, справочника по упомянутым кривым, всегда

связана с определенными трудностями, преодоление которых сводится к написанию отдельных процедур для рисования каждой отдельной кривой.

Авторами был использован унифицированный подход к представлению данных. При таком подходе любая кривая может быть отображена без написания дополнительного программного кода. Внешний вид приложения см. на рис.1.

Чтобы занести в программу математическую кривую, необходимо описать данные о ней, не заботясь о самой процедуре построения.

Данные о кривых хранятся в формате XML, позволяющем описывать данные произвольного типа. XML-документы выполняют роль универсального формата обмена информацией.

Не ограничивая автора каким-либо фиксиро-

I .Г Построение графиков замечательных кривых — і □ і xi

Файл Редактирование Элементы окна Помощь

Открыть : Закрыть | •=(> Набор кривых ▼ Изменение формул Изменение границ | ?{] Область переменных | *£/Содержание /} , Мат. выражения Дерево кривых

В- Замечательные кривые [±] Спираль Архимеда Ш Эвольвента спирали Архиме В Гиперболическая спираль ® Квадратичная спираль В Логарифмическая спираль Ё Логарифмическая спирг Х=АлГСоз(П У=АЛГ ЭИ I)

Ш Спираль Галилея В Спираль Ф ерма Ш- Жезл

В Спираль Корню(спираль Эйг Йг_Б_1 Си спиоаль

<1 I

dиг

Доп. переменные и Функции

Начальное значение t = [о Конечное значение t (до бесконечн marnot= | pj/32

Т раницы

Xmin= |-А rna:-:h

Ymin=

Хтаж* |;;maxt Ymax* |A"maxl

“У равнения кривой

X = |AAtxcos(t)

V = |A^txsin(t) “Описание

Шириналинии J7

Совместить

В новом окне|

Начальное и конечное значение I и шаг по I задаются в радианной мере (в долях величины "пи"). Логарифмическая спираль закручивается по часовой стрелке при А меньше 1 и против • при А больше 1 .

Рис. 1. Внешний вид приложения

ванным набором выражений, XML позволяет ему вводить любые имена, представляющиеся полезными. Эта возможность является ключевой для активного манипулирования данными различных прикладных областей.

Существуют различные спецификации для представления математических данных в формате XML - OpenMath [3], MathML [5]. Но они описывают только математические выражения, поэтому авторам пришлось создать свою спецификацию.

Правила данной спецификации описаны в соответствующем dtd-документе (Document Type Definition). Пример одной из кривых, описанной таким образом:

<CurveElement>

<equation>

^й^РозьК/й!^

<x max="R" min="-R">

<expr value="R*sin(k*t) * sin(t) ">

<param name="R" value="1">R</param> <param name="m" value="2">m</param> <param name="n" value="1">n</param> <param name="k" expr="m/n">k</param> <param name="t" value="0">

<param name="min" value="0">Начальное значение t</param> <param name="max" value="2*pi">

Конечное значение t</param> <param name="step" value="pi/32">шаг по t

</param>

</param>

</expr>

<repr>R*sin(k*t)*sin(t) </repr>

</x>

<y max="R" min="-R">

<expr value= "R*sin(k*t)*cos(t) ">

<param name="R" value="1">R</param>

<param name="m" value="2">m</param>

<param name="n" value="1">n</param>

<param name="k" expr="m/n">k</param> <param name="t" value="0">

<param name="min" value="0">Начальное

значение t</param> <param name="max" value="2*pi">Конечное

значение t</param> <param name="step" value="pi/32">шаг по

t</param>

</param>

</expr>

<repr>R*sin(k*t)*cos(t)</repr>

</y>

</equation>

^й^Розы и их производные</title>

<desc> Кривая размещена внутри окружности радиуса R, где k=m/n рациональное число. При нечетном целом k роза содержит k лепестков, при четном - 2k лепестков. При нецелом k, если m,n взаимно простые, - m лепестков; при нечетных m и n - 2m, если одно из них четное</desc> <desc>Шаг по t должен быть достаточно малым.

Предельное значение 1 равно п.<МеБС>

^е8С>Розы являются частным случаем циклоид (гипоциклоид при к > 1 и эпициклоид при к < 1

<Ме8С>

</СштеБ1ешет>

В текущей версии (СшгХМЫ.О) проекта вычисляемые математические выражения представлены в виде строки, которая вычисляется с помощью компонента CioinaБva1 [1]. В будущем они будут описаны соответственно спецификации ОрепМаШ [3] и перед вычислением интерпретироваться.

Компонент CioinaБva1 был выбран из нескольких подобных (интерпретирующих строку, как математическое выражение, и позволяющих определять пользовательские функции и переменные). Он обладает, на наш взгляд, наименьшим количеством ограничений и наибольшим количеством возможностей:

• позволяет обрабатывать не только выражения, но и целые пользовательские функции, написанные на квазиязыке;

• количество параметров и длина выражения не ограничены;

Рис. 2.

Рис. 3. Совмещение кривых

• контроль ошибок синтаксиса;

• возможность интеграции с пакетом МаШешайса.

Процесс отображения кривой приведен на рис.

2.

Особенности подхода, используемого в этом процессе:

• если кривая представлена прерывающейся линией (конхоида Никомеда, декартов овал, лемниската Бернулли, трактриса, овалы Кассини и др.), предлагается строить каждую непрерывную часть отдельно;

• дополнительной возможностью програм-

мы является «совмещение» кривых: при рисовании очередной кривой можно воспользоваться рисунком с ранее начерченной, при этом масштаб не пересчитывается.

Стоит отметить, что проект распространяется бесплатно с открытым исходным кодом, как и часть компонент. Такой подход к разработке программного обеспечения позволяет:

• сократить время на разработку и дальнейшую поддержку;

• пустить проект в “свободное плавание” и в будущем передать проект в другие руки.

Разработка платных проектов, использующих

Таблица

Состав текущей версии (СшгуХМЬ 1.0) проекта

1 Окружность и ее производные 15 Трохоиды Эпитрохоиды

2 Эллипс и его производные 16 Эпициклоиды

3 Астроида и ее производные 17 Гипотрохоиды

4 Розы и их производные 18 Гипоциклоиды

5 Кривые Хабенихта 19 Спирали и псевдоспирали Спираль Архимеда

6 Улитка Паскаля 20 Эвольвента спирали Архимеда

7 Конхоида Никомеда 21 Гиперболическая спираль

8 Декартов лист 22 Квадратичная спираль

9 Декартов овал 23 Логарифмическая спираль

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

10 Лемниската Бернулли 24 Спираль Галилея

11 Лемниската Бута 25 Спираль Ферма

12 Трактриса 26 Ж е з л

13 Овалы Кассини 27 Клотоида (спираль Корню)

14 Циклоида 28 бісі - спираль

компонент CioinaБva1, ограничивает сферу использования и препятствует их развитию.

В заключении хотелось бы сказать следующее. В реализации данного продукта был найден унифицированный подход к представлению и изменению данных математических кривых. Такой подход обеспечивает возможности:

• изменения значений параметров (напри-

мер, присвоение им значений функции) и уравнений, определяющих кривую,

• изменения границ построения,

• использования пользовательских переменных и функций в процессе работы программы.

СПИСОК ЛИТЕРАТУРЫ

1. Веб-сервер проекта CioinaEval, http://www.delphipages.com/result.cfm?ID=3482.

2. Веб-сервер проекта NewLife Document Components Package, http://www.philo.de/xml.

3. Веб-сервер проекта OpenMath, http://www.openmath.org.

4. Веб-сервер математического портала ЭКСПОНЕНТАМИ, http ://www.exponenta.ru.

5. Веб-сервер проекта MathML, http://www.w3c.com/Math.

□ Авторы статьи:

Веревкин Волков Шинкарева

Сергей Анатольевич Михаил Анатольевич Дарья Демьяновна

- студент гр.ПИ-001 - студент гр. ПИ-001 - студентка гр.ПИ-001

i Надоели баннеры? Вы всегда можете отключить рекламу.