Difference between revisions of "Category:Physics Engine/Vectors"

From Inspired-Lua Wiki
Jump to navigation Jump to search
Line 1: Line 1:
 
+
A vector is a 2-dimensional object with x and y components. Its type is TI.cpVect.  
A vector is a 2-dimensional object with x and y components. Its type is TI.cpVect.
 
  
 
----
 
----
===== Vect =====
 
  
 +
===== Vect  =====
  
<!-- code start-->
+
<!-- code start-->  
<pre style="margin-left:20px; font-size:1.4em; background-color:#fdfdfd">
+
<pre style="margin-left:20px; font-size:1.4em; background-color:#fdfdfd">vector = physics.Vect(x, y)
vector = physics.Vect(x, y)
 
 
vector = physics.Vect(angle)
 
vector = physics.Vect(angle)
 
vector = physics.Vect(vect)
 
vector = physics.Vect(vect)
</pre><!-- code end-->
+
</pre><!-- code end--> <!-- table start -->  
 
+
{| border="1" width="100%" cellspacing="0" cellpadding="4" style="border-color:#eee" class="wikitable sortable"
 
+
|-
<!-- table start -->
+
! Parameter  
{| border=1 width="100%" cellspacing="0" cellpadding="4" style="border-color:#eee" class="wikitable sortable"  
+
! Type  
<!-- header row start -->
+
! Description <!-- header row end -->
! Parameter !! Type !! Description  
 
<!-- header row end -->
 
 
|-
 
|-
| x  
+
| x  
| '''in''' number  
+
| '''in''' number  
| The _x_ component of the vector  
+
| The _x_ component of the vector
 
|-
 
|-
| y  
+
| y  
| '''in''' number  
+
| '''in''' number  
| The _y_ component of the vector  
+
| The _y_ component of the vector
 
|-
 
|-
| angle  
+
| angle  
| '''in''' number  
+
| '''in''' number  
| An angle in radians  
+
| An angle in radians
 
|-
 
|-
| vect  
+
| vect  
| '''in''' physics.Vect  
+
| '''in''' physics.Vect  
| A vector  
+
| A vector
 
|-
 
|-
| vector  
+
| vector  
| '''out''' physics.Vect  
+
| '''out''' physics.Vect  
| A vector  
+
| A vector
|}<!-- table end -->
+
|}
 
+
<!-- table end -->  
<br/>
+
<br> Creates a vector with initial x and y component values. The second form creates a unit vector pointing in direction ''angle''. The third form creates a copy of the input vector.  
Creates a vector with initial x and y component values. The second form creates a unit vector pointing in direction ''angle''. The third form creates a copy of the input vector.
 
  
Introduced in platform.apiLevel = '2.0'
+
Introduced in platform.apiLevel = '2.0'  
  
 
----
 
----
===== add =====
 
  
 +
===== add  =====
  
<!-- code start-->
+
<!-- code start-->  
<pre style="margin-left:20px; font-size:1.4em; background-color:#fdfdfd">
+
<pre style="margin-left:20px; font-size:1.4em; background-color:#fdfdfd">sum = physics.Vect:add(vec)
sum = physics.Vect:add(vec)
+
</pre><!-- code end--> <!-- table start -->  
</pre><!-- code end-->
+
{| border="1" width="100%" cellspacing="0" cellpadding="4" style="border-color:#eee" class="wikitable sortable"
 
+
|-
 
+
! Parameter  
<!-- table start -->
+
! Type  
{| border=1 width="100%" cellspacing="0" cellpadding="4" style="border-color:#eee" class="wikitable sortable"  
+
! Description <!-- header row end -->
<!-- header row start -->
 
! Parameter !! Type !! Description  
 
<!-- header row end -->
 
 
|-
 
|-
| self  
+
| self  
| '''in''' physics.Vect  
+
| '''in''' physics.Vect  
| The input vector  
+
| The input vector
 
|-
 
|-
| vec  
+
| vec  
| '''in''' physics.Vect  
+
| '''in''' physics.Vect  
| A vector to add to ''self''  
+
| A vector to add to ''self''
 
|-
 
|-
| sum  
+
| sum  
| '''out''' physics.Vect  
+
| '''out''' physics.Vect  
| The vector sum of ''self'' and ''vec''  
+
| The vector sum of ''self'' and ''vec''
|}<!-- table end -->
+
|}
 +
<!-- table end -->  
 +
<br> Returns the vector sum of ''self'' and ''vec''.
  
<br/>
+
The Vect class also implements the addition operator (+). Therefore vectors ''v1'' and ''v2'' can be added with the expression ''v1'' + ''v2''.  
Returns the vector sum of ''self'' and ''vec''.
 
  
The Vect class also implements the addition operator (+). Therefore vectors ''v1'' and ''v2'' can be added with the expression ''v1'' + ''v2''.
+
Introduced in platform.apiLevel = '2.0'  
 
 
Introduced in platform.apiLevel = '2.0'
 
  
 
----
 
----
===== clamp =====
 
  
 +
===== clamp  =====
  
<!-- code start-->
+
<!-- code start-->  
<pre style="margin-left:20px; font-size:1.4em; background-color:#fdfdfd">
+
<pre style="margin-left:20px; font-size:1.4em; background-color:#fdfdfd">clamped = physics.Vect:clamp(len)
clamped = physics.Vect:clamp(len)
+
</pre><!-- code end--> <!-- table start -->  
</pre><!-- code end-->
+
{| border="1" width="100%" cellspacing="0" cellpadding="4" style="border-color:#eee" class="wikitable sortable"
 
+
|-
 
+
! Parameter  
<!-- table start -->
+
! Type  
{| border=1 width="100%" cellspacing="0" cellpadding="4" style="border-color:#eee" class="wikitable sortable"  
+
! Description <!-- header row end -->
<!-- header row start -->
 
! Parameter !! Type !! Description  
 
<!-- header row end -->
 
 
|-
 
|-
| self  
+
| self  
| '''in''' physics.Vect  
+
| '''in''' physics.Vect  
| The input vector  
+
| The input vector
 
|-
 
|-
| len  
+
| len  
| '''in''' number  
+
| '''in''' number  
| The maximum length of the vector  
+
| The maximum length of the vector
 
|-
 
|-
| clamped  
+
| clamped  
| '''out''' physics.Vect  
+
| '''out''' physics.Vect  
| A new vector with a length no longer than ''len''  
+
| A new vector with a length no longer than ''len''
|}<!-- table end -->
+
|}
 
+
<!-- table end -->  
<br/>
+
<br> Returns a copy of ''self'' clamped to length ''len''.  
Returns a copy of ''self'' clamped to length ''len''.
 
  
Introduced in platform.apiLevel = '2.0'
+
Introduced in platform.apiLevel = '2.0'  
  
 
----
 
----
===== cross =====
 
  
 +
===== cross  =====
  
<!-- code start-->
+
<!-- code start-->  
<pre style="margin-left:20px; font-size:1.4em; background-color:#fdfdfd">
+
<pre style="margin-left:20px; font-size:1.4em; background-color:#fdfdfd">crossprod = physics.Vect:cross(vec)
crossprod = physics.Vect:cross(vec)
+
</pre><!-- code end--> <!-- table start -->  
</pre><!-- code end-->
+
{| border="1" width="100%" cellspacing="0" cellpadding="4" style="border-color:#eee" class="wikitable sortable"
 
+
|-
 
+
! Parameter  
<!-- table start -->
+
! Type  
{| border=1 width="100%" cellspacing="0" cellpadding="4" style="border-color:#eee" class="wikitable sortable"  
+
! Description <!-- header row end -->
<!-- header row start -->
 
! Parameter !! Type !! Description  
 
<!-- header row end -->
 
 
|-
 
|-
| self  
+
| self  
| '''in''' physics.Vect  
+
| '''in''' physics.Vect  
| The input vector  
+
| The input vector
 
|-
 
|-
| vec  
+
| vec  
| '''in''' physics.Vect  
+
| '''in''' physics.Vect  
| The vector to cross with ''self''  
+
| The vector to cross with ''self''
 
|-
 
|-
| zmag  
+
| zmag  
| '''out''' number  
+
| '''out''' number  
| The z magnitude of the cross product of ''self'' and ''vec''  
+
| The z magnitude of the cross product of ''self'' and ''vec''
|}<!-- table end -->
+
|}
 
+
<!-- table end -->  
<br/>
+
<br> Returns the z magnitude of the cross product of ''self'' and ''vec''.  
Returns the z magnitude of the cross product of ''self'' and ''vec''.
 
  
Introduced in platform.apiLevel = '2.0'
+
Introduced in platform.apiLevel = '2.0'  
  
 
----
 
----
===== dist =====
 
  
 +
===== dist  =====
  
