﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<?application progid="SMath Studio Desktop" version="0.99.6884.37264"?>
<worksheet xmlns="http://smath.info/schemas/worksheet/1.0">
  <settings dpi="96">
    <identity>
      <id>86531fbe-44e5-47f1-97d1-d98e6d1b0359</id>
      <revision>96</revision>
    </identity>
    <calculation>
      <precision>10</precision>
      <exponentialThreshold>10</exponentialThreshold>
      <trailingZeros>false</trailingZeros>
      <significantDigitsMode>true</significantDigitsMode>
      <roundingMode>1</roundingMode>
      <fractions>decimal</fractions>
    </calculation>
    <pageModel active="true" viewMode="0" printGrid="false" printAreas="true" simpleEqualsOnly="false" printBackgroundImages="true">
      <paper id="1" orientation="Portrait" width="850" height="1100" />
      <margins left="39" right="39" top="39" bottom="39" />
      <header alignment="Center" color="#a9a9a9">&amp;[DATE] &amp;[TIME] - &amp;[FILENAME]</header>
      <footer alignment="Center" color="#a9a9a9">&amp;[PAGENUM] / &amp;[COUNT]</footer>
      <backgrounds />
    </pageModel>
    <dependencies>
      <assembly name="SMath Studio Desktop" version="0.99.6884.37264" guid="a37cba83-b69c-4c71-9992-55ff666763bd" />
      <assembly name="Math Region" version="0.99.6884.37264" guid="02f1ab51-215b-466e-a74d-5d8b1cf85e8d" />
      <assembly name="SpecialFunctions" version="1.12.6884.37264" guid="2814e667-4e12-48b1-8d51-194e480eabc5" />
      <assembly name="TextRegion" version="1.11.6884.37264" guid="485d28c5-349a-48b6-93be-12a35a1c1e39" />
      <assembly name="PlotRegion" version="1.11.6884.37264" guid="c451c2b5-798b-4f08-b9ec-b90963d1ddaa" />
    </dependencies>
  </settings>
  <regions type="content">
    <region id="0" left="0" top="9" width="413" height="28" color="#804040" bgColor="#ffffff" fontSize="12">
      <text lang="rus">
        <p bold="true">Rotate around an arbitrary axis in space </p>
      </text>
    </region>
    <region id="1" left="0" top="36" width="662" height="56" color="#000000" bgColor="#ffffff" fontSize="10">
      <text lang="rus">
        <p italic="true">The algorithm is taken from the book:D. F. Rogers and J. A. Adams. Mathematical Elements for Computer Graphics,second edition. McGraw-Hill Publishing Company,1990,pages 121-127</p>
      </text>
    </region>
    <region id="2" left="0" top="117" width="537" height="72" color="#000000" bgColor="#ffffff" fontSize="10">
      <math>
        <input>
          <e type="operand">B</e>
          <e type="operand">2</e>
          <e type="operand">3</e>
          <e type="operand">3</e>
          <e type="operand">2.5</e>
          <e type="operand">2</e>
          <e type="operand">2</e>
          <e type="operand">2</e>
          <e type="operand">2</e>
          <e type="operand">3</e>
          <e type="operand">3</e>
          <e type="operand">2.5</e>
          <e type="operand">2</e>
          <e type="operand">2.5</e>
          <e type="operand">3</e>
          <e type="operand">3</e>
          <e type="operand">3</e>
          <e type="operand">3</e>
          <e type="operand">3</e>
          <e type="operand">3</e>
          <e type="operand">3</e>
          <e type="operand">3</e>
          <e type="operand">2</e>
          <e type="operand">2</e>
          <e type="operand">2</e>
          <e type="operand">2</e>
          <e type="operand">1</e>
          <e type="operand">1</e>
          <e type="operand">1.5</e>
          <e type="operand">2</e>
          <e type="operand">2</e>
          <e type="operand">1</e>
          <e type="operand">2</e>
          <e type="operand">2</e>
          <e type="operand">2</e>
          <e type="operand">2</e>
          <e type="operand">2</e>
          <e type="operand">2</e>
          <e type="operand">2</e>
          <e type="operand">1.5</e>
          <e type="operand">1</e>
          <e type="operand">1</e>
          <e type="operand">2</e>
          <e type="operand">2</e>
          <e type="operand">1.5</e>
          <e type="operand">1</e>
          <e type="operand">1</e>
          <e type="operand">1</e>
          <e type="operand">2</e>
          <e type="operand">1</e>
          <e type="operand">1</e>
          <e type="operand">2</e>
          <e type="operand">2</e>
          <e type="operand">2</e>
          <e type="operand">2</e>
          <e type="operand">2</e>
          <e type="operand">2</e>
          <e type="operand">2</e>
          <e type="operand">1</e>
          <e type="operand">1</e>
          <e type="operand">1.5</e>
          <e type="operand">2</e>
          <e type="operand">2</e>
          <e type="operand">2</e>
          <e type="operand">2</e>
          <e type="operand">2</e>
          <e type="operand">1</e>
          <e type="operand">1</e>
          <e type="operand">1.5</e>
          <e type="operand">2</e>
          <e type="operand">2</e>
          <e type="operand">1</e>
          <e type="operand">1</e>
          <e type="operand">1</e>
          <e type="operand">1</e>
          <e type="operand">2</e>
          <e type="operand">3</e>
          <e type="operand">25</e>
          <e type="function" args="77">mat</e>
          <e type="function" args="1">transpose</e>
          <e type="operator" args="2">:</e>
        </input>
      </math>
    </region>
    <region id="3" left="0" top="216" width="265" height="24" color="#000000" bgColor="#ffffff" fontSize="10">
      <text lang="eng">
        <p bold="true">The axis is given by two points</p>
      </text>
    </region>
    <region id="4" left="0" top="252" width="163" height="36" color="#000000" bgColor="#ffffff" fontSize="10">
      <math decimalPlaces="4" significantDigitsMode="false" roundingMode="0" exponentialThreshold="5">
        <input>
          <e type="operand">p1</e>
          <e type="operand">1</e>
          <e type="operand">1</e>
          <e type="operand">0.</e>
          <e type="operand">0.25</e>
          <e type="operator" args="2">-</e>
          <e type="operand">1</e>
          <e type="operand">3</e>
          <e type="function" args="5">mat</e>
          <e type="function" args="1">transpose</e>
          <e type="operator" args="2">:</e>
        </input>
      </math>
    </region>
    <region id="5" left="171" top="252" width="109" height="36" color="#000000" bgColor="#ffffff" fontSize="10">
      <math decimalPlaces="4" significantDigitsMode="false" roundingMode="0" exponentialThreshold="5">
        <input>
          <e type="operand">p2</e>
          <e type="operand">3</e>
          <e type="operand">1</e>
          <e type="operand">6</e>
          <e type="operand">1</e>
          <e type="operand">3</e>
          <e type="function" args="5">mat</e>
          <e type="function" args="1">transpose</e>
          <e type="operator" args="2">:</e>
        </input>
      </math>
    </region>
    <region id="6" left="441" top="252" width="137" height="36" color="#000000" bgColor="#ffffff" fontSize="10">
      <math decimalPlaces="4" significantDigitsMode="false" roundingMode="0" exponentialThreshold="5">
        <input>
          <e type="operand">p3</e>
          <e type="operand">1</e>
          <e type="operand">2</e>
          <e type="operand">0.3</e>
          <e type="operator" args="1">-</e>
          <e type="operand">1</e>
          <e type="operand">3</e>
          <e type="function" args="5">mat</e>
          <e type="function" args="1">transpose</e>
          <e type="operator" args="2">:</e>
        </input>
      </math>
    </region>
    <region id="7" left="612" top="252" width="109" height="36" color="#000000" bgColor="#ffffff" fontSize="10">
      <math decimalPlaces="4" significantDigitsMode="false" roundingMode="0" exponentialThreshold="5">
        <input>
          <e type="operand">p4</e>
          <e type="operand">1</e>
          <e type="operand">2</e>
          <e type="operand">4</e>
          <e type="operand">1</e>
          <e type="operand">3</e>
          <e type="function" args="5">mat</e>
          <e type="function" args="1">transpose</e>
          <e type="operator" args="2">:</e>
        </input>
      </math>
    </region>
    <region id="8" left="0" top="315" width="739" height="342" border="true" color="#000000" bgColor="#ffffff" fontSize="10">
      <math>
        <input>
          <e type="operand">p1</e>
          <e type="operand">p2</e>
          <e type="operand">δ</e>
          <e type="function" args="3">Bδ</e>
          <e type="operand" style="string">Rotations and translations matrices in 3D</e>
          <e type="operand">T</e>
          <e type="operand">1</e>
          <e type="operand">0</e>
          <e type="operand">0</e>
          <e type="operand">0</e>
          <e type="operand">0</e>
          <e type="operand">1</e>
          <e type="operand">0</e>
          <e type="operand">0</e>
          <e type="operand">0</e>
          <e type="operand">0</e>
          <e type="operand">1</e>
          <e type="operand">0</e>
          <e type="operand">p1</e>
          <e type="operator" args="1">-</e>
          <e type="operand">1</e>
          <e type="function" args="2">el</e>
          <e type="operand">p1</e>
          <e type="operator" args="1">-</e>
          <e type="operand">2</e>
          <e type="function" args="2">el</e>
          <e type="operand">p1</e>
          <e type="operator" args="1">-</e>
          <e type="operand">3</e>
          <e type="function" args="2">el</e>
          <e type="operand">1</e>
          <e type="operand">4</e>
          <e type="operand">4</e>
          <e type="function" args="18">mat</e>
          <e type="operator" args="2">:</e>
          <e type="operand">Rx</e>
          <e type="operand">1</e>
          <e type="operand">0</e>
          <e type="operand">0</e>
          <e type="operand">0</e>
          <e type="operand">0</e>
          <e type="operand">α</e>
          <e type="function" args="1">cos</e>
          <e type="operand">α</e>
          <e type="function" args="1">sin</e>
          <e type="operand">0</e>
          <e type="operand">0</e>
          <e type="operand">α</e>
          <e type="function" args="1">sin</e>
          <e type="operator" args="1">-</e>
          <e type="operand">α</e>
          <e type="function" args="1">cos</e>
          <e type="operand">0</e>
          <e type="operand">0</e>
          <e type="operand">0</e>
          <e type="operand">0</e>
          <e type="operand">1</e>
          <e type="operand">4</e>
          <e type="operand">4</e>
          <e type="function" args="18">mat</e>
          <e type="operator" args="2">:</e>
          <e type="operand">1</e>
          <e type="operand">2</e>
          <e type="function" args="4">mat</e>
          <e type="operand">Ry</e>
          <e type="operand">β</e>
          <e type="operator" args="1">-</e>
          <e type="function" args="1">cos</e>
          <e type="operand">0</e>
          <e type="operand">β</e>
          <e type="operator" args="1">-</e>
          <e type="function" args="1">sin</e>
          <e type="operator" args="1">-</e>
          <e type="operand">0</e>
          <e type="operand">0</e>
          <e type="operand">1</e>
          <e type="operand">0</e>
          <e type="operand">0</e>
          <e type="operand">β</e>
          <e type="operator" args="1">-</e>
          <e type="function" args="1">sin</e>
          <e type="operand">0</e>
          <e type="operand">β</e>
          <e type="operator" args="1">-</e>
          <e type="function" args="1">cos</e>
          <e type="operand">0</e>
          <e type="operand">0</e>
          <e type="operand">0</e>
          <e type="operand">0</e>
          <e type="operand">1</e>
          <e type="operand">4</e>
          <e type="operand">4</e>
          <e type="function" args="18">mat</e>
          <e type="operator" args="2">:</e>
          <e type="operand">Rδ</e>
          <e type="operand">δ</e>
          <e type="function" args="1">cos</e>
          <e type="operand">δ</e>
          <e type="function" args="1">sin</e>
          <e type="operand">0</e>
          <e type="operand">0</e>
          <e type="operand">δ</e>
          <e type="function" args="1">sin</e>
          <e type="operator" args="1">-</e>
          <e type="operand">δ</e>
          <e type="function" args="1">cos</e>
          <e type="operand">0</e>
          <e type="operand">0</e>
          <e type="operand">0</e>
          <e type="operand">0</e>
          <e type="operand">1</e>
          <e type="operand">0</e>
          <e type="operand">0</e>
          <e type="operand">0</e>
          <e type="operand">0</e>
          <e type="operand">1</e>
          <e type="operand">4</e>
          <e type="operand">4</e>
          <e type="function" args="18">mat</e>
          <e type="operator" args="2">:</e>
          <e type="operand">1</e>
          <e type="operand">2</e>
          <e type="function" args="4">mat</e>
          <e type="operand">ecos</e>
          <e type="operand">p2</e>
          <e type="operand">p1</e>
          <e type="operator" args="2">-</e>
          <e type="operand">p2</e>
          <e type="operand">p1</e>
          <e type="operator" args="2">-</e>
          <e type="function" args="1">norme</e>
          <e type="operator" args="2">/</e>
          <e type="function" args="1">eval</e>
          <e type="operator" args="2">:</e>
          <e type="bracket">(</e>
          <e type="operand" style="string">Direction cosines onto Ox,Oy Oz</e>
          <e type="operator" args="2">≡</e>
          <e type="operand">d</e>
          <e type="operand">ecos</e>
          <e type="operand">2</e>
          <e type="function" args="2">el</e>
          <e type="bracket">(</e>
          <e type="operand">2</e>
          <e type="operator" args="2">^</e>
          <e type="operand">ecos</e>
          <e type="operand">3</e>
          <e type="function" args="2">el</e>
          <e type="bracket">(</e>
          <e type="operand">2</e>
          <e type="operator" args="2">^</e>
          <e type="operator" args="2">+</e>
          <e type="function" args="1">sqrt</e>
          <e type="function" args="1">eval</e>
          <e type="operator" args="2">:</e>
          <e type="operand">α</e>
          <e type="operand">ecos</e>
          <e type="operand">3</e>
          <e type="function" args="2">el</e>
          <e type="operand">d</e>
          <e type="operator" args="2">/</e>
          <e type="function" args="1">acos</e>
          <e type="function" args="1">eval</e>
          <e type="operator" args="2">:</e>
          <e type="operand">β</e>
          <e type="operand">d</e>
          <e type="function" args="1">acos</e>
          <e type="function" args="1">eval</e>
          <e type="operator" args="2">:</e>
          <e type="operand">1</e>
          <e type="operand">3</e>
          <e type="function" args="5">mat</e>
          <e type="operand">X</e>
          <e type="operand">B</e>
          <e type="operand">1</e>
          <e type="function" args="2">augment</e>
          <e type="operator" args="2">:</e>
          <e type="operand">M</e>
          <e type="operand">T</e>
          <e type="operand">Rx</e>
          <e type="operator" args="2">*</e>
          <e type="operand">Ry</e>
          <e type="operator" args="2">*</e>
          <e type="function" args="1">eval</e>
          <e type="operator" args="2">:</e>
          <e type="operand">M1</e>
          <e type="operand">X</e>
          <e type="operand">M</e>
          <e type="operator" args="2">*</e>
          <e type="operand">Rδ</e>
          <e type="operator" args="2">*</e>
          <e type="operand">M</e>
          <e type="operand">1</e>
          <e type="operator" args="1">-</e>
          <e type="operator" args="2">^</e>
          <e type="operator" args="2">*</e>
          <e type="function" args="1">eval</e>
          <e type="operator" args="2">:</e>
          <e type="operand">1</e>
          <e type="operand">3</e>
          <e type="function" args="5">mat</e>
          <e type="operand">M1</e>
          <e type="operand">1</e>
          <e type="function" args="2">col</e>
          <e type="operand">M1</e>
          <e type="operand">2</e>
          <e type="function" args="2">col</e>
          <e type="operand">M1</e>
          <e type="operand">3</e>
          <e type="function" args="2">col</e>
          <e type="function" args="3">augment</e>
          <e type="operand">7</e>
          <e type="operand">1</e>
          <e type="function" args="9">line</e>
          <e type="operator" args="2">:</e>
        </input>
      </math>
    </region>
    <region id="9" left="0" top="675" width="92" height="26" color="#000000" bgColor="#ffffff" fontSize="10">
      <math>
        <input>
          <e type="operand">τ</e>
          <e type="operand">0</e>
          <e type="operand">71</e>
          <e type="function" args="2">range</e>
          <e type="operator" args="2">:</e>
        </input>
      </math>
    </region>
    <region id="10" left="153" top="675" width="233" height="63" color="#000000" bgColor="#ffffff" fontSize="10">
      <math decimalPlaces="4" significantDigitsMode="false" roundingMode="0" exponentialThreshold="5">
        <input>
          <e type="operand">γ</e>
          <e type="operand">0.8232</e>
          <e type="operator" args="1">-</e>
          <e type="operand">0.4194</e>
          <e type="operator" args="1">-</e>
          <e type="operand">0.3827</e>
          <e type="operand">0.5677</e>
          <e type="operand">0.6187</e>
          <e type="operator" args="1">-</e>
          <e type="operand">0.543</e>
          <e type="operand">0.009</e>
          <e type="operand">0.6643</e>
          <e type="operand">0.7474</e>
          <e type="operand">3</e>
          <e type="operand">3</e>
          <e type="function" args="11">mat</e>
          <e type="operator" args="2">:</e>
        </input>
      </math>
    </region>
    <region id="11" left="0" top="756" width="348" height="312" color="#000000" bgColor="#ffffff" fontSize="10" showInputData="False">
      <plot grid="false" axes="false" type="3d" render="lines" scale_x="165.903372108705" scale_y="165.903372108705" scale_z="165.903372108705" rotate_x="-131" rotate_y="-18" rotate_z="-2" transpose_x="0" transpose_y="0" transpose_z="0" animate="τ" frameRate="20">
        <input>
          <e type="operand">p3</e>
          <e type="operand">p4</e>
          <e type="operand">π</e>
          <e type="operand">36</e>
          <e type="operator" args="2">/</e>
          <e type="operand">t</e>
          <e type="operator" args="2">*</e>
          <e type="function" args="3">Bδ</e>
          <e type="operand">γ</e>
          <e type="operator" args="2">*</e>
          <e type="operand">10</e>
          <e type="operator" args="2">*</e>
          <e type="operand">B</e>
          <e type="operand">γ</e>
          <e type="operator" args="2">*</e>
          <e type="operand">10</e>
          <e type="operator" args="2">*</e>
          <e type="operand">p3</e>
          <e type="function" args="1">transpose</e>
          <e type="operand">p4</e>
          <e type="function" args="1">transpose</e>
          <e type="function" args="2">stack</e>
          <e type="operand">γ</e>
          <e type="operator" args="2">*</e>
          <e type="operand">10</e>
          <e type="operator" args="2">*</e>
          <e type="operand">3</e>
          <e type="operand">1</e>
          <e type="function" args="5">sys</e>
        </input>
      </plot>
    </region>
    <region id="12" left="405" top="765" width="337" height="262" color="#000000" bgColor="#ffffff" fontSize="10" showInputData="False">
      <plot grid="false" axes="false" type="3d" render="lines" scale_x="252.862935693804" scale_y="252.862935693804" scale_z="252.862935693804" rotate_x="-143" rotate_y="-52" rotate_z="-2" transpose_x="0" transpose_y="0" transpose_z="0" animate="τ" frameRate="20">
        <input>
          <e type="operand">p1</e>
          <e type="operand">p2</e>
          <e type="operand">π</e>
          <e type="operand">36</e>
          <e type="operator" args="2">/</e>
          <e type="operator" args="1">-</e>
          <e type="bracket">(</e>
          <e type="operand">t</e>
          <e type="operator" args="2">*</e>
          <e type="function" args="3">Bδ</e>
          <e type="operand">γ</e>
          <e type="operator" args="2">*</e>
          <e type="operand">10</e>
          <e type="operator" args="2">*</e>
          <e type="operand">B</e>
          <e type="operand">γ</e>
          <e type="operator" args="2">*</e>
          <e type="operand">10</e>
          <e type="operator" args="2">*</e>
          <e type="operand">p1</e>
          <e type="function" args="1">transpose</e>
          <e type="operand">p2</e>
          <e type="function" args="1">transpose</e>
          <e type="function" args="2">stack</e>
          <e type="operand">γ</e>
          <e type="operator" args="2">*</e>
          <e type="operand">10</e>
          <e type="operator" args="2">*</e>
          <e type="operand">3</e>
          <e type="operand">1</e>
          <e type="function" args="5">sys</e>
        </input>
      </plot>
    </region>
  </regions>
</worksheet>