Приложение 1. Программа трансляции таблиц в VRMLFID= fopen('7.WRL','w'); % Открытие файла с именем '7.WRL'. В переменную FID заносится идентификатор файла, который используется для указания на файл в других низкоуровневых функциях. Опция ‘w’обозначает открытие нового двоичного файла для записи.load('G:\VRML\vrmlmatlab\re\LPV-12-118-SPARSE-TE-TI.mat'); % load(‘fname’…) - загрузка файла с матрицей.fprintf(FID,'%s','#VRML V2.0 utf8',10); % '#VRML V2.0 utf8’строка заголовка, которая сообщает браузеру, что это vrml файл, версии 2.0, кодировкой utf8. Символ # обозначает начало комментария, комментарий будет проигнорирован интерпретатором vrml.fprintf(FID,'%s','WorldInfo{',10); % Узел “WorldInfo” содержит общую информацию о мире, в частности его название.fprintf(FID,'%s',9,'title "Example 7"',10);fprintf(FID,'%s',9,'info ["файл 7 WRL"',10); % В поле info может находиться произвольное число строк.fprintf(FID,'%s',9,']',10);fprintf(FID,'%s','}',10);fprintf(FID,'%s','Background {',10); % Узел, задающий фон.fprintf(FID,'%s','skyColor[255, 160, 122 ]',10); % 'skyColor[]' - задание цвета фона VRML-мира.fprintf(FID,'%s','}',10);A = Center; % В переменную A заносится матрица Center.for i=1:12, % Цикл по столбцам. for j=1:5, % Цикл по строкам. disp(num2str (A(i,j))); % Функция disp реализует вывод текста или значения переменной в комаедное окно. Функция num2str реализует преобразование матрицы в массив символов.fprintf(FID,'%s','PROTO Positioned_box',num2str(i),num2str(j),'[',10); % Формат %s задаёт чтение строки; соответствующий выходной аргумент является массивом ячеек. PROTO – это узел VRML, реализующий прототипирование (особый способ повторного использования кода).fprintf(FID,'%s','field SFVec3f position 0 0 0',10); % SFVec3f – это тип данных VRML, содержащий тройку действительных чисел, обозначающих координаты х, у, z.fprintf(FID,'%s',']',10);fprintf(FID,'%s','{ Transform {',10);fprintf(FID,'%s','translation IS position',10); % Узел translation обозначает перемещение. IS – это зарезервированное слово, которое используется, чтобы поставить в соответствие поля прототипа и поля экземпляра объекта.fprintf(FID,'%s','children [',10)fprintf(FID,'%s','Shape{',10); % Узел формы.fprintf(FID,'%s',9,'appearance Appearance{',10); % Описывается внешний вид фигуры.fprintf(FID,'%s',9,9,'material Material{',10);fprintf(FID,'%s',9,9,'diffuseColor ',num2str((A(i , j)/max(max(A)))),' 0.6 ', ' 2',10); % diffuseColor – это поле узла Material, задающее нормальный цвет объекта в RGB.fprintf(FID,'%s',9,9,'}',10);fprintf(FID,'%s',9,'}',10);fprintf(FID,'%s',9,'geometry Cylinder{',10); % Описывается форма фигуры – цилиндр.fprintf(FID,'%s',9,'radius ',num2str(0.2),10); % radius – радиус, он постоянный.fprintf(FID,'%s',9,'height ',num2str(A(i , j)),10); % height – высота, изменяется в зависимости от значений A(i , j).fprintf(FID,'%s','}',10);fprintf(FID,'%s','}',10);fprintf(FID,'%s',']',10);fprintf(FID,'%s','}',10);fprintf(FID,'%s','}',10);fprintf(FID,'%s','#use it now',10);fprintf(FID,'%s',' Positioned_box',num2str(i),num2str(j) ,'{',10); % Указание имени объекта (цилиндра).fprintf(FID,'%s',' position ',num2str(i),' ',num2str(0+A(i , j)),' ',num2str(j),10); % Указание позиции цилиндра.fprintf(FID,'%s',' }',10); end; % Конец цикла j.end; % Конец цикла i.fclose(FID); % Закрытие файла.
|