<!-- code start-->
+
<!-- code start-->  
<pre style="margin-left:20px; font-size:1.4em; background-color:#fdfdfd">
+
<pre style="margin-left:20px; font-size:1.4em; background-color:#fdfdfd">dist = physics.Vect:dist(vec)
dist = physics.Vect:dist(vec)
+
</pre><!-- code end--> <!-- table start -->  
</pre><!-- code end-->
+
{| border="1" width="100%" cellspacing="0" cellpadding="4" style="border-color:#eee" class="wikitable sortable"
 
+
|-
 
+
! Parameter  
<!-- table start -->
+
! Type  
{| border=1 width="100%" cellspacing="0" cellpadding="4" style="border-color:#eee" class="wikitable sortable"  
+
! Description <!-- header row end -->
<!-- header row start -->
 
! Parameter !! Type !! Description  
 
<!-- header row end -->
 
 
|-
 
|-
| self  
+
| self  
| '''in''' physics.Vect  
+
| '''in''' physics.Vect  
| The input vector  
+
| The input vector
 
|-
 
|-
| vec  
+
| vec  
| '''in''' physics.Vect  
+
| '''in''' physics.Vect  
| The vector to which to find the distance from ''self''  
+
| The vector to which to find the distance from ''self''
 
|-
 
|-
| dist  
+
| dist  
| '''out''' number  
+
| '''out''' number  
| The distance from ''self'' to ''vec''  
+
| The distance from ''self'' to ''vec''
|}<!-- table end -->
+
|}
 +
<!-- table end -->  
 +
<br> Returns the distance between ''self'' and ''vec''.
  
<br/>
+
Introduced in platform.apiLevel = '2.0'  
Returns the distance between ''self'' and ''vec''.
 
 
 
Introduced in platform.apiLevel = '2.0'
 
  
 
----
 
----
===== distsq =====
 
  
 +
===== distsq  =====
  
<!-- code start-->
+
<!-- code start-->  
<pre style="margin-left:20px; font-size:1.4em; background-color:#fdfdfd">
+
<pre style="margin-left:20px; font-size:1.4em; background-color:#fdfdfd">distsq = physics.Vect:distsq(vec)
distsq = physics.Vect:distsq(vec)
+
</pre><!-- code end--> <!-- table start -->  
</pre><!-- code end-->
+
{| border="1" width="100%" cellspacing="0" cellpadding="4" style="border-color:#eee" class="wikitable sortable"
 
+
|-
 
+
! Parameter  
<!-- table start -->
+
! Type  
{| border=1 width="100%" cellspacing="0" cellpadding="4" style="border-color:#eee" class="wikitable sortable"  
+
! Description <!-- header row end -->
<!-- header row start -->
 
! Parameter !! Type !! Description  
 
<!-- header row end -->
 
 
|-
 
|-
| self  
+
| self  
| '''in''' physics.Vect  
+
| '''in''' physics.Vect  
| The input vector  
+
| The input vector
 
|-
 
|-
| vec  
+
| vec  
| '''in''' physics.Vect  
+
| '''in''' physics.Vect  
| The vector to which to find the distance squared from ''self''  
+
| The vector to which to find the distance squared from ''self''
 
|-
 
|-
| distsq  
+
| distsq  
| '''out''' number  
+
| '''out''' number  
| The distance squared from ''self'' to ''vec''  
+
| The distance squared from ''self'' to ''vec''
|}<!-- table end -->
+
|}
 
+
<!-- table end -->  
<br/>
+
<br> Returns the distance squared between ''self'' and ''vec''. This routine is faster than physics.Vect:dist when you only need to compare distances.  
Returns the distance squared between ''self'' and ''vec''. This routine is faster than {{physics.Vect:dist}} when you only need to compare distances.
 
  
Introduced in platform.apiLevel = '2.0'
+
Introduced in platform.apiLevel = '2.0'  
  
 
----
 
----
===== dot =====
 
  
 +
===== dot  =====
  
<!-- code start-->
+
<!-- code start-->  
<pre style="margin-left:20px; font-size:1.4em; background-color:#fdfdfd">
+
<pre style="margin-left:20px; font-size:1.4em; background-color:#fdfdfd">dotprod = physics.Vect:dot(vec)
dotprod = physics.Vect:dot(vec)
+
</pre><!-- code end--> <!-- table start -->  
</pre><!-- code end-->
+
{| border="1" width="100%" cellspacing="0" cellpadding="4" style="border-color:#eee" class="wikitable sortable"
 
+
|-
 
+
! Parameter  
<!-- table start -->
+
! Type  
{| border=1 width="100%" cellspacing="0" cellpadding="4" style="border-color:#eee" class="wikitable sortable"  
+
! Description <!-- header row end -->
<!-- header row start -->
 
! Parameter !! Type !! Description  
 
<!-- header row end -->
 
 
|-
 
|-
| self  
+
| self  
| '''in''' physics.Vect  
+
| '''in''' physics.Vect  
| The input vector  
+
| The input vector
 
|-
 
|-
| vec  
+
| vec  
| '''in''' physics.Vect  
+
| '''in''' physics.Vect  
| The other vector  
+
| The other vector
 
|-
 
|-
| dotprod  
+
| dotprod  
| '''out''' number  
+
| '''out''' number  
| The scalar dot product of ''self'' and ''vec''  
+
| The scalar dot product of ''self'' and ''vec''
|}<!-- table end -->
+
|}
 +
<!-- table end -->  
 +
<br> Returns the scalar dot product of ''self'' and ''vec''.
  
<br/>
+
Introduced in platform.apiLevel = '2.0'  
Returns the scalar dot product of ''self'' and ''vec''.
 
 
 
Introduced in platform.apiLevel = '2.0'
 
  
 
----
 
----
===== eql =====
 
  
 +
===== eql  =====
  
<!-- code start-->
+
<!-- code start-->  
<pre style="margin-left:20px; font-size:1.4em; background-color:#fdfdfd">
+
<pre style="margin-left:20px; font-size:1.4em; background-color:#fdfdfd">isequ = physics.Vect:eql(vec)
isequ = physics.Vect:eql(vec)
+
</pre><!-- code end--> <!-- table start -->  
</pre><!-- code end-->
+
{| border="1" width="100%" cellspacing="0" cellpadding="4" style="border-color:#eee" class="wikitable sortable"
 
+
|-
 
+
! Parameter  
<!-- table start -->
+
! Type  
{| border=1 width="100%" cellspacing="0" cellpadding="4" style="border-color:#eee" class="wikitable sortable"  
+
! Description <!-- header row end -->
<!-- header row start -->
 
! Parameter !! Type !! Description  
 
<!-- header row end -->
 
 
|-
 
|-
| self  
+
| self  
| '''in''' physics.Vect  
+
| '''in''' physics.Vect  
| The input vector  
+
| The input vector
 
|-
 
|-
| vec  
+
| vec  
| '''in''' physics.Vect  
+
| '''in''' physics.Vect  
| The vector against which to compare with ''self''  
+
| The vector against which to compare with ''self''
 
|-
 
|-
| isequ  
+
| isequ  
| '''out''' boolean  
+
| '''out''' boolean  
| True if the components of ''self'' equal the components of ''vec''  
+
| True if the components of ''self'' equal the components of ''vec''
|}<!-- table end -->
+
|}
 +
<!-- table end -->  
 +
<br> Returns true if the x and y components of ''self'' equal those of ''vec''. Take the usual precautions when comparing floating point numbers for equality.
  
<br/>
+
The Vect class also implements the equal comparison operator (==). Therefore vectors ''v1'' and ''v2'' can be compared with the expression ''v1'' == ''v2''.  
Returns true if the x and y components of ''self'' equal those of ''vec''. Take the usual precautions when comparing floating point numbers for equality.
 
  
The Vect class also implements the equal comparison operator (==). Therefore vectors ''v1'' and ''v2'' can be compared with the expression ''v1'' == ''v2''.
+
Introduced in platform.apiLevel = '2.0'  
 
 
Introduced in platform.apiLevel = '2.0'
 
  
 
----
 
----
===== length =====
 
  
 +
===== length  =====
  
<!-- code start-->
+
<!-- code start-->  
<pre style="margin-left:20px; font-size:1.4em; background-color:#fdfdfd">
+
<pre style="margin-left:20px; font-size:1.4em; background-color:#fdfdfd">len = physics.Vect:length()
len = physics.Vect:length()
+
</pre><!-- code end--> <!-- table start -->  
</pre><!-- code end-->
+
{| border="1" width="100%" cellspacing="0" cellpadding="4" style="border-color:#eee" class="wikitable sortable"
 
+
|-
 
+
! Parameter  
<!-- table start -->
+
! Type  
{| border=1 width="100%" cellspacing="0" cellpadding="4" style="border-color:#eee" class="wikitable sortable"  
+
! Description <!-- header row end -->
<!-- header row start -->
 
! Parameter !! Type !! Description  
 
<!-- header row end -->
 
 
|-
 
|-
| self  
+
| self  
| '''in''' physics.Vect  
+
| '''in''' physics.Vect  
| The input vector  
+
| The input vector
 
|-
 
|-
| len  
+
| len  
| '''out''' number  
+
| '''out''' number  
| The length of vector ''self''  
+
| The length of vector ''self''
|}<!-- table end -->
+
|}
 +
<!-- table end -->  
 +
<br> Returns the magnitude of ''self''.
  
<br/>
+
Introduced in platform.apiLevel = '2.0'  
Returns the magnitude of ''self''.
 
 
 
Introduced in platform.apiLevel = '2.0'
 
  
 
----
 
----
===== lengthsq =====
 
  
 +
===== lengthsq  =====
  
