summaryrefslogtreecommitdiff
path: root/manuals/sly/Vectors.html
diff options
context:
space:
mode:
Diffstat (limited to 'manuals/sly/Vectors.html')
-rw-r--r--manuals/sly/Vectors.html220
1 files changed, 220 insertions, 0 deletions
diff --git a/manuals/sly/Vectors.html b/manuals/sly/Vectors.html
new file mode 100644
index 0000000..14d2b91
--- /dev/null
+++ b/manuals/sly/Vectors.html
@@ -0,0 +1,220 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2013, 2014 David Thompson davet@gnu.org
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3
+or any later version published by the Free Software Foundation;
+with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
+A copy of the license is included in the section entitled "GNU
+Free Documentation License".
+
+A copy of the license is also available from the Free Software
+Foundation Web site at http://www.gnu.org/licenses/fdl.html.
+
+
+The document was typeset with
+http://www.texinfo.org/ (GNU Texinfo).
+ -->
+<!-- Created by GNU Texinfo 6.0, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>Sly: Vectors</title>
+
+<meta name="description" content="Sly: Vectors">
+<meta name="keywords" content="Sly: Vectors">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta charset="UTF-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Math.html#Math" rel="up" title="Math">
+<link href="Rectangles.html#Rectangles" rel="next" title="Rectangles">
+<link href="Math.html#Math" rel="prev" title="Math">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+blockquote.smallindentedblock {margin-right: 0em; font-size: smaller}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style: oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space: nowrap}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: serif; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<a name="Vectors"></a>
+<div class="header">
+<p>
+Next: <a href="Rectangles.html#Rectangles" accesskey="n" rel="next">Rectangles</a>, Up: <a href="Math.html#Math" accesskey="u" rel="up">Math</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Vectors-1"></a>
+<h4 class="subsection">4.2.1 Vectors</h4>
+
+<div class="example">
+<pre class="example">(use-modules (sly math vector))
+</pre></div>
+
+<p>Not to be confused with Guile&rsquo;s vector data structure, Sly provides
+dedicated data types for 2D, 3D, and 4D vectors in the mathematical
+sense. Vector procedures are polymorphic, and will work with any
+dimensionality that the operation supports. In some cases, such as
+<code>v+</code>, <code>v-</code>, and <code>v*</code>, scalar values may be passed as
+well.
+</p>
+<p>The <code>&lt;vector2&gt;</code>, <code>&lt;vector3&gt;</code>, and <code>&lt;vector4&gt;</code> type
+descriptors have been exposed for use with Guile&rsquo;s <code>(ice-9
+match)</code> pattern matching module.
+</p>
+<dl>
+<dt><a name="index-_003cvector2_003e"></a>Record Type: <strong>&lt;vector2&gt;</strong></dt>
+<dd><p>2D vector data type with fields <code>x</code> and <code>y</code>, in that order.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-_003cvector3_003e"></a>Record Type: <strong>&lt;vector3&gt;</strong></dt>
+<dd><p>3D vector data type with fields <code>x</code>, <code>y</code>, and <code>z</code>, in
+that order.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-_003cvector4_003e"></a>Record Type: <strong>&lt;vector4&gt;</strong></dt>
+<dd><p>4D vector data type with fields <code>x</code>, <code>y</code>, <code>z</code> and
+<code>w</code>, in that order.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-vector2"></a>Scheme Syntax: <strong>vector2</strong> <em><var>x</var> <var>y</var></em></dt>
+<dd><p>Create a new 2D vector with coordinates (<var>x</var>, <var>y</var>).
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-vector3"></a>Scheme Syntax: <strong>vector3</strong> <em><var>x</var> <var>y</var> <var>z</var></em></dt>
+<dd><p>Create a new 3D vector with coordinates (<var>x</var>, <var>y</var>, <var>z</var>).
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-vector4"></a>Scheme Syntax: <strong>vector4</strong> <em><var>x</var> <var>y</var> <var>z</var> <var>w</var></em></dt>
+<dd><p>Create a new 4D vector with coordinates (<var>x</var>, <var>y</var>, <var>z</var>,
+<var>w</var>).
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-vector2_003f"></a>Scheme Syntax: <strong>vector2?</strong> <em><var>v</var></em></dt>
+<dd><p>Return <code>#t</code> if <code>v</code> is a 2D vector.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-vector3_003f"></a>Scheme Syntax: <strong>vector3?</strong> <em><var>v</var></em></dt>
+<dd><p>Return <code>#t</code> if <code>v</code> is a 3D vector.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-vector4_003f"></a>Scheme Syntax: <strong>vector4?</strong> <em><var>v</var></em></dt>
+<dd><p>Return <code>#t</code> if <code>v</code> is a 4D vector.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-vx"></a>Scheme Procedure: <strong>vx</strong> <em><var>v</var></em></dt>
+<dd><p>Return the x coordinate of the 2D, 3D, or 4D vector <var>v</var>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-vy"></a>Scheme Procedure: <strong>vy</strong> <em><var>v</var></em></dt>
+<dd><p>Return the y coordinate of the 2D, 3D, or 4D vector <var>v</var>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-vz"></a>Scheme Procedure: <strong>vz</strong> <em><var>v</var></em></dt>
+<dd><p>Return the z coordinate of the 3D or 4D vector <var>v</var>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-vw"></a>Scheme Procedure: <strong>vw</strong> <em><var>v</var></em></dt>
+<dd><p>Return the w coordinate of the 4D vector <var>v</var>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-vmap"></a>Scheme Procedure: <strong>vmap</strong> <em><var>proc</var> <var>v</var></em></dt>
+<dd><p>Return a new vector that is the result of applying <var>proc</var> to each
+element of the 2D, 3D, or 4D vector <var>v</var>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-v_002b"></a>Scheme Procedure: <strong>v+</strong> <em>. <var>vectors</var></em></dt>
+<dd><p>Return the sum of all <var>vectors</var>. <var>vectors</var> may contain scalar
+values, but it may not contain vectors of mixed dimensions.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-v_002d"></a>Scheme Procedure: <strong>v-</strong> <em>. <var>vectors</var></em></dt>
+<dd><p>Return the difference of all <var>vectors</var>. <var>vectors</var> may contain scalar
+values, but it may not contain vectors of mixed dimensions.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-v_002a"></a>Scheme Procedure: <strong>v*</strong> <em>. <var>vectors</var></em></dt>
+<dd><p>Return the product of all <var>vectors</var>. <var>vectors</var> may contain
+scalar values, but it may not contain vectors of mixed dimensions.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-vdot"></a>Scheme Procedure: <strong>vdot</strong> <em><var>v1</var> <var>v2</var></em></dt>
+<dd><p>Return the dot product of <var>v1</var> and <var>v2</var>. Both vectors must be
+of the same dimensionality.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-vcross"></a>Scheme Procedure: <strong>vcross</strong> <em><var>v1</var> <var>v2</var></em></dt>
+<dd><p>Return the cross product of the 3D vectors <var>v1</var> and <var>v2</var>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-magnitude"></a>Scheme Procedure: <strong>magnitude</strong> <em><var>v</var></em></dt>
+<dd><p>Return the magnitude of the vector <var>v</var>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-normalize"></a>Scheme Procedure: <strong>normalize</strong> <em><var>v</var></em></dt>
+<dd><p>Return the normalized form of the vector <var>v</var>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-vlerp"></a>Scheme Procedure: <strong>vlerp</strong> <em><var>v1</var> <var>v2</var> <var>alpha</var></em></dt>
+<dd><p>Return the linear interpolation of <var>v1</var> and <var>v2</var> by the scalar
+<var>alpha</var>. <var>alpha</var> is expected to be in the range [0, 1].
+</p></dd></dl>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Rectangles.html#Rectangles" accesskey="n" rel="next">Rectangles</a>, Up: <a href="Math.html#Math" accesskey="u" rel="up">Math</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>