Difference between revisions of "Category:Physics Engine/Vectors"
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 ===== | ||
− | <!-- 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 | + | ! Type |
− | + | ! Description <!-- header row end --> | |
− | ! Parameter | ||
− | <!-- header row end --> | ||
|- | |- | ||
− | | | + | | 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 |
− | |}<!-- 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 ===== | ||
− | <!-- 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 | + | ! Description <!-- header row end --> |
− | |||
− | ! Parameter | ||
− | <!-- header row end --> | ||
|- | |- | ||
− | | | + | | 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'' |
− | |}<!-- table end --> | + | |} |
+ | <!-- table end --> | ||
+ | <br> 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 ===== | ||
− | <!-- 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 | + | ! Description <!-- header row end --> |
− | |||
− | ! Parameter | ||
− | <!-- header row end --> | ||
|- | |- | ||
− | | | + | | 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'' |
− | |}<!-- 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 ===== | ||
− | <!-- 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 | + | ! Description <!-- header row end --> |
− | |||
− | ! Parameter | ||
− | <!-- header row end --> | ||
|- | |- | ||
− | | | + | | 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'' |
− | |}<!-- 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 ===== | ||
− | <!-- 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 | + | ! Description <!-- header row end --> |
− | |||
− | ! Parameter | ||
− | <!-- header row end --> | ||
|- | |- | ||
− | | | + | | 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'' |
− | |}<!-- table end --> | + | |} |
+ | <!-- table end --> | ||
+ | <br> Returns the distance between ''self'' and ''vec''. | ||
− | + | Introduced in platform.apiLevel = '2.0' | |
− | |||
− | |||
− | Introduced in platform.apiLevel = '2.0' | ||
---- | ---- | ||
− | |||
+ | ===== 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 | + | ! Description <!-- header row end --> |
− | |||
− | ! Parameter | ||
− | <!-- header row end --> | ||
|- | |- | ||
− | | | + | | 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'' |
− | |}<!-- 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 | ||
− | Introduced in platform.apiLevel = '2.0' | + | Introduced in platform.apiLevel = '2.0' |
---- | ---- | ||
− | |||
+ | ===== 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 | + | ! Description <!-- header row end --> |
− | |||
− | ! Parameter | ||
− | <!-- header row end --> | ||
|- | |- | ||
− | | | + | | 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'' |
− | |}<!-- table end --> | + | |} |
+ | <!-- table end --> | ||
+ | <br> Returns the scalar dot product of ''self'' and ''vec''. | ||
− | + | Introduced in platform.apiLevel = '2.0' | |
− | |||
− | |||
− | Introduced in platform.apiLevel = '2.0' | ||
---- | ---- | ||
− | |||
+ | ===== 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 | + | ! Description <!-- header row end --> |
− | |||
− | ! Parameter | ||
− | <!-- header row end --> | ||
|- | |- | ||
− | | | + | | 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'' |
− | |}<!-- 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. | ||
− | + | 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 ===== | ||
− | <!-- 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 | + | ! Description <!-- header row end --> |
− | |||
− | ! Parameter | ||
− | <!-- header row end --> | ||
|- | |- | ||
− | | | + | | self |
− | | | + | | '''in''' physics.Vect |
− | | | + | | The input vector |
|- | |- | ||
− | | | + | | len |
− | | | + | | '''out''' number |
− | | | + | | The length of vector ''self'' |
− | |}<!-- table end --> | + | |} |
+ | <!-- table end --> | ||
+ | <br> Returns the magnitude of ''self''. | ||
− | + | Introduced in platform.apiLevel = '2.0' | |
− | |||
− | |||
− | Introduced in platform.apiLevel = '2.0' | ||
---- | ---- | ||
− | |||
+ | ===== 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 | + | ! Description <!-- header row end --> |
− | |||
− | ! Parameter | ||
− | <!-- header row end --> | ||
|- | |- | ||
− | | | + | | self |
− | | | + | | '''in''' physics.Vect |
− | | | + | | The input vector |
|- | |- | ||
− | | | + | | lensq |
− | | | + | | '''out''' number |
− | | | + | | 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 | ||
− | Introduced in platform.apiLevel = '2.0' | + | Introduced in platform.apiLevel = '2.0' |
---- | ---- | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
+ | ===== lerp ===== | ||
− | <!-- table start --> | + | <!-- code start--> |
− | {| border=1 | + | <pre style="margin-left:20px; font-size:1.4em; background-color:#fdfdfd">v = physics.Vect:lerp(vec, f) |
− | + | </pre><!-- code end--> <!-- table start --> | |
− | + | {| border="1" width="100%" cellspacing="0" cellpadding="4" style="border-color:#eee" class="wikitable sortable" | |
− | |||
|- | |- | ||
− | + | ! Parameter | |
− | + | ! Type | |
− | + | ! Description <!-- header row end --> | |
|- | |- | ||
− | | | + | | 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'' | |
+ | |} | ||
+ | <!-- 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;" | ||
+ | |} | ||
− | + | <br> | |
− | |||
− | |||
− | |||
− | <br | ||
− | Introduced in platform.apiLevel = '2.0' | + | Introduced in platform.apiLevel = '2.0' |
---- | ---- | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
+ | ===== lerpconst ===== | ||
− | <!-- table start --> | + | <!-- code start--> |
− | {| border=1 | + | <pre style="margin-left:20px; font-size:1.4em; background-color:#fdfdfd">v = physics.Vect:lerpconst(vec, d) |
− | + | </pre><!-- code end--> <!-- table start --> | |
− | + | {| border="1" width="100%" cellspacing="0" cellpadding="4" style="border-color:#eee" class="wikitable sortable" | |
− | |||
|- | |- | ||
− | + | ! Parameter | |
− | + | ! Type | |
− | + | ! Description <!-- header row end --> | |
|- | |- | ||
− | | | + | | 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 | |
− | + | | | |
+ | |} | ||
+ | <!-- 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;" | ||
+ | |} | ||
− | + | <br> | |
− | + | Introduced in platform.apiLevel = '2.0' | |
− | |||
− | |||
− | |||
− | Introduced in platform.apiLevel = '2.0' | ||
---- | ---- | ||
− | |||
+ | ===== 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 | + | ! Description <!-- header row end --> |
− | |||
− | ! Parameter | ||
− | <!-- header row end --> | ||
|- | |- | ||
− | | | + | | self |
− | | | + | | '''in''' physics.Vect |
− | | | + | | The input vector |
|- | |- | ||
− | | | + | | factor |
− | | | + | | '''in''' number |
− | | | + | | The value to multiply by ''self'' |
|- | |- | ||
− | | | + | | v |
− | | | + | | '''out''' physics.Vect |
− | | | + | | The resulting scaled vector |
− | |}<!-- table end --> | + | |} |
+ | <!-- table end --> | ||
+ | <br> Multiplies a vector by a factor. | ||
− | + | Introduced in platform.apiLevel = '2.0' | |
− | |||
− | |||
− | Introduced in platform.apiLevel = '2.0' | ||
---- | ---- | ||
− | |||
+ | ===== 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 | + | ! Description <!-- header row end --> |
− | |||
− | ! Parameter | ||
− | <!-- header row end --> | ||
|- | |- | ||
− | | | + | | 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'' |
− | |}<!-- 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 ===== | ||
− | <!-- 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 | + | ! Description <!-- header row end --> |
− | |||
− | ! Parameter | ||
− | <!-- header row end --> | ||
|- | |- | ||
− | | | + | | self |
− | | | + | | '''in''' physics.Vect |
− | | | + | | The input vector |
|- | |- | ||
− | | | + | | v |
− | | | + | | '''out''' physics.Vect |
− | | | + | | 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 | ||
− | |||
− | ! Parameter | ||
− | <!-- header row end --> | ||
|- | |- | ||
− | | | + | | self |
− | | | + | | '''in''' physics.Vect |
− | | | + | | The input vector |
|- | |- | ||
− | | | + | | normvec |
− | | | + | | '''out''' physics.Vect |
− | | | + | | The resulting normalized vector |
− | |}<!-- table end --> | + | |} |
+ | <!-- table end --> | ||
+ | <br> Returns a normalized copy of ''self''. The length of a normal vector is 1. | ||
− | + | Introduced in platform.apiLevel = '2.0' | |
− | |||
− | |||
− | Introduced in platform.apiLevel = '2.0' | ||
---- | ---- | ||
− | |||
+ | ===== 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 | + | ! Description <!-- header row end --> |
− | |||
− | ! Parameter | ||
− | <!-- header row end --> | ||
|- | |- | ||
− | | | + | | self |
− | | | + | | '''in''' physics.Vect |
− | | | + | | The input vector |
|- | |- | ||
− | | | + | | normvec |
− | | | + | | '''out''' physics.Vect |
− | | | + | | 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 ===== | ||
− | <!-- 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 | + | ! Description <!-- header row end --> |
− | |||
− | ! Parameter | ||
− | <!-- header row end --> | ||
|- | |- | ||
− | | | + | | self |
− | | | + | | '''in''' physics.Vect |
− | | | + | | The input vector |
|- | |- | ||
− | | | + | | perpvec |
− | | | + | | '''out''' physics.Vect |
− | | | + | | The resulting perpendicular vector |
− | |}<!-- table end --> | + | |} |
+ | <!-- table end --> | ||
+ | <br> Returns a vector perpendicular to ''self''. (90 degree rotation) | ||
− | + | Introduced in platform.apiLevel = '2.0' | |
− | |||
− | |||
− | Introduced in platform.apiLevel = '2.0' | ||
---- | ---- | ||
− | |||
+ | ===== 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 | + | ! Description <!-- header row end --> |
− | |||
− | ! Parameter | ||
− | <!-- header row end --> | ||
|- | |- | ||
− | | | + | | 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'' |
− | |}<!-- 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 ===== | ||
− | <!-- 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 | + | ! Description <!-- header row end --> |
− | |||
− | ! Parameter | ||
− | <!-- header row end --> | ||
|- | |- | ||
− | | | + | | self |
− | | | + | | '''in''' physics.Vect |
− | | | + | | The input vector |
|- | |- | ||
− | | | + | | vec |
− | | | + | | '''in''' physics.Vect |
− | | | + | | The other vector |
|- | |- | ||
− | | | + | | rvec |
− | | | + | | '''out''' physics.Vect |
− | | | + | | 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 ===== | ||
− | <!-- 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 | + | ! Description <!-- header row end --> |
− | |||
− | ! Parameter | ||
− | <!-- header row end --> | ||
|- | |- | ||
− | | | + | | self |
− | | | + | | '''in''' physics.Vect |
− | | | + | | The input vector |
|- | |- | ||
− | | | + | | perpvec |
− | | | + | | '''out''' physics.Vect |
− | | | + | | The resulting perpendicular vector |
− | |}<!-- table end --> | + | |} |
+ | <!-- table end --> | ||
+ | <br> Returns a vector perpendicular to ''self''. (90 degree rotation) | ||
− | + | Introduced in platform.apiLevel = '2.0' | |
− | |||
− | |||
− | Introduced in platform.apiLevel = '2.0' | ||
---- | ---- | ||
− | |||
+ | ===== 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 | + | ! Description <!-- header row end --> |
− | |||
− | ! Parameter | ||
− | <!-- header row end --> | ||
|- | |- | ||
− | | | + | | 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 |
− | |}<!-- 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 ===== | ||
− | <!-- 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 | + | ! Description <!-- header row end --> |
− | |||
− | ! Parameter | ||
− | <!-- header row end --> | ||
|- | |- | ||
− | | | + | | 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 |
− | |}<!-- 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 ===== | ||
− | <!-- 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 | + | ! Description <!-- header row end --> |
− | |||
− | ! Parameter | ||
− | <!-- header row end --> | ||
|- | |- | ||
− | | | + | | 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'' |
− | |}<!-- 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;" | ||
|- | |- | ||
− | | | + | |} |
− | |||
− | < | + | <br> <!-- code start--> |
− | + | ===== physics.Vect:slerp ===== | |
− | + | ---- | |
− | + | <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 | |
− | |||
− | |||
− | |||
− | |||
− | <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''' |
− | + | ---- | |
− | + | |} | |
− | |||
− | + | <br> | |
− | |||
− | |||
− | <br | ||
− | Introduced in platform.apiLevel = '2.0' | + | Introduced in platform.apiLevel = '2.0' |
---- | ---- | ||
− | |||
+ | ===== 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 | + | ! Description <!-- header row end --> |
− | |||
− | ! Parameter | ||
− | <!-- header row end --> | ||
|- | |- | ||
− | | | + | | 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 |
− | | | + | | |
− | |}<!-- 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;" | ||
− | | | + | |} |
− | |||
− | |||
+ | <br> | ||
<div style="white-space: pre"> | <div style="white-space: pre"> | ||
− | + | This routine computes meaningful results only when the two inputs are unit vectors. | |
− | + | </div> | |
− | |||
− | </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> '''NOTE''' |
− | + | ---- | |
− | |||
− | |||
− | |||
|} | |} | ||
− | |||
− | Introduced in platform.apiLevel = '2.0' | + | <br> |
+ | |||
+ | Introduced in platform.apiLevel = '2.0' | ||
---- | ---- | ||
− | |||
+ | ===== 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 | + | ! Description <!-- header row end --> |
− | |||
− | ! Parameter | ||
− | <!-- header row end --> | ||
|- | |- | ||
− | | | + | | 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'' |
− | |}<!-- table end --> | + | |} |
+ | <!-- table end --> | ||
+ | <br> 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 ===== | ||
− | <!-- 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 | + | ! Description <!-- header row end --> |
− | |||
− | ! Parameter | ||
− | <!-- header row end --> | ||
|- | |- | ||
− | | | + | | self |
− | | | + | | '''in''' physics.Vect |
− | | | + | | The input vector |
|- | |- | ||
− | | | + | | angle |
− | | | + | | '''out''' number |
− | | | + | | 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 ===== | ||
− | <!-- 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 | + | ! Description <!-- header row end --> |
− | |||
− | ! Parameter | ||
− | <!-- header row end --> | ||
|- | |- | ||
− | | | + | | self |
− | | | + | | '''in''' physics.Vect |
− | | | + | | The input vector |
|- | |- | ||
− | | | + | | vec |
− | | | + | | '''in''' physics.Vect |
− | | | + | | The other vector |
|- | |- | ||
− | | | + | | uvec |
− | | | + | | '''out''' physics.Vect |
− | | | + | | The resulting unrotated vector |
− | |}<!-- table end --> | + | |} |
+ | <!-- table end --> | ||
+ | <br> Inverse of physics.Vect:rotate(vec). | ||
− | + | Introduced in platform.apiLevel = '2.0' | |
− | |||
− | |||
− | Introduced in platform.apiLevel = '2.0' | ||
---- | ---- | ||
− | |||
+ | ===== 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 | + | ! Description <!-- header row end --> |
− | |||
− | ! Parameter | ||
− | <!-- header row end --> | ||
|- | |- | ||
− | | | + | | self |
− | | | + | | '''in''' physics.Vect |
− | | | + | | The input vector |
|- | |- | ||
− | | | + | | x |
− | | | + | | '''out''' number |
− | | | + | | 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 ===== | ||
− | <!-- 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 | + | ! Description <!-- header row end --> |
− | |||
− | ! Parameter | ||
− | <!-- header row end --> | ||
|- | |- | ||
− | | | + | | self |
− | | | + | | '''in''' physics.Vect |
− | | | + | | The input vector |
|- | |- | ||
− | | | + | | y |
− | | | + | | '''out''' number |
− | | | + | | 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' | ||
[[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.
Contents
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.