<!-- code start-->
+
<!-- code start-->  
<pre style="margin-left:20px; font-size:1.4em; background-color:#fdfdfd">
+
<pre style="margin-left:20px; font-size:1.4em; background-color:#fdfdfd">lensq = physics.Vect:lengthsq()
lensq = physics.Vect:lengthsq()
+
</pre><!-- code end--> <!-- table start -->  
</pre><!-- code end-->
+
{| border="1" width="100%" cellspacing="0" cellpadding="4" style="border-color:#eee" class="wikitable sortable"
 
+
|-
 
+
! Parameter  
<!-- table start -->
+
! Type  
{| border=1 width="100%" cellspacing="0" cellpadding="4" style="border-color:#eee" class="wikitable sortable"  
+
! Description <!-- header row end -->
<!-- header row start -->
 
! Parameter !! Type !! Description  
 
<!-- header row end -->
 
 
|-
 
|-
| self  
+
| self  
| '''in''' physics.Vect  
+
| '''in''' physics.Vect  
| The input vector  
+
| The input vector
 
|-
 
|-
| lensq  
+
| lensq  
| '''out''' number  
+
| '''out''' number  
| The length squared of vector ''self''  
+
| The length squared of vector ''self''
|}<!-- table end -->
+
|}
 
+
<!-- table end -->  
<br/>
+
<br> Returns the length squared of ''self''. This routine is faster than Vect:length() when you only need to compare lengths.  
Returns the length squared of ''self''. This routine is faster than {{Vect:length()}} when you only need to compare lengths.
 
  
Introduced in platform.apiLevel = '2.0'
+
Introduced in platform.apiLevel = '2.0'  
  
 
----
 
----
===== lerp =====
 
 
 
<!-- code start-->
 
<pre style="margin-left:20px; font-size:1.4em; background-color:#fdfdfd">
 
v = physics.Vect:lerp(vec, f)
 
</pre><!-- code end-->
 
  
 +
===== lerp  =====
  
<!-- table start -->
+
<!-- code start-->
{| border=1 width="100%" cellspacing="0" cellpadding="4" style="border-color:#eee" class="wikitable sortable"  
+
<pre style="margin-left:20px; font-size:1.4em; background-color:#fdfdfd">v = physics.Vect:lerp(vec, f)
<!-- header row start -->
+
</pre><!-- code end--> <!-- table start -->  
! Parameter !! Type !! Description
+
{| border="1" width="100%" cellspacing="0" cellpadding="4" style="border-color:#eee" class="wikitable sortable"
<!-- header row end -->
 
 
|-
 
|-
|  self
+
! Parameter
|  '''in''' physics.Vect
+
! Type
|  The input vector
+
! Description <!-- header row end -->
 
|-
 
|-
| vec
+
| self
| '''in''' physics.Vect  
+
| '''in''' physics.Vect  
| The other vector  
+
| The input vector
 
|-
 
|-
| f
+
| vec
| '''in''' number
+
| '''in''' physics.Vect
| ''f_ is a fractional number from 0 to 1 representing the proportion of distance between _self'' and ''vec''
+
| The other vector
 
|-
 
|-
| v
+
| f
| '''out''' physics.Vect
+
| '''in''' number
| A vector interpolated between ''self'' and ''vec''
+
| ''f_ is a fractional number from 0 to 1 representing the proportion of distance between _self'' and ''vec''
|}<!-- table end -->
 
 
 
<br/>
 
Returns the linear interpolation between ''self'' and ''vec'' as a vector. ''f_ is the fraction of distance between _self'' and ''vec''.
 
{|  width="100%" style="padding: 20px; margin-left:20px; border:solid; border-color:#aaa; border-width:0px; text-align:left; background-color:#FFFFCE;"
 
 
|-
 
|-
| <span style="color:#AAAA00">'''NOTE'''</span><hr>
+
| v
|-
+
| '''out''' physics.Vect
 
+
| A vector interpolated between ''self'' and ''vec''
 +
|}
 +
<!-- table end -->  
 +
<br> Returns the linear interpolation between ''self'' and ''vec'' as a vector. ''f_ is the fraction of distance between _self'' and ''vec''.
 
<div style="white-space: pre">
 
<div style="white-space: pre">
 +
May not behave as expected for f larger than 1.0 or less than 0.
 +
</div>
 +
{| width="100%" style="padding: 20px; margin-left:20px; border:solid; border-color:#aaa; border-width:0px; text-align:left; background-color:#FFFFCE;"
 +
|}
  
May not behave as expected for f larger than 1.0 or less than 0.
+
<br>  
 
 
</div>
 
|}
 
<br/>
 
  
Introduced in platform.apiLevel = '2.0'
+
Introduced in platform.apiLevel = '2.0'  
  
 
----
 
----
===== lerpconst =====
 
 
 
<!-- code start-->
 
<pre style="margin-left:20px; font-size:1.4em; background-color:#fdfdfd">
 
v = physics.Vect:lerpconst(vec, d)
 
</pre><!-- code end-->
 
  
 +
===== lerpconst  =====
  
<!-- table start -->
+
<!-- code start-->
{| border=1 width="100%" cellspacing="0" cellpadding="4" style="border-color:#eee" class="wikitable sortable"  
+
<pre style="margin-left:20px; font-size:1.4em; background-color:#fdfdfd">v = physics.Vect:lerpconst(vec, d)
<!-- header row start -->
+
</pre><!-- code end--> <!-- table start -->  
! Parameter !! Type !! Description
+
{| border="1" width="100%" cellspacing="0" cellpadding="4" style="border-color:#eee" class="wikitable sortable"
<!-- header row end -->
 
 
|-
 
|-
|  self
+
! Parameter
|  '''in''' physics.Vect
+
! Type
|  The input vector
+
! Description <!-- header row end -->
 
|-
 
|-
| vec
+
| self
| '''in''' physics.Vect  
+
| '''in''' physics.Vect  
| The other vector  
+
| The input vector
 
|-
 
|-
| d
+
| vec
| '''in''' number
+
| '''in''' physics.Vect
| The distance from ''self'' to ''vec'' to interpolate a new vector  
+
| The other vector
 
|-
 
|-
| v
+
| d
| '''out''' physics.Vect
+
| '''in''' number
|
+
| The distance from ''self'' to ''vec'' to interpolate a new vector
|}<!-- table end -->
 
 
 
<br/>
 
Returns a vector interpolated from ''self'' towards ''vec'' with length _d_.
 
{|  width="100%" style="padding: 20px; margin-left:20px; border:solid; border-color:#aaa; border-width:0px; text-align:left; background-color:#FFFFCE;"
 
 
|-
 
|-
| <span style="color:#AAAA00">'''NOTE'''</span><hr>
+
| v
|-
+
| '''out''' physics.Vect
 
+
|
 +
|}
 +
<!-- table end -->  
 +
<br> Returns a vector interpolated from ''self'' towards ''vec'' with length _d_.
 
<div style="white-space: pre">
 
<div style="white-space: pre">
 +
May not behave as expected for d larger than 1.0 or less than 0.
 +
</div>
 +
{| width="100%" style="padding: 20px; margin-left:20px; border:solid; border-color:#aaa; border-width:0px; text-align:left; background-color:#FFFFCE;"
 +
|}
  
May not behave as expected for d larger than 1.0 or less than 0.
+
<br>
  
</div>
+
Introduced in platform.apiLevel = '2.0'  
|}
 
<br/>
 
 
 
Introduced in platform.apiLevel = '2.0'
 
  
 
----
 
----
===== mult =====
 
  
 +
===== mult  =====
  
<!-- code start-->
+
<!-- code start-->  
<pre style="margin-left:20px; font-size:1.4em; background-color:#fdfdfd">
+
<pre style="margin-left:20px; font-size:1.4em; background-color:#fdfdfd">v = physics.Vect:mult(factor)
v = physics.Vect:mult(factor)
+
</pre><!-- code end--> <!-- table start -->  
</pre><!-- code end-->
+
{| border="1" width="100%" cellspacing="0" cellpadding="4" style="border-color:#eee" class="wikitable sortable"
 
+
|-
 
+
! Parameter  
<!-- table start -->
+
! Type  
{| border=1 width="100%" cellspacing="0" cellpadding="4" style="border-color:#eee" class="wikitable sortable"  
+
! Description <!-- header row end -->
<!-- header row start -->
 
! Parameter !! Type !! Description  
 
<!-- header row end -->
 
 
|-
 
|-
| self  
+
| self  
| '''in''' physics.Vect  
+
| '''in''' physics.Vect  
| The input vector  
+
| The input vector
 
|-
 
|-
| factor  
+
| factor  
| '''in''' number  
+
| '''in''' number  
| The value to multiply by ''self''  
+
| The value to multiply by ''self''
 
|-
 
|-
| v  
+
| v  
| '''out''' physics.Vect  
+
| '''out''' physics.Vect  
| The resulting scaled vector  
+
| The resulting scaled vector
|}<!-- table end -->
+
|}
 +
<!-- table end -->  
 +
<br> Multiplies a vector by a factor.
  
<br/>
+
Introduced in platform.apiLevel = '2.0'  
Multiplies a vector by a factor.
 
 
 
Introduced in platform.apiLevel = '2.0'
 
  
 
----
 
----
===== near =====
 
  
 +
===== near  =====
  
