Запорожец  Издания 

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 [ 160 ] 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199

7 3.2. Графики и кинофиль.чы картин течений 493

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

7.3.2. Графики и кинофильмы картин течений

29. Широко используйте машинную графику при выводе информации.

Построение графиков на ЭВМ является широко распространенным способом вывода информации. Графики могут быть двумерными, трехмерными и контурными (изолиниями). Их построение может осуществляться печатающими устройствами или линейными графопостроителями (чернильные самописцы или электронно-лучевые трубки). Для отладки программы и для представления результатов более удобны графики, построенные при помощи печатающего устройства. Правда, их разрешающая способность ограничена размером шагов печатающего устройства по горизонтали и по вертикали, зато они обычно строятся гораздо быстрее, поскольку это происходит одновременно с получением численных результатов и ие требует дополнительных обращений к лентам. Линейные графопостроители дают большую разрешающую способность и представляют большие возможности для нанесения иа графики символов и заголовков.

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

зависимость некоторого функционала типа 2] от п. По-

добные примеры были приведены на рис. 3.32. В настоящее время в большинстве вычислительных центров имеются сервисные пакеты для построения двумерных графиков как на печатающих устройствах, так и на линейных графопостроителях. Подобную программу для печатающего устройства составить нетрудно. Пусть нужно построить зависимость плотности R от координаты X = I*DX в задаче об одномерном распространении ударной волны. Положим, что на бумажной ленте печатаю-нгего устройства X растет сверху вниз, а плотность R возрастает слева направо. Тогда целое число позиций N, определяющее высоту графика, может быть найдено следующим образом:

N = SC*R (I)



где SC - масштабный коэффициент, ставящий в соответствие интервал изменения R по числу горизонтальных позиций печатающего устройства. Если плотность приведена к безразмерному Виду таким образом, что ее максимальное значение равно единице, то можно положить SC = 100. (Большинство печатающих устройств имеет более ста позиций, однако удобно выбрать сто. Кроме того, всплеск за скачком может привести к тому, что будет R > 1, и потребуется более ста позиций.) Для печати на строке vV ~ 1 пробелов и символов X. О, + или какого-либо другого символа, отмечающего значение функции, может быть сформирована холлеритовская буквенно-цифровая константа. Затем увеличивается индекс I, вычисляется новое значение и печатается следующая строка.

Трехмерные графики и картины изолиний по существу носят более качественный характер, чем двумерные графики. Примеры действия таких слул<ебных программ, дающих возможность графически изобразить информацию в трех измерениях, приведены на рис. 7.3. Много превосходных примеров можно найти у Харлоу и Амсдена [1971], а также у Томана и Шевчика [1966].

Нетрудно составить программу построения изолиний на печатающем устройстве. Массив V(J) холлеритовского типа заполняется пробелами. Для некоторого значения / (возрастающего вдоль бумажного листа сверху вниз) безразмерная функция, график которой необходимо построить, скажем R{I,J), просматривается по / и в массив V(J) заносятся различные буквенно-цифровые символы в зависимости от величины R{I,J). Можно, например, заносить последовательность символов (А, В, С, D, Е), а можно просто заносить звездочки в те места массива V(J), которые соответствуют значениям R, лежащим в интервалах (0., 0.1), (0.2, 0.3), (0.4, 0.5), (0.6, 0.7), (0.8, 0.9), и оставлять пробелы в местах, соответствующих значениям R, лежащим в интервалах (0.1, 0.2), (0.3, 0.4), (0.5, 0.6), (0.7, 0.8), (0.9, 1.0). После этого массив V(J) выводится на печать, затем снова заполняется пробелами и просматривается при следующем значении индекса /--1. Этот прием применяли Томан и Шевчик [1966]. Примеры из их работы приведены на рис. 7.4.

Если отношение размеров шагов сетки Ах/Ау не равно отношению размеров шагов печатающего устройства по вертикали и по горизонтали, которое обычно составляет (Д дюйма): :(/io дюйма) =5д для получения неискаженной картины изолиний необходимо провести предварительную интерполяцию либо в направлении /, либо в направлении /.

Логика построения изолиний на линейном графопостроителе интересна сама по себе. Если функция, изолинии которой необходимо построить, монотонна по х я у, то эта логика очень проста. Она, однако, усложняется при наличии многосвязных обла-




Рис. 7.3. Трехмерный график и изолинии функции / {х, у) = I + ч12 + + sin (nxIi) sin (пу), построенные на линейном графопостроителе. (Из раОоты Сандберга [1970].) а - трехмерный график f (х, у), б-изолинии функции / {х, у).



0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 [ 160 ] 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199