Previous:Built-in Vector Identifiers Main Index Next:Specifying Colors

#### Vector Functions

POV-Ray defines a variety of built-in functions for manipulating floats, vectors and strings. Function calls consist of a keyword which specifies the name of the function followed by a parameter list enclosed in parentheses. Parameters are separated by commas. For example:

     keyword(param1,param2)

The following are the functions which return vector values. They take one or more float, integer, vector, or string parameters. Assume that `A` and `B` are any valid expression that evaluates to a vector; and `F` is any float expression.

`vaxis_rotate(A,B,F)` Rotate `A` about `B` by `F`. Given the x,y,z coordinates of a point in space designated by the vector `A`, rotate that point about an arbitrary axis defined by the vector `B`. Rotate it through an angle specified in degrees by the float value `F`. The result is a vector containing the new x,y,z coordinates of the point.

`vcross(A,B)` Cross product of `A` and `B`. Returns a vector that is the vector cross product of the two vectors. The resulting vector is perpendicular to the two original vectors and its length is proportional to the angle between them. See the animated demo scene `VECT2.POV` for an illustration.

`vnormalize(A)` Normalize vector `A`. Returns a unit length vector that is the same direction as `A`. Formula is vnormalize=A/vlength(A).

`vrotate(A,B)` Rotate `A` about origin by `B`. Given the x,y,z coordinates of a point in space designated by the vector `A`, rotate that point about the origin by an amount specified by the vector `B`. Rotate it about the x-axis by an angle specified in degrees by the float value `B.x`. Similarly `B.y` and `B.z` specify the amount to rotate in degrees about the y-axis and z-axis. The result is a vector containing the new x,y,z coordinates of the point.

See section "Float Functions" for other functions which are somewhat vector-related but which return floats. In addition to the above built-in functions, you may also define your own functions using the new `#macro` directive. See the section "User Defined Macros" for more details.

Previous:Built-in Vector Identifiers Main Index Next:Specifying Colors