<!-- code start-->
+
<!-- code start-->  
<pre style="margin-left:20px; font-size:1.4em; background-color:#fdfdfd">
+
<pre style="margin-left:20px; font-size:1.4em; background-color:#fdfdfd">isnear = physics.Vect:near(vec, distance)
isnear = physics.Vect:near(vec, distance)
+
</pre><!-- code end--> <!-- table start -->  
</pre><!-- code end-->
+
{| border="1" width="100%" cellspacing="0" cellpadding="4" style="border-color:#eee" class="wikitable sortable"
 
+
|-
 
+
! Parameter  
<!-- table start -->
+
! Type  
{| border=1 width="100%" cellspacing="0" cellpadding="4" style="border-color:#eee" class="wikitable sortable"  
+
! Description <!-- header row end -->
<!-- header row start -->
 
! Parameter !! Type !! Description  
 
<!-- header row end -->
 
 
|-
 
|-
| self  
+
| self  
| '''in''' physics.Vect  
+
| '''in''' physics.Vect  
| The input vector  
+
| The input vector
 
|-
 
|-
| vec  
+
| vec  
| '''in''' physics.Vect  
+
| '''in''' physics.Vect  
| The value to multiply by ''self''  
+
| The value to multiply by ''self''
 
|-
 
|-
| distance  
+
| distance  
| '''in''' number  
+
| '''in''' number  
| The distance from ''vec''  
+
| The distance from ''vec''
 
|-
 
|-
| isnear  
+
| isnear  
| '''out''' boolean  
+
| '''out''' boolean  
| True if ''self'' is within ''distance'' of ''vec''  
+
| True if ''self'' is within ''distance'' of ''vec''
|}<!-- table end -->
+
|}
 
+
<!-- table end -->  
<br/>
+
<br> Determines if ''self'' is near another vector.  
Determines if ''self'' is near another vector.
 
  
Introduced in platform.apiLevel = '2.0'
+
Introduced in platform.apiLevel = '2.0'  
  
 
----
 
----
===== neg =====
 
  
 +
===== neg  =====
  
<!-- code start-->
+
<!-- code start-->  
<pre style="margin-left:20px; font-size:1.4em; background-color:#fdfdfd">
+
<pre style="margin-left:20px; font-size:1.4em; background-color:#fdfdfd">v = physics.Vect:neg()
v = physics.Vect:neg()
+
</pre><!-- code end--> <!-- table start -->  
</pre><!-- code end-->
+
{| border="1" width="100%" cellspacing="0" cellpadding="4" style="border-color:#eee" class="wikitable sortable"
 
+
|-
 
+
! Parameter  
<!-- table start -->
+
! Type  
{| border=1 width="100%" cellspacing="0" cellpadding="4" style="border-color:#eee" class="wikitable sortable"  
+
! Description <!-- header row end -->
<!-- header row start -->
 
! Parameter !! Type !! Description  
 
<!-- header row end -->
 
 
|-
 
|-
| self  
+
| self  
| '''in''' physics.Vect  
+
| '''in''' physics.Vect  
| The input vector  
+
| The input vector
 
|-
 
|-
| v  
+
| v  
| '''out''' physics.Vect  
+
| '''out''' physics.Vect  
| The resulting negated vector  
+
| The resulting negated vector
|}<!-- table end -->
+
|}
 
+
<!-- table end -->  
<br/>
+
<br> Returns the negative of ''self''.  
Returns the negative of ''self''.
 
  
The Vect class also implements the unary minus operator (<nowiki>-</nowiki>''self'').
+
The Vect class also implements the unary minus operator (<nowiki>-</nowiki>''self'').  
  
Introduced in platform.apiLevel = '2.0'
+
Introduced in platform.apiLevel = '2.0'  
  
 
----
 
----
  
 +
<br>
  
===== normalize =====
+
===== normalize =====
  
 
+
<!-- code start-->  
<!-- code start-->
+
<pre style="margin-left:20px; font-size:1.4em; background-color:#fdfdfd">normvec = physics.Vect:normalize()
<pre style="margin-left:20px; font-size:1.4em; background-color:#fdfdfd">
+
</pre><!-- code end--> <!-- table start -->  
normvec = physics.Vect:normalize()
+
{| border="1" width="100%" cellspacing="0" cellpadding="4" style="border-color:#eee" class="wikitable sortable"
</pre><!-- code end-->
+
|-
 
+
! Parameter  
 
+
! Type  
<!-- table start -->
+
! Description <!-- header row end -->
{| border=1 width="100%" cellspacing="0" cellpadding="4" style="border-color:#eee" class="wikitable sortable"  
 
<!-- header row start -->
 
! Parameter !! Type !! Description  
 
<!-- header row end -->
 
 
|-
 
|-
| self  
+
| self  
| '''in''' physics.Vect  
+
| '''in''' physics.Vect  
| The input vector  
+
| The input vector
 
|-
 
|-
| normvec  
+
| normvec  
| '''out''' physics.Vect  
+
| '''out''' physics.Vect  
| The resulting normalized vector  
+
| The resulting normalized vector
|}<!-- table end -->
+
|}
 +
<!-- table end -->  
 +
<br> Returns a normalized copy of ''self''. The length of a normal vector is 1.
  
<br/>
+
Introduced in platform.apiLevel = '2.0'  
Returns a normalized copy of ''self''. The length of a normal vector is 1.
 
 
 
Introduced in platform.apiLevel = '2.0'
 
  
 
----
 
----
===== normalizeSafe =====
 
  
 +
===== normalizeSafe  =====
  
<!-- code start-->
+
<!-- code start-->  
<pre style="margin-left:20px; font-size:1.4em; background-color:#fdfdfd">
+
<pre style="margin-left:20px; font-size:1.4em; background-color:#fdfdfd">normvec = physics.Vect:normalizeSafe()
normvec = physics.Vect:normalizeSafe()
+
</pre><!-- code end--> <!-- table start -->  
</pre><!-- code end-->
+
{| border="1" width="100%" cellspacing="0" cellpadding="4" style="border-color:#eee" class="wikitable sortable"
 
+
|-
 
+
! Parameter  
<!-- table start -->
+
! Type  
{| border=1 width="100%" cellspacing="0" cellpadding="4" style="border-color:#eee" class="wikitable sortable"  
+
! Description <!-- header row end -->
<!-- header row start -->
 
! Parameter !! Type !! Description  
 
<!-- header row end -->
 
 
|-
 
|-
| self  
+
| self  
| '''in''' physics.Vect  
+
| '''in''' physics.Vect  
| The input vector  
+
| The input vector
 
|-
 
|-
| normvec  
+
| normvec  
| '''out''' physics.Vect  
+
| '''out''' physics.Vect  
| The resulting normalized vector  
+
| The resulting normalized vector
|}<!-- table end -->
+
|}
 
+
<!-- table end -->  
<br/>
+
<br> Returns a normalized copy of ''self''. Protects against division by zero.  
Returns a normalized copy of ''self''. Protects against division by zero.
 
  
Introduced in platform.apiLevel = '2.0'
+
Introduced in platform.apiLevel = '2.0'  
  
 
----
 
----
===== perp =====
 
  
 +
===== perp  =====
  
<!-- code start-->
+
<!-- code start-->  
<pre style="margin-left:20px; font-size:1.4em; background-color:#fdfdfd">
+
<pre style="margin-left:20px; font-size:1.4em; background-color:#fdfdfd">perpvec = physics.Vect:perp()
perpvec = physics.Vect:perp()
+
</pre><!-- code end--> <!-- table start -->  
</pre><!-- code end-->
+
{| border="1" width="100%" cellspacing="0" cellpadding="4" style="border-color:#eee" class="wikitable sortable"
 
+
|-
 
+
! Parameter  
<!-- table start -->
+
! Type  
{| border=1 width="100%" cellspacing="0" cellpadding="4" style="border-color:#eee" class="wikitable sortable"  
+
! Description <!-- header row end -->
<!-- header row start -->
 
! Parameter !! Type !! Description  
 
<!-- header row end -->
 
 
|-
 
|-
| self  
+
| self  
| '''in''' physics.Vect  
+
| '''in''' physics.Vect  
| The input vector  
+
| The input vector
 
|-
 
|-
| perpvec  
+
| perpvec  
| '''out''' physics.Vect  
+
| '''out''' physics.Vect  
| The resulting perpendicular vector  
+
| The resulting perpendicular vector
|}<!-- table end -->
+
|}
 +
<!-- table end -->  
 +
<br> Returns a vector perpendicular to ''self''. (90 degree rotation)
  
<br/>
+
Introduced in platform.apiLevel = '2.0'  
Returns a vector perpendicular to ''self''. (90 degree rotation)
 
 
 
Introduced in platform.apiLevel = '2.0'
 
  
 
----
 
----
===== project =====
 
  
 +
===== project  =====
  
