Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

книги / Mathematica 5. ╨б╨░╨╝╨╛╤Г╤З╨╕╤В╨╡╨╗╤М

.pdf
Скачиваний:
1
Добавлен:
19.11.2023
Размер:
33.75 Mб
Скачать

Построение параметрически заданных кривых и поверхностей — функция ParametricPlot3D

Далеко не все поверхности можно задать уравнением z = A У)) или таблично. Часто гораздо удобнее задавать их параметрически. Параметрически можно задать также кривые в пространстве. Параметрически заданные в трехмерном пространстве двухмерные поверхности или одномерные кривые можно рисовать с помощью функции ParametricPlot3D. Проекцией нарисованной ниже кривой является фигура Лиссажу.

ParametricPlot3D[{Cos[71],Sin[51],Sin[t]},

{t,0,2Pi},PlotPoints->2000];

| Мультимедиа: геометрия, графика, кино, звук

321

Вызов ParametricPlot3D[ {xt, yt, zt), {t, tmin, tmax}] возвращает простран­ ственную кривую, параметризованную переменной /, изменяющейся от (min до tmax.

Вызов же ParametricPlot3D [{xt, yt, zt), {t, tmin, tmax), {и, umin, Umax)]

возвращает поверхность в пространстве, параметризованную переменными / и и, из­ меняющимися от tmin до tmax и от umin до итах соответственно. Можно указать от­ тенок рисуемого образа, для этого вызов нужно записать так: ParametricPlot3D

[{xt, yt,

zt, оттенок), ...]. Ну и, конечно, можно нарисовать несколько образов.

Для этого вызов записывается так: ParametricPlot3D[ {{xlt,

у It, z lt) ,

{x2t, y2t,

z2t),

...]. На рисунке ниже

хорошо видно, что кривые

x = / c o s ( ,

y=/sin/,

Z = 2 t и x = 2 / cos /, у = 2 t sin t, z

= 2 / лежат на конусах.

 

 

ParametricPlot3D[{{2t*Cos[t],2t*Sin[t],2t,G r a y L e v e l[( l + 2 S i n [ t ] A2 ) / 5 ] },

{t * C o s [ t ] , t * S i n [ t ] , 2 t ,G r a y L e v e l[ ( C o s [ t ] A2) / 5 ] }},

{t,-100,0},PlotPoints->l000];

Для оттенения этих конических винтовых линий (создания эффекта их освещения) j применялась функция GrayLevel. Это “освещение” несколько необычно: там, где! одна коническая винтовая линия темнеет, вторая светлеет. j

На следующем рисунке показаны конусы с общей вершиной.

ParametricPlot3D[{{t*Cos[v],t*Sin[v],3t}, {t*Cos[v],t*Sin[v].t}},

{t,- 1 , 1 },{v ,-2Pif0},PlotPoints->50] ;

322

Гпава 9

Поверхности вращения — пакет Graphics'SurfaceOfRevolution'

Для рисования поверхностей вращения удобнее применять пакет Graphics' SurfaceOfRevolution', который загружается как обычно: «Graphics4Surface OfRevolution4 Вызов SurfaceOfRevolution [/, {х, xmin, xmax) ] строит по­ верхность, которая получается в результате вращения кривой z = Лх) вокруг оси ап­ пликат. Вот пример.

SurfaceOfRevolution[ E xp [ - х А2 ] * S i n [ 6 P i * x ] , { х , 0 ,1 } ];

Мультимедиа: геометрия, графика, кино, звук

323

1

Вращать можно и плоскую параметрически заданную кривую х = fx (t),у =Jy(t), но

тогда вызов нужно записать вот так: SurfaceOfRevolution [ {fx, f y ) ,

{/,

a, b)).

SurfaceOfRevolution[{1 + S i n [ 5 t ] Cos[ 2 t ] , S i n [ 5 t ] S i n [ 3 t ] }, {t,

0,

2Pi}];

Более того, вращать можно и пространственную параметрически заданную кри­

вую дг=/х(/), У = М 0 .

но

тогда вызов нужно записать вот так:

SurfaceOfRevolution [{fx, fy , f z ) ,

{t,

a, 6}].

324

Гпава 9

S i n [ 5 t ] S i n [ 3 t ] , z = E x p [ t / 2 . 5 ] },

f a c e O f R e v o l u t i o n [ { 1 + S i n [ 5 t ] C o s [ 2 t ]

Sur

(t, 0, 2Pi)];

\

325

Мультимедиа: геометрия, графика, кинЬ, звук

Иногда нужно нарисовать не всю поверхность вращения, а только ее часть, соответ­ ствующую углам вращения 0, таким, что 0 ^ < 0 < 0П1ах Тогда в вызов нужно добавить

диапазон углов {theta, thetamin, thetamax). Например, в случае поверхности, образо­ ванной вращением кривой, заданной уравнением у =ЛХ)> вызов нужно записать так:

SurfaceOfRevolution [f, {х , xmin, xmax}, [theta, thetamin, thetamax}}. Конечно, аналогичное добавление нужно сделать и для случаев параметрического задания вра­ щаемой кривой. Ниже представлено изображение абстрактной скульптуры, получен­ ное таким способом из параметрически заданной пространственной кривой.

S u rfaceO fR evolution[ { 1 + S in [5 t]C o s [21 ] ,

E x p [ - t / 5 ] S i n [ 5 t ] S i n [ 3 t ] ,

t / 2 }, {t, 0, 2 P i } , { t h e t a , 0 , P i / 4 }];

Наконец, иногда нужно указать ось вращения, проходящую через начало коорди­ нат. Для этого можно воспользоваться опцией RevolutionAxis. Если ось вращения лежит в плоскости xOz, то в опции RevolutionAxis достаточно указать координаты х и г точки, отличной от начала координат: RevolutionAxis->{x, г}. В иных случаях придется указать все три координаты любой, отличной от начала координат точки, инцидентной оси вращения: RevolutionAxis->{x, у, z}.

326

Гпава 9

SurfaceOfRevolution [{0.7+1/ (l+tA2+tA4) , 4tA2/ (l+tA2+tA4) , 2tA3/ (l+tA2+tA4) },

{t, 0, 2Pi},{theta,0,Pi}, RevolutionAxis->{1,1,1},PlotPoints->25];

Вращать, конечно, можно и таблично заданные кривые. Для этого предназначена

функция

ListSurfaceOfRevolution. Вот

возможные обращения к ней:

: ListSurfaceOfRevolution [ {точка!, точка2, ...}},

ListSurfaceOfRevolution [ {точка!,

точка2,

...}, {theta, thetamin, thetamax}}.

 

dat=Table [{n,n*3 }, {n, 0,1, .1}] ; ListSurfaceOfRevolution [dat, {t,0,Pi/2},

RevolutionAxis-> {1, -1,1}, PlotRange->All]

Мультимедиа: геометрия, графика, кино, звук

327

Другие миры — другие измерения

Высь, ширь, глубь. Лишь три координаты. Мимо них где путь? Засов закрыт.

Но живут, живут в N измерениях Вихри волн, циклоны мыслей,

Те, кем смешны Мы с нашим детским зреньем, С нашим шагом по одной черте.

Валерий Брюсов. Мир N измерений.

Жаль, конечно, расставаться с геометрией двухмерного и трехмерного миров, ведь мы еще только начали знакомиться с возможностями системы Mathematica в этой об­ ласти. Но все же прежде чем перейти к другим разделам математики, поговорим не­ много о других измерениях. Прежде всего это время. И потому мы собираемся пого­ ворить немного об изменяющихся во времени геометрических образах.

Четвертое измерение — время. Движущиеся картинки — кино

...задача. Дано:

Мотор! Хлопушка! Выстрел! Кровавая луна! И тут я в титрах выпадаю из окна.

Высота окна над уровнем земли —Я

Требуется определить необходимое число кадров п.

Задача из книги В. В. Александрова и В. С. Шнейдерова

Рисунок, чертеж, картина на ЭВМ

328

Глава 9

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

Мультипликация. Немой мультфильм “Бегущая волна”

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

Чарли Чаплин

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

Раскадровка

Сначала сделаем серию из 11 рисунков, каждый из которых представляет собой график функции s i n [ x - t ] на отрезке оси х от 0 до 4тг для t - 0,2я/10, 4л:/10, ..., 2л. Вы и оком моргнуть не успеете, как эти рисунки будут помещены в последовательные ячейки блокнота.

T a b l e [ P l o t [ S i n [ x - t ] , { x , 0 , 2 P i } ] , { t , 0 , 2 P i , 2 P i / 1 0 } ] ;

Раскадровка выполнена!

Секреты р а с к а д р о в к и

При подготовке рисунков к анимации следует проявить известную предусмотри­ тельность.

Секреты раскадровки двухмерных образов

Совсем не обязательно, чтобы области значений функций для всех графиков сов­ падали. Однако если они совпадать не будут, то при автоматическом выборе ее эф­ фекты увеличения или уменьшения объекта могут не воспроизводиться. Вместо этого выувидите растяжение (или сжатие) масштаба на осях. Если это не желательно, нуж­ но установить подходящее значение опции P lo tR a n g e . Очень часто в качестве ее зна­ чений устанавливаются константы, обеспечивающие обзор всей сцены.

Секреты раскадровки трехмерных образов

Для трехмерных образов есть еще один источник нежелательных эффектов: переме­ щение коробочки с графическим объектом. Это может создать впечатление, что сцена прыгает! Чтобы устранить этот эффект, нужно установить опцию S p h e r i c a l R e g i o n -> True, обеспечивающую неподвижное положение коробочки (сцены) с графическим объектом во всех рисунках.

Монтаж Монтаж выполняется очень просто: нужно выделить все 11 ячеек блокнота с кадрами.

Просмотр

Чтобы просмотреть смонтированный таким образом мультфильм, достаточно на­ жать <Ctrl+Y> или выбрать команду Ячейка^Анимация Видео. В той ячейке, которая полностью видна на экране дисплея, будет начата демонстрация фильма. Внизу экра­ на при этом появятся шесть кнопок, которые позволяют изменить направление вре­ мени (прокрутить фильм в обратном направлении), ускорить, замедлить показ или приостановить его.

Мультимедиа: геометрия, графика, кино, звук

329

Е щ е о д н о и з м е р е н и е — зв у к

В системе Mathematica предусмотрены различные способы задания и воспроизведения звука.

Воспроизведение звука с аналитически заданной амплитудой — функция Play

Вызов функции Р1 ау[/, {/,

tmin, tmax}] запускает проигрывание звука. Ампли­

туда звука определяется функцией времени /(/), причем t

изменяется между tmin и

tmax.

(Единица

измерения —

секунда.) Например,

вызов

Play [Sin [220*2*Pit],

{ t ,0 ,l} ] ; проигрывает чистый тон (частоты 220 Гц)

в течение 1 с. Вызов Play [{//,

f2 ) ,

{t, tmin,

tmax} ] проигрывает стереозвук, причем /7 задает левый канал, аУ2-

правый. Для проигрывания многоканального звука используется вызов вида Р1ау[{//, / 2 , ...]. Частота оцифровки задается в опции SampleRate. По умол­ чанию она равна 8192. Количество бит, используемых для запоминания амплитуды, можно указать в опции SampleDepth. По умолчанию оно равно 8. Диапазон проиг­ рываемых амплитуд можно указать в опции PlayRange. Есть также опции Prolog и Epilog. По умолчанию они равны {}.

Воспроизведение звука с таблично заданной амплитудой — функция ListPlay

Вызов функции ListPlay [список] запускает воспроизведение звука. Значения ам­ плитуды звука задаются списком. Вызов ListPlay [{список!, список2}] воспроизводит стереозвук, причем список1 задает левый канал, а список2— правый. Для проигрыва­ ния многоканального звука используется вызов вида ListPlay [ {список1, список2,

...}]. Частота оцифровки задается в опции SampleRate. По умолчанию она равна 8192. Количество бит, используемых для запоминания амплитуды, можно указать в опции SampleDepth. По умолчанию оно равно 8. Диапазон проигрываемых амплитуд можно указать в опции PlayRange. Есть также опции Prolog и Epilog. По умолча­ нию они равны {}. Вот как можно прослушать число п.

d i g i t s = F i r s t [RealDigits[N[Pi, 10000]]] ;

L i s t P l a y [ d i g i t s ] ;

Честно говоря, каких-либо существенных отличий от белого шума я найти не смог.

330

Глава 9