@vova_bober

Как расшифровать 3D фигуры в xml?

Я конвертировал 3d фигуру из одной конструкторской программы в xml. Теперь надо как то расшифровать. Подскажите, как расшифровывается этот код:
Куб 100*100*100мм:
<?xml version="1.0" encoding="windows-1251" ?>
<scene>
  <layer>
    <shape thickness="0.018">
      <matrix>
        0.000000000000003, 0.000000000000005, -5.555555555555510, -1.950000000000001, 
        0.000000000000000, -1.000000000000000, 0.000000000000000, -1.375000000000000, 
        -1.000000000000000, 0.000000000000000, 0.000000000000000, -1.875000000000000, 
        0.000000000000000, 0.000000000000000, 0.000000000000000, 1.000000000000000
      </matrix>
      <segments>
        <line>0.025, 0.025</line>
        <line>0.025, 0.125</line>
        <line>0.125, 0.125</line>
        <line>0.125, 0.025</line>
      </segments>
    </shape>
  </layer>
</scene>

Куб 1*1*1мм
<?xml version="1.0" encoding="windows-1251" ?>
<scene>
  <layer>
    <shape thickness="0.018">
      <matrix>
        0.000000000000003, 0.000000000000005, -0.055555555555555, -1.999500000000000, 
        0.000000000000000, -1.000000000000000, 0.000000000000000, -1.498750000000000, 
        -1.000000000000000, 0.000000000000000, 0.000000000000000, -1.998750000000000, 
        0.000000000000000, 0.000000000000000, 0.000000000000000, 1.000000000000000
      </matrix>
      <segments>
        <line>0.000, 0.000</line>
        <line>0.000, 0.001</line>
        <line>0.001, 0.001</line>
        <line>0.001, 0.000</line>
      </segments>
    </shape>
  </layer>
</scene>
  • Вопрос задан
  • 2597 просмотров
Пригласить эксперта
Ответы на вопрос 1
SHVV
@SHVV
Это похоже на экструзию.
То есть, рисуется 2Д фигура и выдавливается до нужной толщины.
В вашем случае нарисован квадрат перечислением 2Д координат его вершин (x, y):
<segments>
        <line>0.000, 0.000</line>
        <line>0.000, 0.001</line>
        <line>0.001, 0.001</line>
        <line>0.001, 0.000</line>
</segments>

И этому квадрату задана толщина (высота в 3Д):
<shape thickness="0.018">
И в конечном итоге всё это оттрансформированно матрицей преобразования:
<matrix>
        0.000000000000003, 0.000000000000005, -0.055555555555555, -1.999500000000000, 
        0.000000000000000, -1.000000000000000, 0.000000000000000, -1.498750000000000, 
        -1.000000000000000, 0.000000000000000, 0.000000000000000, -1.998750000000000, 
        0.000000000000000, 0.000000000000000, 0.000000000000000, 1.000000000000000
</matrix>

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

Войдите, чтобы написать ответ

Похожие вопросы