<!-- code start-->
+
<!-- code start-->  
<pre style="margin-left:20px; font-size:1.4em; background-color:#fdfdfd">
+
<pre style="margin-left:20px; font-size:1.4em; background-color:#fdfdfd">pvec = physics.Vect:project(vec)
pvec = physics.Vect:project(vec)
+
</pre><!-- code end--> <!-- table start -->  
</pre><!-- code end-->
+
{| border="1" width="100%" cellspacing="0" cellpadding="4" style="border-color:#eee" class="wikitable sortable"
 
+
|-
 
+
! Parameter  
<!-- table start -->
+
! Type  
{| border=1 width="100%" cellspacing="0" cellpadding="4" style="border-color:#eee" class="wikitable sortable"  
+
! Description <!-- header row end -->
<!-- header row start -->
 
! Parameter !! Type !! Description  
 
<!-- header row end -->
 
 
|-
 
|-
| self  
+
| self  
| '''in''' physics.Vect  
+
| '''in''' physics.Vect  
| The input vector  
+
| The input vector
 
|-
 
|-
| vec  
+
| vec  
| '''in''' physics.Vect  
+
| '''in''' physics.Vect  
| The other vector  
+
| The other vector
 
|-
 
|-
| pvec  
+
| pvec  
| '''out''' physics.Vect  
+
| '''out''' physics.Vect  
| The vector of ''self'' projected onto ''vec''  
+
| The vector of ''self'' projected onto ''vec''
|}<!-- table end -->
+
|}
 
+
<!-- table end -->  
<br/>
+
<br> Computes the projection of ''self'' onto another vector.  
Computes the projection of ''self'' onto another vector.
 
  
Introduced in platform.apiLevel = '2.0'
+
Introduced in platform.apiLevel = '2.0'  
  
 
----
 
----
===== rotate =====
 
  
 +
===== rotate  =====
  
<!-- code start-->
+
<!-- code start-->  
<pre style="margin-left:20px; font-size:1.4em; background-color:#fdfdfd">
+
<pre style="margin-left:20px; font-size:1.4em; background-color:#fdfdfd">rvec = physics.Vect:rotate(vec)
rvec = physics.Vect:rotate(vec)
+
</pre><!-- code end--> <!-- table start -->  
</pre><!-- code end-->
+
{| border="1" width="100%" cellspacing="0" cellpadding="4" style="border-color:#eee" class="wikitable sortable"
 
+
|-
 
+
! Parameter  
<!-- table start -->
+
! Type  
{| border=1 width="100%" cellspacing="0" cellpadding="4" style="border-color:#eee" class="wikitable sortable"  
+
! Description <!-- header row end -->
<!-- header row start -->
 
! Parameter !! Type !! Description  
 
<!-- header row end -->
 
 
|-
 
|-
| self  
+
| self  
| '''in''' physics.Vect  
+
| '''in''' physics.Vect  
| The input vector  
+
| The input vector
 
|-
 
|-
| vec  
+
| vec  
| '''in''' physics.Vect  
+
| '''in''' physics.Vect  
| The other vector  
+
| The other vector
 
|-
 
|-
| rvec  
+
| rvec  
| '''out''' physics.Vect  
+
| '''out''' physics.Vect  
| The resulting rotated vector  
+
| The resulting rotated vector
|}<!-- table end -->
+
|}
 
+
<!-- table end -->  
<br/>
+
<br> Uses complex multiplication to rotate ''self'' by ''vec''. Scaling will occur if ''self'' is not a unit vector.  
Uses complex multiplication to rotate ''self'' by ''vec''. Scaling will occur if ''self'' is not a unit vector.
 
  
Introduced in platform.apiLevel = '2.0'
+
Introduced in platform.apiLevel = '2.0'  
  
 
----
 
----
===== rperp =====
 
  
 +
===== rperp  =====
  
<!-- code start-->
+
<!-- code start-->  
<pre style="margin-left:20px; font-size:1.4em; background-color:#fdfdfd">
+
<pre style="margin-left:20px; font-size:1.4em; background-color:#fdfdfd">perpvec = physics.Vect:rperp()
perpvec = physics.Vect:rperp()
+
</pre><!-- code end--> <!-- table start -->  
</pre><!-- code end-->
+
{| border="1" width="100%" cellspacing="0" cellpadding="4" style="border-color:#eee" class="wikitable sortable"
 
+
|-
 
+
! Parameter  
<!-- table start -->
+
! Type  
{| border=1 width="100%" cellspacing="0" cellpadding="4" style="border-color:#eee" class="wikitable sortable"  
+
! Description <!-- header row end -->
<!-- header row start -->
 
! Parameter !! Type !! Description  
 
<!-- header row end -->
 
 
|-
 
|-
| self  
+
| self  
| '''in''' physics.Vect  
+
| '''in''' physics.Vect  
| The input vector  
+
| The input vector
 
|-
 
|-
| perpvec  
+
| perpvec  
| '''out''' physics.Vect  
+
| '''out''' physics.Vect  
| The resulting perpendicular vector  
+
| The resulting perpendicular vector
|}<!-- table end -->
+
|}
 +
<!-- table end -->  
 +
<br> Returns a vector perpendicular to ''self''. (90 degree rotation)
  
<br/>
+
Introduced in platform.apiLevel = '2.0'  
Returns a vector perpendicular to ''self''. (90 degree rotation)
 
 
 
Introduced in platform.apiLevel = '2.0'
 
  
 
----
 
----
===== setx =====
 
  
 +
===== setx  =====
  
<!-- code start-->
+
<!-- code start-->  
<pre style="margin-left:20px; font-size:1.4em; background-color:#fdfdfd">
+
<pre style="margin-left:20px; font-size:1.4em; background-color:#fdfdfd">self = physics.Vect:setx(x)
self = physics.Vect:setx(x)
+
</pre><!-- code end--> <!-- table start -->  
</pre><!-- code end-->
+
{| border="1" width="100%" cellspacing="0" cellpadding="4" style="border-color:#eee" class="wikitable sortable"
 
+
|-
 
+
! Parameter  
<!-- table start -->
+
! Type  
{| border=1 width="100%" cellspacing="0" cellpadding="4" style="border-color:#eee" class="wikitable sortable"  
+
! Description <!-- header row end -->
<!-- header row start -->
 
! Parameter !! Type !! Description  
 
<!-- header row end -->
 
 
|-
 
|-
| self  
+
| self  
| '''in''' physics.Vect  
+
| '''in''' physics.Vect  
| The vector to modify  
+
| The vector to modify
 
|-
 
|-
| x  
+
| x  
| '''in''' number  
+
| '''in''' number  
| The new value of the _x_ component of the vector  
+
| The new value of the _x_ component of the vector
 
|-
 
|-
| self  
+
| self  
| '''out''' physics.Vect  
+
| '''out''' physics.Vect  
| The input vector is returned as the output  
+
| The input vector is returned as the output
|}<!-- table end -->
+
|}
 
+
<!-- table end -->  
<br/>
+
<br> Changes the value of the ''x_ component of _self''. Returns ''self''.  
Changes the value of the ''x_ component of _self''. Returns ''self''.
 
  
Introduced in platform.apiLevel = '2.0'
+
Introduced in platform.apiLevel = '2.0'  
  
 
----
 
----
===== sety =====
 
  
 +
===== sety  =====
  
<!-- code start-->
+
<!-- code start-->  
<pre style="margin-left:20px; font-size:1.4em; background-color:#fdfdfd">
+
<pre style="margin-left:20px; font-size:1.4em; background-color:#fdfdfd">self = physics.Vect:sety(y)
self = physics.Vect:sety(y)
+
</pre><!-- code end--> <!-- table start -->  
</pre><!-- code end-->
+
{| border="1" width="100%" cellspacing="0" cellpadding="4" style="border-color:#eee" class="wikitable sortable"
 
+
|-
 
+
! Parameter  
<!-- table start -->
+
! Type  
{| border=1 width="100%" cellspacing="0" cellpadding="4" style="border-color:#eee" class="wikitable sortable"  
+
! Description <!-- header row end -->
<!-- header row start -->
 
! Parameter !! Type !! Description  
 
<!-- header row end -->
 
 
|-
 
|-
| self  
+
| self  
| '''in''' physics.Vect  
+
| '''in''' physics.Vect  
| The vector to modify  
+
| The vector to modify
 
|-
 
|-
| y  
+
| y  
| '''in''' number  
+
| '''in''' number  
| The new value of the _y_ component of the vector  
+
| The new value of the _y_ component of the vector
 
|-
 
|-
| self  
+
| self  
| '''out''' physics.Vect  
+
| '''out''' physics.Vect  
| The input vector is returned as the output  
+
| The input vector is returned as the output
|}<!-- table end -->
+
|}
 
+
<!-- table end -->  
<br/>
+
<br> Changes the value of the ''y_ component of _self''. Returns ''self''.  
Changes the value of the ''y_ component of _self''. Returns ''self''.
 
  
Introduced in platform.apiLevel = '2.0'
+
Introduced in platform.apiLevel = '2.0'  
  
 
----
 
----
===== slerp =====
 
  
 +
===== slerp  =====
  
