Формат описания визуальных моделей в системе Sterizium

Пример визуальной модели

Разработанный синтаксис описания визуальных моделей основан на расширяемом языке разметки XML (Extensible Markup Language).

Все модели должны находиться внутри корневого тега <root>:

<?xml version="1.0" encoding="UTF-8"?>

<root>

Описание визуальных моделей…

</root>

Каждая визуальная модель, предназначенная для решения конкретной педагогической задачи, описывается внутри тега <content>, количество моделей неограниченно. Единственным и обязательным атрибутом тега содержимого является его имя, например:

<content name="Задача №1">

</content>

Внутри тега <content> допускается три типа тэгов, это тег объекта <object>, тег осей <axis> и тег меток <label>. Каждый из указанных тегов может быть включен в содержимое модели неограниченное число раз.

Объекты имеют атрибут тип (type), который может принимать следующие значения (в виде примеров):

  1. <object type="sphere" r="2.0"> – сфера с радиусом равным двум;

  2. <object type="ellipse" rx="2.0" ry="2.5" rz="3.0"> – эллипс с указанием радиусов по каждой оси;

  3. <object type="cube" h="3.0"> – куб со стороной ребра равной трем;

  4. <object type="cylinder" r="2.0" h="4.0"> – цилиндр радиуса два и высотой три;

  5. <object type="tor" R="3.0" r="1.0"> – тор с основным радиусом три и единичным малым радиусом;

  6. <object type="cone" r="2.0" h="3.0"> – конус, радиус основания два и высота три;

  7. <object type="cone" R="4.0" r="2.0" h="3.0"> – усеченный конус, радиус основания четыре, радиус усеченной вершины два и высота три;

  8. <object type="prism" r="2.0" h="3.0" base="3"> – треугольная призма (base="3") с основанием ограниченным радиусом воображаемой описанной окружности равным двум и высотой три;

  9. <object type="pyramid" r="3.0" h="2.0" base="4"> – четырехугольная пирамида (base="4") с основанием ограниченным радиусом воображаемой описанной окружности равным трем и высотой равной двум;

  10. <object type="pyramid" R="5.0" r="3.0" h="2.0" base="5"> – пятиугольная усеченная пирамида (base="5") с ограниченными радиусами воображаемых описанных окружностей основания пять и усеченной вершины три, а также высотой равной двум;

Если тип объекта не указан, то считается, что объект задан вручную в виде списка вершин <vertexes>, полигональных сеток <polygones> и отображаемых ребер <edges>. Вершины задаются в декартовых координатах следующим образом:

<vertexes>(1,0,0);(0,1,1.5);(2.1,3.7,0.5);(0,0,7)</vertexes>

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

<polygones>(0,1,2);(0,3,2)</polygones>

<edges>(0,1);(2,3);(3,2)</edges>

Объекты, включающие в себя нелинейные поверхности, такие как шар, конус, тор и прочие, поддерживают атрибут detail, который задает степень сегментации для увеличения детализации и является целым положительным числом. Для каждого объекта может быть задан цвет полигональной сетки через атрибут color. Цвет задается четырьмя нормированными на единичный отрезок компонентами, через запятую: яркость красного, зеленого, синего и степень прозрачности, последняя, чем ближе к нулю, тем прозрачней.

Оси <axis> задаются идентично вершинам <vertexes> в декартовых координатах, при этом каждая пара точек описывает отдельно взятую ось или просто отрезок, который визуализируется в виде штрихпунктирной линии.

Метки <label> используются для символьного обозначения вершин и отображения точек в заданной через атрибуты x, y и z координате. Текст, отображаемый рядом с точкой, задается атрибутом text, по умолчанию текст будет располагаться в противоположном началу координат направлении относительно заданной точки. Чтобы зафиксировать положение текста предусмотрен атрибут ori, в который записывается положение воображаемой стрелки в часах, указывающей предпочтительное размещение текста относительно заданной точки.

Для управления размещением и размерами объектов предусмотрен тег операций <exec>, если данный тег находится внутри тега объекта, тогда операции производятся только над данным объектом, если тег находится выше, внутри тега содержимого, тогда операция затрагивает все содержимое визуальной модели, по окончанию всех операций касающихся конкретных объектов. Поддерживаются три типа операций: вращение rotate, масштабирование scale и перемещение move. Вращение может быть осуществлено вокруг одной из осей координат x, y или z, либо вокруг заданного вектора на угол указанный в градусах. Масштабирование производится по трем координатным осям. Перемещение задается вектором в декартовых координатах. Например, необходимо повернуть объект вокруг оси x на 60 градусов, уменьшить его в два раза, сместить вверх на единичный вектор и повернуть вокруг вектора (1,1,1) на 30 градусов, тогда это можно записать следующим образом:

<exec>rotate(x,60);scale(0.5,0.5,0.5);move(0,1,0);rotate(1,1,1,30)</exec>