Vector2: Difference between revisions

From Legacy Roblox Wiki
Jump to navigationJump to search
>NXTBoy
No edit summary
>JulienDethurens
No edit summary
 
(11 intermediate revisions by 3 users not shown)
Line 1: Line 1:
{{Map|Scripting|Data Types}}
{{CatUp|Data Types}} {{CatUp|Scripting}}
{{CatUp|Data Types}} {{CatUp|Scripting}}


==Vector2==
==Vector2==


A Vector2 has two values - an X ordinate, and a Y ordinate. They're kind of like those coordinates you use in school on graphs. I'm sure you've seen something like
A {{type|Vector2}} has two values - an X ordinate, and a Y ordinate. They're kind of like those coordinates you use in school on graphs. I'm sure you've seen something like


(1, 5)
{{`|(1, 5)}}


somewhere before. This means that on a graph you go to the right 1, and then up 5. That's because a coordinate uses an X and a Y value. It looks like this
somewhere before. This means that on a graph you go to the right 1, and then up 5. That's because a coordinate uses an X and a Y value. It looks like this


(x, y)
{{`|(x, y)}}


That's really all there is to it. Usually, the use of Vector2s are in doing simple calculations that UDim2s do not have built in.  When people talk about the values inside a Vector2,
That's really all there is to it. Usually, the use of {{type|Vector2}}s are in doing simple calculations that {{type|UDim2}}s do not have built in.  When people talk about the values inside a {{type|Vector2}},
* X is horizontal, or width
* X is horizontal, or width
* Y is vertical, or height
* Y is vertical, or height
Line 19: Line 21:
! Constructor !! Description
! Constructor !! Description
|-
|-
| Vector2.new('''x''', '''y''') || Creates a new Vector2 using ordinates '''x''', and '''y'''.
| Vector2.new(<var>x</var>, <var>y</var>) || Creates a new {{type|Vector2}} using ordinates <var>x</var>, and <var>y</var>.
|}
|}


Line 28: Line 30:
! Property !! Type !! Description
! Property !! Type !! Description
|-
|-
| Vector2.'''x''' || [[Number]] || The x-coordinate
| Vector2.'''x''' || {{type|number}} || The x-coordinate
|-
|-
| Vector2.'''y''' || [[Number]] || The y-coordinate
| Vector2.'''y''' || {{type|number}} || The y-coordinate
|-
|-
| Vector2.'''unit''' || [[Vector2]] || A normalized copy of the vector
| Vector2.'''unit''' || {{type|Vector2}} || A normalized copy of the vector
|-
|-
| Vector2.'''magnitude'''|| [[Number]] || The length of the vector
| Vector2.'''magnitude'''|| {{type|number}} || The length of the vector
|}
|}
=== Magnitude property ===
The magnitude property is simply the length of the Vector2, which can be found by using the pythagorean theorem. If you plug-in the difference of the Vector2's x coordinates as <var>a</var> and the difference of the Vector2's y coordinates <var>b</var>, and then solve for <var>c</var>, you will find the length of the Vector2. If there is only one coordinate, the second coordinate will be {{Vector2|0|0}}.


== Operators ==
== Operators ==
Line 42: Line 47:
! Operator !! Description
! Operator !! Description
|-
|-
| Vector2 + Vector2 || returns Vector2 translated (slid) by Vector2
| {{type|Vector2}} + {{type|Vector2}} || returns Vector2 translated (slid) by Vector2
|-
|-
| Vector2 - Vector2 || returns Vector2 translated (slid) by -Vector2 (also gives relative position of 1 to the other)
| {{type|Vector2}} - {{type|Vector2}} || returns Vector2 translated (slid) by -Vector2 (also gives relative position of 1 to the other)
|-
|-
| Number * Vector2  || returns Vector2 with each component multiplied by Number
| {{type|number}} * {{type|Vector2}} || returns Vector2 with each component multiplied by number
|-
|-
| Vector2 * Number || returns Vector2 with each component multiplied by Number
| {{type|Vector2}} * {{type|number}} || returns Vector2 with each component multiplied by number
|-
|-
| Number / Vector2  || returns Vector2 with Number divided by each component
| {{type|number}} / {{type|Vector2}} || returns Vector2 with number divided by each component
|-
|-
| Vector2 / Number || returns Vector2 with each component divided by Number
| {{type|Vector2}} / {{type|number}} || returns Vector2 with each component divided by number
|-
|-
| Vector2 * Vector2 || returns Vector2 with each component multiplied by corresponding component
| {{type|Vector2}} * {{type|Vector2}} || returns Vector2 with each component multiplied by corresponding component
|-
|-
| Vector2 / Vector2 || returns Vector2 with each component divided by corresponding component
| {{type|Vector2}} / {{type|Vector2}} || returns Vector2 with each component divided by corresponding component
|}
|}


== Examples ==
== Examples ==
 
