banner banner banner
Цифровое моделирование на C#
Цифровое моделирование на C#
Оценить:
 Рейтинг: 0

Цифровое моделирование на C#


Декартова система координат

В декартовой системе координат, как правило, пары обозначаются (x, y), хотя это и не принципиально. Смысл значения x – это проекция точки на ось OX, y – это проекция на ось OY.

рис. 1.2

Полярная система координат

В полярной системе координат точки будем обозначать парой (r, t). Где r – это расстояние от точки О, называемой полюсом, а t – угол между горизонтальным лучом, исходящим из полюса, направленным вправо, и радиусом-вектором, указывающим на точку (рис. 1.3).

рис. 1.3

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

– в астрономических наблюдениях;

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

– в биржевых графиках – необычный формат на основе полярных координат предложил в 1990-е годы российский математик Владимир Иванович Елисеев;

– во взаимосвязи градусов и времени (в году 365 дней, в окружности – 360 градусов);

– в медицине – компьютерная томография сердца изображается в полярной системе координат;

– в системах безопасности при идентификации по радужной оболочке глаза.

Способы задания функций

Функции, заданные следующим образом y = f (x), называются заданными явно. Здесь y явно зависит от переменной x, а f определяет некоторое правило, по которому, взяв переменную x, можно получить y. При этом переменная x называется независимой переменной, а y зависимой. Или говорят, что y является функцией x.

Например: y = 2x + sin2x.

Функция может быть задана следующим образом:

x = X (t)

y = Y (t)

Здесь x и y являются функциями независимой переменной t. Такой способ задания функций называется параметрическим. Например, следующая пара функций определяет окружность радиусом 1:

x=cos (t)

y=sin (t)

Построение графика в декартовой системе координат

Для определенности мы начнем с построения графика функции, заданной явно в декартовой системе. Сформулируем шаги, необходимые для построения:

– Получить список точек в обычной системе координат.

– Получить список точек в компьютерной системе координат, преобразовав точки из обычной системы.

– Соединить получившиеся точки линией.

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

Код достаточно простой, но поскольку мы с вами находимся в начале пути, немного комментариев к нему не будут лишними. Во-первых, в коде присутствуют границы отрезка, на котором мы собираемся строим наш график – это A и B. Во-вторых, сама функция f (x) задана локально и в нашем случае это y=x

. От исходной функции требуется, чтобы она была определена при всех значениях внутри заданного отрезка. Очевидно, что наша функция этому условию удовлетворяет. Далее, N – это число точек для построения. На самом деле выбор этого значения – сама по себе весьма интересная задача. От выбора числа N зависит, как будет выглядеть наш график. Понятно, что нет смысла брать слишком много точек, поскольку разрешение экрана конечно. С другой стороны, точек не может быть мало, иначе график будет угловатым и не будет отображать истинное поведение функции. Обратите внимание на формулу для вычисления X [i]. При i=0, X [i] =A, а при i=N-1 (максимальной значение i в цикле), мы получаем X [i] =B. Поскольку формула для X [i] линейна относительно i, значит в массиве X будут лежать значения от A до B с равномерным шагом.

Согласно шагу 2, необходимо преобразовать данные из обычной системы координат в компьютерную. Экран монитора тоже представляет из себя декартову систему координат, с той лишь разницей, что ось Y здесь направлена вниз. Определим несколько величин:

[A, B] – отрезок, на котором задана исходная функция.

Ymax – максимальное значение функции на отрезке.

Ymin – минимальное значение функции на отрезке.

(X_win_min, Y_win_min) – левый верхний угол на экране монитора.

(X_win_max, Y_win_min) – правый верхний угол на экране монитора.

(X_win_min, Y_win_max) – левый нижний угол на экране монитора.

(X_win_max, Y_win_max) – правый нижний угол на экране монитора.

рис. 1.4

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

В данных формулах (X, Y) – это координаты точки в обычной системе координат, а (Xwin, Ywin) – координаты на экране монитора. Обратите внимание, что формулы не симметричны относительно осей X и Y. Как уже было упомянуто, это связано с тем, что компьютерная система координат устроена так, что ось Y направлена вниз, в то время, как в обычной системе эта ось направлена вверх. Данные формулы универсальны – используя их, можно вписать график любой функции в любой прямоугольник на экране. Тем не менее, все-таки есть очевидные ограничения на их использование. Во-первых, Ymax и Ymin должны достигаться на отрезке [A, B]. Существуют функции, которые не имеют максимума или минимума на заданном отрезке. Например, гипербола y=1/x не имеет ни того, ни другого на отрезке [-1, 1]. Ниже мы разберем как строить графики таких функций. Во-вторых, Ymax и Ymin должны быть различны, иначе в знаменателе мы получим ноль. Этот случай, впрочем, разрешается элементарно. Если у нас Ymax равен Ymin, то мы имеем дело с функцией y=const и в этом случае ее графиком будет просто горизонтальная линия.

Определим две функции, с помощью которых мы будем производить конвертацию.

Сама конвертация выглядит так, как показано на листинге ниже. В данном коде мы воспользовались функционалом, который предоставляет нам System.Linq для поиска минимального и максимального значений в массиве Y, а также для самой конвертации.

В переменных Xwin и Ywin теперь у нас лежит коллекция координат точек, которые мы соединим линией.

Построение графика в полярной системе координат

Для построения графика функции, заданной в полярной системе координат, мы сначала научимся конвертировать значения функции в декартову систему. Итак, пусть есть пара значений в полярной системе координат (r, t), давайте получим для нее соответствие в декартовой системе. Как видно из иллюстрации ниже, координата по оси OX равна произведению длины радиуса вектора r на косинус угла t, а по оси Y, соответственно, это произведение r на синус t.

рис. 1.6

Таким образом получаем: x=r?cos (t), y=r?sin (t);

Сами формулы перехода достаточно просты. А поскольку мы теперь умеем переводить полярные координаты в декартовы, то можем считать, что мы успешно свели задачу к предыдущей.

Построение графика функции, заданной параметрически