<!-- code start-->
+
<!-- code start-->  
<pre style="margin-left:20px; font-size:1.4em; background-color:#fdfdfd">
+
<pre style="margin-left:20px; font-size:1.4em; background-color:#fdfdfd">v = physics.Vect:slerp(vec, f)
v = physics.Vect:slerp(vec, f)
+
</pre><!-- code end--> <!-- table start -->  
</pre><!-- code end-->
+
{| border="1" width="100%" cellspacing="0" cellpadding="4" style="border-color:#eee" class="wikitable sortable"
 
+
|-
 
+
! Parameter  
<!-- table start -->
+
! Type  
{| border=1 width="100%" cellspacing="0" cellpadding="4" style="border-color:#eee" class="wikitable sortable"  
+
! Description <!-- header row end -->
<!-- header row start -->
 
! Parameter !! Type !! Description  
 
<!-- header row end -->
 
 
|-
 
|-
| self  
+
| self  
| '''in''' physics.Vect  
+
| '''in''' physics.Vect  
| A unit vector  
+
| A unit vector
 
|-
 
|-
| vec  
+
| vec  
| '''in''' physics.Vect  
+
| '''in''' physics.Vect  
| The other unit vector  
+
| The other unit vector
 
|-
 
|-
| f  
+
| f  
| '''in''' number  
+
| '''in''' number  
| ''f_ is a fractional number from 0 to 1 representing the proportion of distance between _self'' and ''vec''  
+
| ''f_ is a fractional number from 0 to 1 representing the proportion of distance between _self'' and ''vec''
 
|-
 
|-
| v  
+
| v  
| '''out''' physics.Vect  
+
| '''out''' physics.Vect  
| A vector interpolated between ''self'' and ''vec''  
+
| A vector interpolated between ''self'' and ''vec''
|}<!-- table end -->
+
|}
 
+
<!-- table end -->  
<br/>
+
<br> Computes a spherical linear interpolation between unit vectors ''self'' and ''vec''.  
Computes a spherical linear interpolation between unit vectors ''self'' and ''vec''.
+
<div style="white-space: pre">
 +