In the following diagram, there are two line segments.  These two line segments can be represented in Roblox with four {{type|Vector2}} values.
In the following diagram, there are two line segments.  These two line segments can be represented in Roblox with four '''Vector2''' values. <div style="border-radius:2px; -webkit-border-radius:2px; -moz-border-radius:2px; float:right; padding:3px; border-color:#999999; border-style:solid; border-width:1px; background-color:#bbbbbb;"><div style="padding:0px; border-color:#999999; border-style:solid; border-width:1px; margin:0px;">[[Image:2Dvecspacesedit.png]]</div><div style="width:238px; color:#000000; padding:5px; margin:2px; margin-bottom:0px;">Diagram of two line segments using Cartesian Coordinates.</div></div>
[[Image:2Dvecspacesedit.png|right|frame|Diagram of two line segments using Cartesian Coordinates]]
Lets say we have line '' '''A''' '':
Let's say we have line '''''A''''':
<pre>
<div style="overflow: hidden">{{lua|=
local lineA={Vector2.new(2, 7), Vector2.new(2, 1)};
local lineA = {
lineA.magnitude = (lineA[1]-lineA[2]).magnitude
    Vector2.new(2, 7),
lineA.unit = (lineA[1]-lineA[2]).unit
    Vector2.new(2, 1)
</pre>
}
and line '' '''B''' '':
lineA.magnitude = (lineA[1] - lineA[2]).magnitude
<pre>
lineA.unit     = (lineA[1] - lineA[2]).unit
local lineB={Vector2.new(1, -5), Vector2.new(3, -3)};
}}
lineB.magnitude = (lineB[1]-lineB[2]).magnitude
and line '''''B''''':
lineB.unit = (lineB[1]-lineB[2]).unit
{{lua|=
</pre>
local lineB = {
    Vector2.new(1, -5),
    Vector2.new(3, -3)
}
lineB.magnitude = (lineB[1] - lineB[2]).magnitude
lineB.unit     = (lineB[1] - lineB[2]).unit
}}</div>


Now, if we were to print the length (or '''magnitude''') of each line segment, it would be the number displayed to the right of it:
Now, if we were to print the length (or '''magnitude''') of each line segment, it would be the number displayed to the right of it:
<pre>
{{code and output|fit=code
|code=
print("The magnitude of line A is " .. lineA.magnitude .. " units.")
print("The magnitude of line A is " .. lineA.magnitude .. " units.")
print("The magnitude of line B is " .. lineB.magnitude .. " units.")
print("The magnitude of line B is " .. lineB.magnitude .. " units.")
</pre>
|output=
 
The output would be: <!-- output template needed -->
<pre>
The magnitude of line A is 6.
The magnitude of line A is 6.
The magnitude of line B is 3.4142135623731.
The magnitude of line B is 3.4142135623731.
</pre>
}}


== See Also ==
== See also ==


*[[Properties]]
*[[Properties]]
*[[Vector3]]
*[[Vector3]]


[[Category:Data Types]]
[[Category:Data types]]

Latest revision as of 17:59, 7 April 2012

Vector2

A Vector2 has two values - an X ordinate, and a Y ordinate. They're kind of like those coordinates you use in school on graphs. I'm sure you've seen something like

(1, 5)

somewhere before. This means that on a graph you go to the right 1, and then up 5. That's because a coordinate uses an X and a Y value. It looks like this

(x, y)

That's really all there is to it. Usually, the use of Vector2s are in doing simple calculations that UDim2s do not have built in. When people talk about the values inside a Vector2,

  • X is horizontal, or width
  • Y is vertical, or height

Constructors

Constructor Description
Vector2.new(x, y) Creates a new Vector2 using ordinates x, and y.

Properties

All of these properties are Read Only (you can't just set them Vector2.x = 5, it doesn't work) but you can create new vectors with such changes, or apply an operation, seen in the next section.

Property Type Description
Vector2.x number The x-coordinate
Vector2.y number The y-coordinate
Vector2.unit Vector2 A normalized copy of the vector
Vector2.magnitude number The length of the vector

Magnitude property

The magnitude property is simply the length of the Vector2, which can be found by using the pythagorean theorem. If you plug-in the difference of the Vector2's x coordinates as a and the difference of the Vector2's y coordinates b, and then solve for c, you will find the length of the Vector2. If there is only one coordinate, the second coordinate will be

0
0

.

Operators

Operator Description
Vector2 + Vector2 returns Vector2 translated (slid) by Vector2
Vector2 - Vector2 returns Vector2 translated (slid) by -Vector2 (also gives relative position of 1 to the other)
number * Vector2 returns Vector2 with each component multiplied by number
Vector2 * number returns Vector2 with each component multiplied by number
number / Vector2 returns Vector2 with number divided by each component
Vector2 / number returns Vector2 with each component divided by number
Vector2 * Vector2 returns Vector2 with each component multiplied by corresponding component
Vector2 / Vector2 returns Vector2 with each component divided by corresponding component

Examples

In the following diagram, there are two line segments. These two line segments can be represented in Roblox with four Vector2 values.

Diagram of two line segments using Cartesian Coordinates

Let's say we have line A:

local lineA = {
    Vector2.new(2, 7),
    Vector2.new(2, 1)
}
lineA.magnitude = (lineA[1] - lineA[2]).magnitude
lineA.unit      = (lineA[1] - lineA[2]).unit

and line B:

local lineB = {
    Vector2.new(1, -5),
    Vector2.new(3, -3)
}
lineB.magnitude = (lineB[1] - lineB[2]).magnitude
lineB.unit      = (lineB[1] - lineB[2]).unit

Now, if we were to print the length (or magnitude) of each line segment, it would be the number displayed to the right of it:

print("The magnitude of line A is " .. lineA.magnitude .. " units.")
print("The magnitude of line B is " .. lineB.magnitude .. " units.")

The magnitude of line A is 6.

The magnitude of line B is 3.4142135623731.

See also