]> git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/qvm/doc/index.html
add subtree-ish sources for 12.0.3
[ceph.git] / ceph / src / boost / libs / qvm / doc / index.html
1 <!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Strict//EN'
2 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd'>
3 <html xmlns='http://www.w3.org/1999/xhtml' xml:lang='en' lang='en'>
4 <head>
5 <meta http-equiv='Content-Type' content='text/html; charset=utf-8'/>
6 <title>Boost QVM</title>
7 <link href='reno.css' type='text/css' rel='stylesheet'/>
8 </head>
9 <body>
10 <div class="body-0">
11 <div class="body-1">
12 <div class="body-2">
13 <div>
14 <h1>QVM: Quaternions, Vectors, Matrices</h1>
15 </div>
16 <!-- Copyright (c) 2008-2016 Emil Dotchevski and Reverge Studios, Inc. -->
17 <!-- Distributed under the Boost Software License, Version 1.0. (See accompanying -->
18 <!-- file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -->
19 <div class="RenoIncludeDIV"><p>Boost QVM is a generic library for working with <b>q</b>uaternions, <b>v</b>ectors and <b>m</b>atrices of static size with the emphasis on 2, 3 and 4-dimensional operations needed in graphics, video games and simulation applications.</p>
20 <h3>Introduction</h3>
21 <p>In graphics and simulation applications, there is a need for a library that makes it easy to perform 2D and 3D transformations efficiently. C++ makes it possible to define vector and matrix types and to overload various operators to implement the standard algebraic operations. Because this is a relatively straightforward process, there are many such libraries in existence, each with its own types and operator overrloads. Such libraries are typically part of a higher level system, such as a graphics engine or a 3D modeling API. As a result, it is typical for programmers to have to integrate and to translate between several different quaternion, vector and matrix types that come with the various APIs they use.</p>
22 <p>On the other hand, performance considerations often lead to matrix and vector types becoming coupled with a particular platform, or to (over time) acquire various <i>#ifdefs</i> needed to enable optimizations through platform-specific compiler features that control the physical format or layout of their elements. However, such optimizations may interfere with ease of use and portability; for example on some platforms requiring 16-byte alignment for matrix types makes them incompatible with standard containers.</p>
23 <p>Boost QVM solves both of these issues by decoupling the standard algebraic operations from the types they operate on -- without compromising type safety.</p>
24 <h3>Key design features of Boost QVM:</h3>
25 <div><ul><li> Emphasis on 2, 3 and 4-dimensional operations (including <span class="RenoLink"><a href="http://en.wikipedia.org/wiki/Quaternion">quaternions</a></span> and zero-overhead <i><span class="RenoLink"><a href="Swizzling.html">Swizzling</a></span></i>) as needed in graphics and simulation applications.</li>
26 <li> Zero-overhead <span class="RenoLink"><a href="view_proxy.html">view proxies</a></span> that can be used to access an object with quaternion, vector or matrix semantics through a read-only or mutable reference of a different type. For example, <i><span class="RenoLink"><a href="col.html">col</a></span>&lt;C&gt;(m)</i> binds the <i>C</i>-th column of a matrix <i>m</i> as a mutable vector type without the overhead of a temporary.</li>
27 <li> Integration of many user-defined or 3rd-party quaternion, vector or matrix types into a coherent type-safe system. This enables the user to build algebraic expressions using objects of diverse types that would otherwise be incompatible.</li>
28 <li> When users need to implement platform-specific or even project-specific optimizations in a given subsystem, Boost QVM makes it simple to define custom new types that automatically aquire the full set of algebraic operations so they can interface seamlessly with the rest of the program. At the same time, the user can define a limited number of overloads for the new types as needed to implement specific optimizations.</li>
29 </ul></div>
30 <h3>Contents</h3>
31 <div><ol><li>Tutorial<div><ol><li><span class="RenoLink"><a href="quaternions_vectors_matrices.html">Quaternions, Vectors, Matrices</a></span></li>
32 <li><span class="RenoLink"><a href="c_arrays.html">C Arrays</a></span></li>
33 <li><span class="RenoLink"><a href="Views.html">Views</a></span></li>
34 <li><span class="RenoLink"><a href="Swizzling.html">Swizzling</a></span></li>
35 <li><span class="RenoLink"><a href="SFINAE_enable_if.html">SFINAE/enable_if</a></span></li>
36 <li><span class="RenoLink"><a href="Interoperability.html">Interoperability</a></span></li>
37 </ol></div>
38 </li>
39 <li>Reference<div><ol><li><span class="RenoLink"><a href="type_traits_reference.html">Type traits</a></span></li>
40 <li><span class="RenoLink"><a href="quaternion_vector_and_matrix_types_reference.html">Quaternion, vector and matrix types</a></span></li>
41 <li><span class="RenoLink"><a href="accessing_quaternion_elements.html">Accessing quaternion elements</a></span></li>
42 <li><span class="RenoLink"><a href="accessing_vector_elements.html">Accessing vector elements</a></span></li>
43 <li><span class="RenoLink"><a href="accessing_vector_elements_and_swizzling_reference.html">Accessing vector elements by swizzling</a></span></li>
44 <li><span class="RenoLink"><a href="accessing_matrix_elements.html">Accessing matrix elements</a></span></li>
45 <li><span class="RenoLink"><a href="quaternion_operations_reference.html">Quaternion operations</a></span></li>
46 <li><span class="RenoLink"><a href="vector_operations_reference.html">Vector operations</a></span></li>
47 <li><span class="RenoLink"><a href="matrix_operations_reference.html">Matrix operations</a></span></li>
48 <li><span class="RenoLink"><a href="quaternion-vector_operations_reference.html">Quaternion-vector operations</a></span></li>
49 <li><span class="RenoLink"><a href="vector-matrix_operations_reference.html">Vector-matrix operations</a></span></li>
50 <li><span class="RenoLink"><a href="matrix-to-matrix_view_proxies_reference.html">Matrix-to-matrix</a></span> <span class="RenoLink"><a href="view_proxy.html">view proxies</a></span></li>
51 <li><span class="RenoLink"><a href="vector-to-matrix_view_proxies_reference.html">Vector-to-matrix</a></span> <span class="RenoLink"><a href="view_proxy.html">view proxies</a></span></li>
52 <li><span class="RenoLink"><a href="matrix-to-vector_view_proxies_reference.html">Matrix-to-vector</a></span> <span class="RenoLink"><a href="view_proxy.html">view proxies</a></span></li>
53 <li><span class="RenoLink"><a href="generic_programming_utilities_reference.html">Generic programming utilities</a></span></li>
54 <li><span class="RenoLink"><a href="exception_types_reference.html">Exception types</a></span></li>
55 <li><span class="RenoLink"><a href="macros_and_configuration_reference.html">Macros and configuration</a></span></li>
56 <li><span class="RenoLink"><a href="sfinae.html">Namespace boost::qvm::sfinae</a></span></li>
57 </ol></div>
58 </li>
59 <li><span class="RenoLink"><a href="Synopsis.html">Synopsis</a></span></li>
60 <li><span class="RenoLink"><a href="code_generator.html">Code generator</a></span></li>
61 <li><span class="RenoLink"><a href="known_quirks_and_issues.html">Known quirks and issues</a></span></li>
62 <li><span class="RenoLink"><a href="questions_and_answers.html">Questions and answers</a></span></li>
63 <li>Indexes<div><ol><li><span class="RenoLink"><a href="Index_of_Headers.html">Index of Headers</a></span></li>
64 <li><span class="RenoLink"><a href="Index_of_Functions.html">Index of Functions</a></span></li>
65 <li><span class="RenoLink"><a href="Index_of_View_Proxies.html">Index of View Proxies</a></span></li>
66 <li><span class="RenoLink"><a href="Index_of_Types.html">Index of Types</a></span></li>
67 </ol></div>
68 </li>
69 </ol></div>
70 <h3>Download</h3>
71 <p>QVM is part of Boost. Please see git submodule at <span class="RenoLink"><a href="https://github.com/boostorg/qvm">https://github.com/boostorg/qvm</a></span>.</p>
72 <h3>Support</h3>
73 <p>For support, please use the <span class="RenoLink"><a href="http://www.boost.org/community/groups.html#main">Boost Developers Mailing List</a></span>.</p>
74 </div><div class="RenoAutoDIV"></div>
75 <!-- Copyright (c) 2008-2016 Emil Dotchevski and Reverge Studios, Inc. -->
76 <!-- Distributed under the Boost Software License, Version 1.0. (See accompanying -->
77 <!-- file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -->
78 <div id="footer">
79 <p>
80 <a class="logo" href="http://jigsaw.w3.org/css-validator/check/referer"><img class="logo_pic" src="valid-css.png" alt="Valid CSS" height="31" width="88"/></a>
81 <a class="logo" href="http://validator.w3.org/check?uri=referer"><img class="logo_pic" src="valid-xhtml.png" alt="Valid XHTML 1.0" height="31" width="88"/></a>
82 <small>Copyright (c) 2008-2016 by Emil Dotchevski and Reverge Studios, Inc.<br/>
83 Distributed under the <a href="http://www.boost.org/LICENSE_1_0.txt">Boost Software License, Version 1.0</a>.</small>
84 </p>
85 </div>
86 </div>
87 </div>
88 </div>
89 </body>
90 </html>