See [[http://en.wikipedia.org/wiki/Slerp http://en.wikipedia.org/wiki/Slerp]] for a discussion of the meaning, value, and usage of spherical linear interpolation.
 +
</div>
 
{| width="100%" style="padding: 20px; margin-left:20px; border:solid; border-color:#aaa; border-width:0px; text-align:left; background-color:#D8E4F1;"
 
{| width="100%" style="padding: 20px; margin-left:20px; border:solid; border-color:#aaa; border-width:0px; text-align:left; background-color:#D8E4F1;"
 
|-
 
|-
| <span style="color:#0000AA">'''INFO'''</span><hr>
+
|}
|-
 
  
<div style="white-space: pre">
+
<br> <!-- code start-->  
  
See [[http://en.wikipedia.org/wiki/Slerp http://en.wikipedia.org/wiki/Slerp]] for a discussion of the meaning, value, and usage of spherical linear interpolation.
+
===== physics.Vect:slerp  =====
  
</div>
+
----
|}
+
<pre style="margin-left:20px; font-size:1.4em; background-color:#fdfdfd">local vect1 = physics.Vect(math.pi/3) -- unit vector with angle pi/3 radians
<br/>
 
 
 
<!-- code start-->
 
<h5 style="text-align:center">physics.Vect:slerp</h5><hr>
 
<pre style="margin-left:20px; font-size:1.4em; background-color:#fdfdfd">
 
local vect1 = physics.Vect(math.pi/3) -- unit vector with angle pi/3 radians
 
 
local vect2 = physics.Vect(math.pi/2) -- unit vector with angle pi/2 radians
 
local vect2 = physics.Vect(math.pi/2) -- unit vector with angle pi/2 radians
 
local result = vect1:slerp(vect2, 0.55) -- compute spherical linear interpolation
 
local result = vect1:slerp(vect2, 0.55) -- compute spherical linear interpolation
</pre><!-- code end-->
+
</pre><!-- code end--> <div style="white-space: pre">
 +
This routine computes meaningful results only when the two inputs are unit vectors.
 +
 
 +
May not behave as expected for f larger than 1.0 or less than 0.
 +
</div>  
 
{| width="100%" style="padding: 20px; margin-left:20px; border:solid; border-color:#aaa; border-width:0px; text-align:left; background-color:#FFFFCE;"
 
{| width="100%" style="padding: 20px; margin-left:20px; border:solid; border-color:#aaa; border-width:0px; text-align:left; background-color:#FFFFCE;"
 
|-
 
|-
| <span style="color:#AAAA00">'''NOTE''':</span> '''Notes'''<hr>
+
| <span style="color:#AAAA00">'''NOTE''':</span> '''Notes'''  
|-
+
----
  
<div style="white-space: pre">
+
|}
This routine computes meaningful results only when the two inputs are unit vectors.
 
  
May not behave as expected for f larger than 1.0 or less than 0.
+
<br>  
</div>
 
|}
 
<br/>
 
  
Introduced in platform.apiLevel = '2.0'
+
Introduced in platform.apiLevel = '2.0'  
  
 
----
 
----
===== slerpconst =====
 
  
 +
===== slerpconst  =====
  
<!-- code start-->
+
<!-- code start-->  
<pre style="margin-left:20px; font-size:1.4em; background-color:#fdfdfd">
+
<pre style="margin-left:20px; font-size:1.4em; background-color:#fdfdfd">v = physics.Vect:slerpconst(vec, angle)
v = physics.Vect:slerpconst(vec, angle)
+
</pre><!-- code end--> <!-- table start -->  
</pre><!-- code end-->
+
{| border="1" width="100%" cellspacing="0" cellpadding="4" style="border-color:#eee" class="wikitable sortable"
 
+
|-
 
+
! Parameter  
<!-- table start -->
+
! Type  
{| border=1 width="100%" cellspacing="0" cellpadding="4" style="border-color:#eee" class="wikitable sortable"  
+
! Description <!-- header row end -->
<!-- header row start -->
 
! Parameter !! Type !! Description  
 
<!-- header row end -->
 
 
|-
 
|-
| self  
+
| self  
| '''in''' physics.Vect  
+
| '''in''' physics.Vect  
| A unit vector  
+
| A unit vector
 
|-
 
|-
| vec  
+
| vec  
| '''in''' physics.Vect  
+
| '''in''' physics.Vect  
| The other unit vector  
+
| The other unit vector
 
|-
 
|-
| angle  
+
| angle  
| '''in''' number  
+
| '''in''' number  
| The maximum angle between ''self'' and ''vec'' to interpolate a new vector  
+
| The maximum angle between ''self'' and ''vec'' to interpolate a new vector
 
|-
 
|-
| v  
+
| v  
| '''out''' physics.Vect  
+
| '''out''' physics.Vect  
|
+
|  
|}<!-- table end -->
+
|}
 
+
<!-- table end -->  
<br/>
+
<br> Returns the spherical linear interpolation from ''self'' towards ''vec'' but by no more than ''angle'' in radians.  
Returns the spherical linear interpolation from ''self'' towards ''vec'' but by no more than ''angle'' in radians.
+
<div style="white-space: pre">
 +
See [[http://en.wikipedia.org/wiki/Slerp http://en.wikipedia.org/wiki/Slerp]] for a discussion of the meaning, value, and usage of spherical linear interpolation.
 +
</div>
 
{| width="100%" style="padding: 20px; margin-left:20px; border:solid; border-color:#aaa; border-width:0px; text-align:left; background-color:#D8E4F1;"
 
{| width="100%" style="padding: 20px; margin-left:20px; border:solid; border-color:#aaa; border-width:0px; text-align:left; background-color:#D8E4F1;"
|-
+
|}
|  <span style="color:#0000AA">'''INFO'''</span><hr>
 
|-
 
  
 +
<br>
 
<div style="white-space: pre">
 
<div style="white-space: pre">
 
+
This routine computes meaningful results only when the two inputs are unit vectors.  
See [[http://en.wikipedia.org/wiki/Slerp http://en.wikipedia.org/wiki/Slerp]] for a discussion of the meaning, value, and usage of spherical linear interpolation.
+
</div>  
 
 
</div>
 
|}
 
<br/>
 
 
{| width="100%" style="padding: 20px; margin-left:20px; border:solid; border-color:#aaa; border-width:0px; text-align:left; background-color:#FFFFCE;"
 
{| width="100%" style="padding: 20px; margin-left:20px; border:solid; border-color:#aaa; border-width:0px; text-align:left; background-color:#FFFFCE;"
 
|-
 
|-
| <span style="color:#AAAA00">'''NOTE''':</span> '''NOTE'''<hr>
+
| <span style="color:#AAAA00">'''NOTE''':</span> '''NOTE'''  
|-
+
----
  
<div style="white-space: pre">
 
This routine computes meaningful results only when the two inputs are unit vectors.
 
</div>
 
 
|}
 
|}
<br/>
 
  
Introduced in platform.apiLevel = '2.0'
+
<br>
 +
 
 +
Introduced in platform.apiLevel = '2.0'  
  
 
----
 
----
===== sub =====
 
  
 +
===== sub  =====
  
<!-- code start-->
+
<!-- code start-->  
<pre style="margin-left:20px; font-size:1.4em; background-color:#fdfdfd">
+
<pre style="margin-left:20px; font-size:1.4em; background-color:#fdfdfd">diff = physics.Vect:sub(vec)
diff = physics.Vect:sub(vec)
+
</pre><!-- code end--> <!-- table start -->  
</pre><!-- code end-->
+
{| border="1" width="100%" cellspacing="0" cellpadding="4" style="border-color:#eee" class="wikitable sortable"
 
+
|-
 
+
! Parameter  
<!-- table start -->
+
! Type  
{| border=1 width="100%" cellspacing="0" cellpadding="4" style="border-color:#eee" class="wikitable sortable"  
+
! Description <!-- header row end -->
<!-- header row start -->
 
! Parameter !! Type !! Description  
 
<!-- header row end -->
 
 
|-
 
|-
| self  
+
| self  
| '''in''' physics.Vect  
+
| '''in''' physics.Vect  
| The input vector  
+
| The input vector
 
|-
 
|-
| vec  
+
| vec  
| '''in''' physics.Vect  
+
| '''in''' physics.Vect  
| A vector to subtract from ''self''  
+
| A vector to subtract from ''self''
 
|-
 
|-
| diff  
+
| diff  
| '''out''' physics.Vect  
+
| '''out''' physics.Vect  
| The vector difference between ''self'' and ''vec''  
+
| The vector difference between ''self'' and ''vec''
|}<!-- table end -->
+
|}
 +
<!-- table end -->  
 +
<br> Returns the vector difference of ''self'' and ''vec''.
  
<br/>
+
The Vect class also implements the subtraction operator (-). Therefore vector ''v2'' can be subtracted from ''v1'' with the expression ''v1'' <nowiki>-</nowiki> ''v2''.  
Returns the vector difference of ''self'' and ''vec''.
 
  
The Vect class also implements the subtraction operator (-). Therefore vector ''v2'' can be subtracted from ''v1'' with the expression ''v1'' <nowiki>-</nowiki> ''v2''.
+
Introduced in platform.apiLevel = '2.0'  
 
 
Introduced in platform.apiLevel = '2.0'
 
  
 
----
 
----
===== toangle =====
 
  
 +
===== toangle  =====
  
<!-- code start-->
+
<!-- code start-->  
<pre style="margin-left:20px; font-size:1.4em; background-color:#fdfdfd">
+
<pre style="margin-left:20px; font-size:1.4em; background-color:#fdfdfd">angle = physics.Vect:toangle()
angle = physics.Vect:toangle()
+
</pre><!-- code end--> <!-- table start -->  
</pre><!-- code end-->
+
{| border="1" width="100%" cellspacing="0" cellpadding="4" style="border-color:#eee" class="wikitable sortable"
 
+
|-
 
+
! Parameter  
<!-- table start -->
+
! Type  
{| border=1 width="100%" cellspacing="0" cellpadding="4" style="border-color:#eee" class="wikitable sortable"  
+
! Description <!-- header row end -->
<!-- header row start -->
 
! Parameter !! Type !! Description  
 
<!-- header row end -->
 
 
|-
 
|-
| self  
+
| self  
| '''in''' physics.Vect  
+
| '''in''' physics.Vect  
| The input vector  
+
| The input vector
 
|-
 
|-
| angle  
+
| angle  
| '''out''' number  
+
| '''out''' number  
| The angle of ''self''  
+
| The angle of ''self''
|}<!-- table end -->
+
|}
 
+
<!-- table end -->  
<br/>
+
<br> Returns the angle in radians of ''self''.  
Returns the angle in radians of ''self''.
 
  
Introduced in platform.apiLevel = '2.0'
+
Introduced in platform.apiLevel = '2.0'  
  
 
----
 
----
===== unrotate =====
 
  
 +
===== unrotate  =====
  
<!-- code start-->
+
<!-- code start-->  
<pre style="margin-left:20px; font-size:1.4em; background-color:#fdfdfd">
+
<pre style="margin-left:20px; font-size:1.4em; background-color:#fdfdfd">uvec = physics.Vect:unrotate(vec)
uvec = physics.Vect:unrotate(vec)
+
</pre><!-- code end--> <!-- table start -->  
</pre><!-- code end-->
+
{| border="1" width="100%" cellspacing="0" cellpadding="4" style="border-color:#eee" class="wikitable sortable"
 
+
|-
 
+
! Parameter  
<!-- table start -->
+
! Type  
{| border=1 width="100%" cellspacing="0" cellpadding="4" style="border-color:#eee" class="wikitable sortable"  
+
! Description <!-- header row end -->
<!-- header row start -->
 
! Parameter !! Type !! Description  
 
<!-- header row end -->
 
 
|-
 
|-
| self  
+
| self  
| '''in''' physics.Vect  
+
| '''in''' physics.Vect  
| The input vector  
+
| The input vector
 
|-
 
|-
| vec  
+
| vec  
| '''in''' physics.Vect  
+
| '''in''' physics.Vect  
| The other vector  
+
| The other vector
 
|-
 
|-
| uvec  
+
| uvec  
| '''out''' physics.Vect  
+
| '''out''' physics.Vect  
| The resulting unrotated vector  
+
| The resulting unrotated vector
|}<!-- table end -->
+
|}
 +
<!-- table end -->  
 +
<br> Inverse of physics.Vect:rotate(vec).
  
<br/>
+
Introduced in platform.apiLevel = '2.0'  
Inverse of {{physics.Vect:rotate(vec)}}.
 
 
 
Introduced in platform.apiLevel = '2.0'
 
  
 
----
 
----
===== x =====
 
  
 +
===== x  =====
  
<!-- code start-->
+
<!-- code start-->  
<pre style="margin-left:20px; font-size:1.4em; background-color:#fdfdfd">
+
<pre style="margin-left:20px; font-size:1.4em; background-color:#fdfdfd">x = physics.Vect:x()
x = physics.Vect:x()
+
</pre><!-- code end--> <!-- table start -->  
</pre><!-- code end-->
+
{| border="1" width="100%" cellspacing="0" cellpadding="4" style="border-color:#eee" class="wikitable sortable"
 
+
|-
 
+
! Parameter  
<!-- table start -->
+
! Type  
{| border=1 width="100%" cellspacing="0" cellpadding="4" style="border-color:#eee" class="wikitable sortable"  
+
! Description <!-- header row end -->
<!-- header row start -->
 
! Parameter !! Type !! Description  
 
<!-- header row end -->
 
 
|-
 
|-
| self  
+
| self  
| '''in''' physics.Vect  
+
| '''in''' physics.Vect  
| The input vector  
+
| The input vector
 
|-
 
|-
| x  
+
| x  
| '''out''' number  
+
| '''out''' number  
| The value of the _x_ component of the vector  
+
| The value of the _x_ component of the vector
|}<!-- table end -->
+
|}
 
+
<!-- table end -->  
<br/>
+
<br> Returns the value of the _x_ component of the input vector.  
Returns the value of the _x_ component of the input vector.
 
  
Introduced in platform.apiLevel = '2.0'
+
Introduced in platform.apiLevel = '2.0'  
  
 
----
 
----
===== y =====
 
  
 +
===== y  =====
  
<!-- code start-->
+
<!-- code start-->  
<pre style="margin-left:20px; font-size:1.4em; background-color:#fdfdfd">
+
<pre style="margin-left:20px; font-size:1.4em; background-color:#fdfdfd">y = physics.Vect:y()
y = physics.Vect:y()
+
</pre><!-- code end--> <!-- table start -->  
</pre><!-- code end-->
+
{| border="1" width="100%" cellspacing="0" cellpadding="4" style="border-color:#eee" class="wikitable sortable"
 
+
|-
 
+
! Parameter  
<!-- table start -->
+
! Type  
{| border=1 width="100%" cellspacing="0" cellpadding="4" style="border-color:#eee" class="wikitable sortable"  
+
! Description <!-- header row end -->
<!-- header row start -->
 
! Parameter !! Type !! Description  
 
<!-- header row end -->
 
 
|-
 
|-
| self  
+
| self  
| '''in''' physics.Vect  
+
| '''in''' physics.Vect  
| The input vector  
+
| The input vector
 
|-
 
|-
| y  
+
| y  
| '''out''' number  
+
| '''out''' number  
| The value of the _y_ component of the vector  
+
| The value of the _y_ component of the vector
|}<!-- table end -->
+
|}
 
+
<!-- table end -->  
<br/>
+
<br> Returns the value of the _y_ component of the input vector.  
Returns the value of the _y_ component of the input vector.
 
 
 
Introduced in platform.apiLevel = '2.0'
 
 
 
  
 +
Introduced in platform.apiLevel = '2.0'
  
 
[[Category:Physics_Engine]]
 
[[Category:Physics_Engine]]

Revision as of 08:10, 18 July 2012

A vector is a 2-dimensional object with x and y components. Its type is TI.cpVect.


Vect
vector = physics.Vect(x, y)
vector = physics.Vect(angle)
vector = physics.Vect(vect)
Parameter Type Description
x in number The _x_ component of the vector
y in number The _y_ component of the vector
angle in number An angle in radians
vect in physics.Vect A vector
vector out physics.Vect A vector


Creates a vector with initial x and y component values. The second form creates a unit vector pointing in direction angle. The third form creates a copy of the input vector.

Introduced in platform.apiLevel = '2.0'


add
sum = physics.Vect:add(vec)
Parameter Type Description
self in physics.Vect The input vector
vec in physics.Vect A vector to add to self
sum out physics.Vect The vector sum of self and vec


Returns the vector sum of self and vec.

The Vect class also implements the addition operator (+). Therefore vectors v1 and v2 can be added with the expression v1 + v2.

Introduced in platform.apiLevel = '2.0'


clamp
clamped = physics.Vect:clamp(len)
Parameter Type Description
self in physics.Vect The input vector
len in number The maximum length of the vector
clamped out physics.Vect A new vector with a length no longer than len


Returns a copy of self clamped to length len.

Introduced in platform.apiLevel = '2.0'


cross
crossprod = physics.Vect:cross(vec)
Parameter Type Description
self in physics.Vect The input vector
vec in physics.Vect The vector to cross with self
zmag out number The z magnitude of the cross product of self and vec


Returns the z magnitude of the cross product of self and vec.

Introduced in platform.apiLevel = '2.0'


dist
dist = physics.Vect:dist(vec)
Parameter Type Description
self in physics.Vect The input vector
vec in physics.Vect The vector to which to find the distance from self
dist out number The distance from self to vec


Returns the distance between self and vec.

Introduced in platform.apiLevel = '2.0'


distsq
distsq = physics.Vect:distsq(vec)
Parameter Type Description
self in physics.Vect The input vector
vec in physics.Vect The vector to which to find the distance squared from self
distsq out number The distance squared from self to vec


Returns the distance squared between self and vec. This routine is faster than physics.Vect:dist when you only need to compare distances.

Introduced in platform.apiLevel = '2.0'


dot
dotprod = physics.Vect:dot(vec)
Parameter Type Description
self in physics.Vect The input vector
vec in physics.Vect The other vector
dotprod out number The scalar dot product of self and vec


Returns the scalar dot product of self and vec.

Introduced in platform.apiLevel = '2.0'


eql
isequ = physics.Vect:eql(vec)
Parameter Type Description
self in physics.Vect The input vector
vec in physics.Vect The vector against which to compare with self
isequ out boolean True if the components of self equal the components of vec


Returns true if the x and y components of self equal those of vec. Take the usual precautions when comparing floating point numbers for equality.

The Vect class also implements the equal comparison operator (==). Therefore vectors v1 and v2 can be compared with the expression v1 == v2.

Introduced in platform.apiLevel = '2.0'


length
len = physics.Vect:length()
Parameter Type Description
self in physics.Vect The input vector
len out number The length of vector self


Returns the magnitude of self.

Introduced in platform.apiLevel = '2.0'


lengthsq
lensq = physics.Vect:lengthsq()
Parameter Type Description
self in physics.Vect The input vector
lensq out number The length squared of vector self


Returns the length squared of self. This routine is faster than Vect:length() when you only need to compare lengths.

Introduced in platform.apiLevel = '2.0'


lerp
v = physics.Vect:lerp(vec, f)
Parameter Type Description
self in physics.Vect The input vector
vec in physics.Vect The other vector
f in number f_ is a fractional number from 0 to 1 representing the proportion of distance between _self and vec
v out physics.Vect A vector interpolated between self and vec


Returns the linear interpolation between self and vec as a vector. f_ is the fraction of distance between _self and vec.

May not behave as expected for f larger than 1.0 or less than 0.


Introduced in platform.apiLevel = '2.0'


lerpconst
v = physics.Vect:lerpconst(vec, d)
Parameter Type Description
self in physics.Vect The input vector
vec in physics.Vect The other vector
d in number The distance from self to vec to interpolate a new vector
v out physics.Vect


Returns a vector interpolated from self towards vec with length _d_.

May not behave as expected for d larger than 1.0 or less than 0.


Introduced in platform.apiLevel = '2.0'


mult
v = physics.Vect:mult(factor)
Parameter Type Description
self in physics.Vect The input vector
factor in number The value to multiply by self
v out physics.Vect The resulting scaled vector


Multiplies a vector by a factor.

Introduced in platform.apiLevel = '2.0'


near
isnear = physics.Vect:near(vec, distance)
Parameter Type Description
self in physics.Vect The input vector
vec in physics.Vect The value to multiply by self
distance in number The distance from vec
isnear out boolean True if self is within distance of vec


Determines if self is near another vector.

Introduced in platform.apiLevel = '2.0'


neg
v = physics.Vect:neg()
Parameter Type Description
self in physics.Vect The input vector
v out physics.Vect The resulting negated vector


Returns the negative of self.

The Vect class also implements the unary minus operator (-self).

Introduced in platform.apiLevel = '2.0'



normalize
normvec = physics.Vect:normalize()
Parameter Type Description
self in physics.Vect The input vector
normvec out physics.Vect The resulting normalized vector


Returns a normalized copy of self. The length of a normal vector is 1.

Introduced in platform.apiLevel = '2.0'


normalizeSafe
normvec = physics.Vect:normalizeSafe()
Parameter Type Description
self in physics.Vect The input vector
normvec out physics.Vect The resulting normalized vector


Returns a normalized copy of self. Protects against division by zero.

Introduced in platform.apiLevel = '2.0'


perp
perpvec = physics.Vect:perp()
Parameter Type Description
self in physics.Vect The input vector
perpvec out physics.Vect The resulting perpendicular vector


Returns a vector perpendicular to self. (90 degree rotation)

Introduced in platform.apiLevel = '2.0'


project
pvec = physics.Vect:project(vec)
Parameter Type Description
self in physics.Vect The input vector
vec in physics.Vect The other vector
pvec out physics.Vect The vector of self projected onto vec


Computes the projection of self onto another vector.

Introduced in platform.apiLevel = '2.0'


rotate
rvec = physics.Vect:rotate(vec)
Parameter Type Description
self in physics.Vect The input vector
vec in physics.Vect The other vector
rvec out physics.Vect The resulting rotated vector


Uses complex multiplication to rotate self by vec. Scaling will occur if self is not a unit vector.

Introduced in platform.apiLevel = '2.0'


rperp
perpvec = physics.Vect:rperp()
Parameter Type Description
self in physics.Vect The input vector
perpvec out physics.Vect The resulting perpendicular vector


Returns a vector perpendicular to self. (90 degree rotation)

Introduced in platform.apiLevel = '2.0'


setx
self = physics.Vect:setx(x)
Parameter Type Description
self in physics.Vect The vector to modify
x in number The new value of the _x_ component of the vector
self out physics.Vect The input vector is returned as the output


Changes the value of the x_ component of _self. Returns self.

Introduced in platform.apiLevel = '2.0'


sety
self = physics.Vect:sety(y)
Parameter Type Description
self in physics.Vect The vector to modify
y in number The new value of the _y_ component of the vector
self out physics.Vect The input vector is returned as the output


Changes the value of the y_ component of _self. Returns self.

Introduced in platform.apiLevel = '2.0'


slerp
v = physics.Vect:slerp(vec, f)
Parameter Type Description
self in physics.Vect A unit vector
vec in physics.Vect The other unit vector
f in number f_ is a fractional number from 0 to 1 representing the proportion of distance between _self and vec
v out physics.Vect A vector interpolated between self and vec


Computes a spherical linear interpolation between unit vectors self and vec.

See [http://en.wikipedia.org/wiki/Slerp] for a discussion of the meaning, value, and usage of spherical linear interpolation.


physics.Vect:slerp

local vect1 = physics.Vect(math.pi/3) -- unit vector with angle pi/3 radians
local vect2 = physics.Vect(math.pi/2) -- unit vector with angle pi/2 radians
local result = vect1:slerp(vect2, 0.55) -- compute spherical linear interpolation

This routine computes meaningful results only when the two inputs are unit vectors.

May not behave as expected for f larger than 1.0 or less than 0.

NOTE: Notes


Introduced in platform.apiLevel = '2.0'


slerpconst
v = physics.Vect:slerpconst(vec, angle)
Parameter Type Description
self in physics.Vect A unit vector
vec in physics.Vect The other unit vector
angle in number The maximum angle between self and vec to interpolate a new vector
v out physics.Vect


Returns the spherical linear interpolation from self towards vec but by no more than angle in radians.

See [http://en.wikipedia.org/wiki/Slerp] for a discussion of the meaning, value, and usage of spherical linear interpolation.


This routine computes meaningful results only when the two inputs are unit vectors.

NOTE: NOTE


Introduced in platform.apiLevel = '2.0'


sub
diff = physics.Vect:sub(vec)
Parameter Type Description
self in physics.Vect The input vector
vec in physics.Vect A vector to subtract from self
diff out physics.Vect The vector difference between self and vec


Returns the vector difference of self and vec.

The Vect class also implements the subtraction operator (-). Therefore vector v2 can be subtracted from v1 with the expression v1 - v2.

Introduced in platform.apiLevel = '2.0'


toangle
angle = physics.Vect:toangle()
Parameter Type Description
self in physics.Vect The input vector
angle out number The angle of self


Returns the angle in radians of self.

Introduced in platform.apiLevel = '2.0'


unrotate
uvec = physics.Vect:unrotate(vec)
Parameter Type Description
self in physics.Vect The input vector
vec in physics.Vect The other vector
uvec out physics.Vect The resulting unrotated vector


Inverse of physics.Vect:rotate(vec).

Introduced in platform.apiLevel = '2.0'


x
x = physics.Vect:x()
Parameter Type Description
self in physics.Vect The input vector
x out number The value of the _x_ component of the vector


Returns the value of the _x_ component of the input vector.

Introduced in platform.apiLevel = '2.0'


y
y = physics.Vect:y()
Parameter Type Description
self in physics.Vect The input vector
y out number The value of the _y_ component of the vector


Returns the value of the _y_ component of the input vector.

Introduced in platform.apiLevel = '2.0'

This category currently contains no pages or media.