# Differences

This shows you the differences between two versions of the page.

 — wiki:scripting_portal:lsl_types:vector [2018/11/17 13:56] (current)Royale Mobian created 2018/11/17 13:56 Royale Mobian created 2018/11/17 13:56 Royale Mobian created Line 1: Line 1: + ====== Vector ====== + A vector is a data type that contains a set of three float values. + ===== Components ===== + Each element can be accessed individually by appending .x, .y, or .z to the variable name. + + vector vec; + float x = vec.x; + float y = vec.y; + float z = vec.z; + ​ + + ===== Uses ===== + Vectors can be used to hold the following: + * Position: x, y and z are in metres. + * Velocity: x, y and z represent speeds. + * Colour: Red is x, Green is y and Blue is z. + + ===== Operators ===== + Vectors support the following operations: + * Addition, Operator "​+"​ + * Subtraction,​ Operator "​-"​ + * Multiplication (Dot Product), Operator "​*"​ + * Cross Product, Operator "​%"​ + + A vector can be multiplied or divided by a Quaternion to rotate it. + ===== Example ===== + + vector test=<​1.0,​ 2.0, 3.0>; + llOwnerSay((string)test.z);​ // Outputs 3.0 + ​ + ===== Useful Snippets ===== + + integer IsVector(string s) + { + list split = llParseString2List(s,​ [" "], ["<",​ ">",​ ","​]);​ + if(llGetListLength(split) != 7)//we must check the list length, or the next test won't work properly. + return FALSE; + return !((string)((vector)s) == (string)((vector)((string)llListInsertList(split,​ ["​-"​],​ 5)))); + //it works by trying to flip the sign on the Z element of the vector, + //if it works or breaks the vector then the values won't match. + //if the vector was already broken then the sign flip will have no affect and the values will match + //we cast back to string so we can catch negative zero which allows for support of ZERO_VECTOR + }//Strife Onizuka @ Second Life +  