Added the trunk/branches/tags directories at repository root, and moved previous root into trunk/
git-svn-id: https://sfml.svn.sourceforge.net/svnroot/sfml/trunk@1002 4e206d99-4929-0410-ac5d-dfc041789085
This commit is contained in:
commit
2f524481c1
974 changed files with 295448 additions and 0 deletions
114
dotnet/src/Graphics/Vector2.cs
Normal file
114
dotnet/src/Graphics/Vector2.cs
Normal file
|
@ -0,0 +1,114 @@
|
|||
using System;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
namespace SFML
|
||||
{
|
||||
namespace Graphics
|
||||
{
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Vector2 is an utility class for manipulating 2 dimensional
|
||||
/// vectors with float components
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
[StructLayout(LayoutKind.Sequential)]
|
||||
public struct Vector2
|
||||
{
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Construct the vector from its coordinates
|
||||
/// </summary>
|
||||
/// <param name="x">X coordinate</param>
|
||||
/// <param name="y">Y coordinate</param>
|
||||
////////////////////////////////////////////////////////////
|
||||
public Vector2(float x, float y)
|
||||
{
|
||||
X = x;
|
||||
Y = y;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Operator - overload ; returns the opposite of a vector
|
||||
/// </summary>
|
||||
/// <param name="v">Vector to negate</param>
|
||||
/// <returns>-v</returns>
|
||||
////////////////////////////////////////////////////////////
|
||||
public static Vector2 operator -(Vector2 v)
|
||||
{
|
||||
return new Vector2(-v.X, -v.Y);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Operator - overload ; subtracts two vectors
|
||||
/// </summary>
|
||||
/// <param name="v1">First vector</param>
|
||||
/// <param name="v2">Second vector</param>
|
||||
/// <returns>v1 - v2</returns>
|
||||
////////////////////////////////////////////////////////////
|
||||
public static Vector2 operator -(Vector2 v1, Vector2 v2)
|
||||
{
|
||||
return new Vector2(v1.X - v2.X, v1.Y - v2.Y);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Operator + overload ; add two vectors
|
||||
/// </summary>
|
||||
/// <param name="v1">First vector</param>
|
||||
/// <param name="v2">Second vector</param>
|
||||
/// <returns>v1 + v2</returns>
|
||||
////////////////////////////////////////////////////////////
|
||||
public static Vector2 operator +(Vector2 v1, Vector2 v2)
|
||||
{
|
||||
return new Vector2(v1.X + v2.X, v1.Y + v2.Y);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Operator * overload ; multiply a vector by a scalar value
|
||||
/// </summary>
|
||||
/// <param name="v">Vector</param>
|
||||
/// <param name="x">Scalar value</param>
|
||||
/// <returns>v * x</returns>
|
||||
////////////////////////////////////////////////////////////
|
||||
public static Vector2 operator *(Vector2 v, float x)
|
||||
{
|
||||
return new Vector2(v.X * x, v.Y * x);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Operator * overload ; multiply a scalar value by a vector
|
||||
/// </summary>
|
||||
/// <param name="x">Scalar value</param>
|
||||
/// <param name="v">Vector</param>
|
||||
/// <returns>x * v</returns>
|
||||
////////////////////////////////////////////////////////////
|
||||
public static Vector2 operator *(float x, Vector2 v)
|
||||
{
|
||||
return new Vector2(v.X * x, v.Y * x);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Operator / overload ; divide a vector by a scalar value
|
||||
/// </summary>
|
||||
/// <param name="v">Vector</param>
|
||||
/// <param name="x">Scalar value</param>
|
||||
/// <returns>v / x</returns>
|
||||
////////////////////////////////////////////////////////////
|
||||
public static Vector2 operator /(Vector2 v, float x)
|
||||
{
|
||||
return new Vector2(v.X / x, v.Y / x);
|
||||
}
|
||||
|
||||
/// <summary>X (horizontal) component of the vector</summary>
|
||||
public float X;
|
||||
|
||||
/// <summary>Y (vertical) component of the vector</summary>
|
||||
public float Y;
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue