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

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

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

Глава 9

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

Вэтой главе...

Введение, или основные графические примитивы

Аналитическая геометрия на плоскости, или 20-графика

Аналитическая геометрия в пространстве, или ЗЭ-графика

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

Резюме

Задачи

Лучше один раз увидеть, чем сто раз услышать.

Народная поговорка

Графический способ представления функции — самый наглядный.

Энциклопедический словарь юного математика

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

Энциклопедический словарь юного математика

Компьютерная графика в своем историческом развитии повторяет путь аналитиче­ ской геометрии. Когда-то давно7, когда возникла аналитическая геометрия, т.е. во времена Пьера Ферма и Ренэ Декарта, она мыслилась в основном как аналитическая геометрия на плоскости (а зачастую даже как аналитическая геометрия в первом квад­ ранте). Это был способ изучения плоских образов (кривых) с помощью метода коор­ динат на плоскости. Распространение методов аналитической геометрии на простран­ ственные образы (линии и поверхности) было сделано столетием позже французским математиком Клеро (1713—1765). Облик, близкий традиционному, придал аналитиче­ ской геометрии Леонард Эйлер в 1748 году, посвятив ей второй том “Введения в ана­ лиз” Однако еще более столетия курс аналитической геометрии делился на два раздела:

1 Пьер Ферма написал свою статью “Введение в изучение плоских и телесных мест” в 1636 году, а книга “Геометрия” Декарта была издана в 1637 году.

аналитическая геометрия на плоскости и аналитическая геометрия в пространстве. Лишь в 60-е годы XX века в мехматовских учебниках мало-помалу исчезло это де­ ление, сохранившееся в учебных планах педагогических институтов кое-где и по сей день. Впрочем, более чем за три десятилетия до конца XX века были сделаны (в основном, Анатолием Ивановичем Мальцевым и Алексеем Васильевичем Погореловым) первые попытки преподавания многомерной аналитической геометрии, логи­ ческим завершением которых стали многочисленные (в 80-х годах XX века) объеди­ ненные курсы аналитической геометрии и линейной алгебры.

Нечто подобное наблюдается и в компьютерной графике. Поначалу графические редакторы (притом с весьма ограниченными возможностями) были предназначены для вычерчивания весьма ограниченного набора графических примитивов (в основ­ ном, точек и отрезков) на плоскости. Несколько позже набор графических примити­ вов был значительно расширен. Затем появились графические операции для изобра­ жения трехмерных образов, потом было добавлено еще одно измерение — время. Так в графические редакторы вошло движение и появилось компьютерное немое кино, которое почти сразу же обрело звук и тем самым превратилось в полноценное муль­ тимедиа. Говорят, что пространство запахов оказалось 33-мерным, и вскоре в киноте­ атрах и в компьютерах появятся устройства для воспроизведения запахов. С другой стороны, многие средства, впервые появившиеся в графических редакторах, впослед­ ствии были встроены и в программы, первоначально вовсе не предназначавшиеся для художников. В систему Mathematica, например, встроенывсе средства мультимедиа, кроме отображения 33-мерного пространства запахов. Вы можете, например, увидеть и послушать синус, тангенс, ^-функцию Римана... (Трудно передать словами чувства, возникающие при прослушивании некоторых функций. Скажу лишь, что сбегались все домашние, чтобы посмотреть, что за зверь в компьютере издает такие звуки...) Но пока что средства воссоздания пространственных трехмерных образов лишь проек­ тируются, и потому экраны всех компьютерных мониторов двухмерные (обычно пло­ ские). И по этой причине наиболее простыми графическими примитивами являются те, которые предназначены для отображения плоских образов. Потому знакомство с графическими возможностями современных программ следует давней традиции, воз­ никшей в курсах аналитической геометрии: сначала изучается аналитическая геомет­ рия на плоскости... Ох, простите, я хотел сказать средства 20-графики, т.е. средства изображения плоских образов (точек, кривых и других плоских фигур) с помощью ме­ тода координат на плоскости. И опять, по той же традиции основательному курсу аналитической геометрии на плоскости предшествует небольшое введение в основы метода.

Введение, или основные графические примитивы

График — это некоторый объект, с которым можно выполнять определенные опе­ рации, главнейшей из которых является отображение. Фактически двух- и трехмерные ■ рисунки состоят из графических, примитивов, таких как точки, линии, многоугольни- | ки, круги, диски, параллелепипеды и даже текст. Некоторые из этих примитивов яв­ ляются составными, они сами состоят из других объектов. Например, линия есть на самом деле ломаная линия, состоящая из отрезков прямых, соединяющих последова­ тельные угловые точки этой линии. Точка двухмерного рисунка как графический примитив есть выражение вида Point [ {х, у) ], где х и у суть декартовы координаты точки на плоскости.

242

Глава 9

Графические примитивы и их отображение на экране

Графический примитив и его изображение — разные вещи. Как же отобразить графический примитив на экране? Разберемся в этом на примере следующих двух графических примитивов: точки р = Point[{1,1}] и линии 1 = Line[{{0,0},

Ц/2,2}, {3/2,2}, {2,0}}].

Превратить их в рисунок на экране дисплея можно следующим способом. Сначала к ним нужно применить функцию Graphics, которая превратит их в один из шести гра­ фических объектов (Graphics, DensityGraphics, ContourGraphics, Graphics3D, SurfaceGraphics или GraphicsArray). Полученный результат уже можно отобра­ зить на экране с помощью функции show.

р = Point[{1,1}]

{1/2,2}, {3/2,2}, {2,0}}];

1 = Line[{{0,0},

gr=Graphics[ {р,

1}];

Show [gr] ;

 

Конечно, я показал все промежуточные шаги. На самом деле все можно было еде лать за один шаг.

Show[gr=Graphics [ {р =

P o in t [ { 1 , 1 } ]

,

1 =

L i n e [ { { 0 , 0 } ,

{ 1 / 2 , 2 } , { 3 / 2 , 2 } , { 2 , 0 } } ] } ] ] ;

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

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

243

Точка — графический примитив Point

Поворотным пунктом в изобразительном искусстве была Декартова переменная величина. Благодаря ей в изобрази­ тельное искусство вошли движение и тем самым эклектика,

иблагодаря этому в изобразительном искусстве революция,

онеобходимости которой так долго не говорили только те, кто ее не хотел, свершилась. Теперь рисовать может каждая кухарка.

Основополож ник искусства

ра с ст а н о вк и т оч ек на экране

Для представления точки служит графический

примитив Point [coords] ,

где

coords — координаты точки. Они могут быть представлены либо в виде {х,

у)

или]

Scaled[ {х, у}] в случае плоскости, либо в виде {х,

y r z } или Scaled[ {х,

у,

*)]'

в случае пространства. На экране точки, конечно, изображаются в виде кружков, ра­ диус которых задается графическим примитивом PointSize. Для раскраски точек ис­ пользуются параметры CMYKColor, GrayLevel, Hue И RGBColor.

Ломаная линия — графический примитив Line

Ломаная линия, соединяющая точки ptx, pt2, /?г3, ..., представляется графическим примитивом Line[{ ptx, pt2 , pty, ...}]. Здесь ptt координаты точки. Представ­

ленные ниже два выдающихся произведения изобразительного искусства созданы ис­ ключительно из двух серий однозвенных ломаных (отрезков прямых). Они оба назы­ вается скромно — муар.

Show [

Graphics[Table[Line[{{0,0},{i,l}}],{i,-25,25}]],

Graphics[Table[Line[{{0,1},{i,0}}],{i,-25,25}]],

AspectRatio->l];

244

Глава 9

Block[{k=130/7 6,kl=3/2,n=23, a=n,b=a*(k+kl)},Show[

Graphics[Table[Line[{{0,-b},{i,b}}],{i,-n,n}]],

Graphics[Table[Line[{{.0,b},{i,-b}}],{i,-n,n}]],

PlotRange->{{-a,a},{-k*a,k*a}}, AspectRatio->l]];

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

Module [{г1=20, г2=30,п=600 },

Show [ Graphics[Table[Line[{{rl*Cos[7Pi*i/n],rl*Sin[9Pi*i/n]},

{r2*Cos[llPi*i/n],r2*Sin[5Pi*i/n]}}], {i,0,n}]]fAspectRatio->l/PlotRange->All]];

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

245

Графические директивы

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

Относительная и абсолютная величина диаметра круга, изображающего точку, — директивы PointSize[d] и AbsolutePointSize[d]

Директивы PointSize [d] и AbsolutePointSize [d] определяют относительную и абсолютную величину диаметра круга, изображающего точку. В директиве PointSize [d] аргумент d есть отношение диаметра к ширине графика, и потому он обычно задается как дробь. По умолчанию d = 0.008 для двухмерных графиков и </ = 0.001 для изображений трехмерных объектов. Вот график, в котором этот пара­ метр задан по умолчанию.

ListPlot [Table [{x,DivisorSigma [0,x] }, {x, 15 }]];

6 ;

5 ;

4 ■

3 ;

2 ;

1 -

2

4

6

8

10

12

14

А вот тот же график с иным значением этого параметра.

ListPlot[Table[{х,DivisorSigma[0,х]},{х,15}1,

P l o t s t y l e - > P o i n t S i z e [ 0 . 0 4 ] ] ;

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

246

Глава 9

В директиве AbsolutePointSize [d] значение параметра d определяет диаметр круга в единицах длины, приблизительно равных одной семьдесят второй дюйма. Вот как может выглядеть парабола.

Show[

Graphics[

{Table[{AbsolutePointSize[d] ,

* » * » * [ { £ . т г } ] } . M . 2 0 ) ] ) ] ] ;

Как видите, директива ставится перед примитивом, и оба эти объекта заключаются в фигурные скобки. Кроме того, директива' может действовать на несколько однород­ ных примитивов, стоящих за ней. Вся группа также заключается в фигурные скобки. Графических директив может быть несколько, и они должны предшествовать тем примитивам, на отображение которых они должны влиять. Вычисление выражения

Show [Graphics [{PointSize [0.03] ,Hue [0],Table [Point [{0.1j,0.05j}],

I j i l O } ] > ] ] ;

приводит к появлению на экране десяти точек красного цвета относительного диа­ метра 0.03.

Относительная и абсолютная толщина линии — директивы Thickness и AbsoluteThickness

Как и в случае точек, управлять можно не только цветом, но и толщиной линии. Директива Thickness [г] определяет относительную ширину линии, а директива AbsoluteThickness [г] — абсолютную ширину. Вот пример указания относительной ширины линии.

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

247

Show [Graphics [ (Table [ (Thickness [. 01. D ivisorS igm a[0, j] ], C ir c le [ { 0, 0} , 2j ] }, {j , 10} ] }, AspectRatio->Automatic] ]

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

Show[Graphics[(Table[( A b s o lu t e T h ic k n e s s [ d A3 / 2 5 ] ,

Line[{{0,0}, {1,d^3}}] }, (d, 5}],Line [{{0,25}, {1,0} }]}]];

Пунктиры, штрихпунктиры и другие стили линии — директива Dashing

Директива Dashing [(г/, г2, ...} ] позволяет указать, что линия рисуется в виде последовательности отрезков длиной г/, г2 и т.д., которые повторяются циклически. Вот как можно нарисовать окружность.

248

Гпава 9

Show[ G ra p h ic s[ { D a s h in g [ T a b le [ 0 . 0 0 0 4 i A2 , { 1 , 1 0 } ] ] ,

C i r c l e [ { 0 , 0 } , 1 ] } , A s p e c t R a t io - > A u t o m a t ic ] ];

 

 

 

N

/

 

 

\

/

 

 

/

 

 

\

 

 

 

I

 

 

\

 

 

»

 

 

 

I

\

 

 

I

 

 

 

\

 

 

/

\

 

 

/

 

 

 

\

 

 

/

 

\

 

/

 

 

f

 

 

\

 

 

 

А вот параллельные прямые, нарисованные черточками разной длины.

Show[Graphics [Table [{Dashing [Table [0.004iA ( j / 5 ) , {i Д0}] ] , Line[{{0/j/10},{1,j/10}}]},{j/10}],AspectRatio->Automatic]];

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

249

Аналитическая геометрия на плоскости, или 20-графика

Более чем за 100 лет до н.э. греческий ученый Гиппарх предложил опоясать на карте земной шар параллелями и меридианами и вве­ сти хорошо теперь известные географические координаты: широту

идолготу — и обозначить их числами.

ВXIV в. французский математик Н. Оресм ввел, по аналогии с географическими, координаты на плоскости. Он предложил пок­ рыть плоскость прямоугольной сеткой и называть широтой и дол­ готой то, что мы теперь называем абсциссой и ординатой.

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

Э н циклопеди чески й словарь ю н ого м ат ем ат ика

Графические примитивы

Графические примитивы в графике играют ту же роль, что и основные фигуры в геометрии. Именно из них составляются все остальные фигуры.

Многоугольник — примитив Polygon

Графический примитив Polygon [{ {xl, yl), {х2, у2), ...}] представляет собой закрашенный многоугольник, ограниченный замкнутой ломаной линий, проходящей

через точки {xl, у]}, {х2, у2),

Вот как рисуется равносторонний треугольник

салатного цвета.

 

Show[Graphics[{Hue[0.25],Polygon[{{0,0},{1,1},{2,0}}]}]];

Прямоугольник — примитив Rectangle

Частный случай многоугольника — прямоугольник — можно получить с помощью примитива Rectangle [ {xmin, ymin), {xmaxr утах) ], в котором {xmin, y m in ) - координаты левого нижнего угла прямоугольника, а {хтах, утах} - координаты правого верхнего угла прямоугольника. Показанная ниже фигура состоит из пяти прямоугольников. Все они имеют разный цвет.

Show [G raphics[Table[ {Hue[ . 2 i ] ,

Rectangle[{-EA (-i),EA (iA2/10)},{EA (-i),EA (-i)/5}]},{i,5}] ]];

250

Гпава 9