Clementine
Vector2.h
1 // Copyright 2021 SMS
2 // License(Apache-2.0)
3 
4 #pragma once
5 
6 #include <cfloat>
7 #include <cmath>
8 
9 #include "Vector2i.h"
10 
19 class Vector2
20 {
21 public:
22  float x = 0.0f;
23  float y = 0.0f;
24 
28  Vector2() = default;
29 
36  Vector2(float x, float y);
37 
45  float size() const;
46 
52  float sizeSquared() const;
53 
61  float distance(const Vector2& point) const;
62 
70  float distanceSquared(const Vector2& point) const;
71 
75  Vector2& normalize();
76 
83  float dot(const Vector2& v) const;
84 
90  float angle() const;
91 
98  void rotate(const Vector2& point, float angle);
99 
103  Vector2 getMidPoint(const Vector2& p) const;
104 
108  float area() const;
109 
110  float& operator[](size_t index);
111 
112  bool operator==(const Vector2& v) const;
113  bool operator!=(const Vector2& v) const;
114  Vector2 operator*(float n) const;
115  Vector2 operator/(float n) const;
116  Vector2 operator+(const Vector2& v) const;
117  Vector2 operator-(const Vector2& v) const;
118  Vector2 operator-() const;
119  Vector2& operator+=(const Vector2& v);
120  Vector2& operator-=(const Vector2& v);
121  Vector2& operator*=(float n);
122  Vector2& operator/=(float n);
123 
124  Vector2 operator+(const Vector2i& v) const;
125  Vector2 operator-(const Vector2i& v) const;
126 
132  Vector2i asInt() const;
133 
134  operator Vector2i() const;
135 
136  static const Vector2 unit; // (1, 1)
137  static const Vector2 zero; // (0, 0)
138 
139  static const Vector2 up; // (0, 1)
140  static const Vector2 down; // (0, -1)
141  static const Vector2 right; // (1, 0)
142  static const Vector2 left; // (-1, 0)
143 };
144 
145 using Point2 = Vector2;
146 using Size2 = Vector2;
147 using Vec2 = Vector2;
148 
Vector2 & normalize()
标准化成单位向量.
Definition: Vector2.cpp:45
Vector2()=default
默认构造函数.
二维向量, 单精度浮点数.
Definition: Vector2.h:19
Vector2 getMidPoint(const Vector2 &p) const
获取与另一个点之间的中点.
Definition: Vector2.cpp:84
float dot(const Vector2 &v) const
计算向量点积.
Definition: Vector2.cpp:53
float distanceSquared(const Vector2 &point) const
获取到另一个点的距离的平方.
Definition: Vector2.cpp:38
float area() const
获取面积.
Definition: Vector2.cpp:89
void rotate(const Vector2 &point, float angle)
围绕指定点旋转指定弧度.
Definition: Vector2.cpp:63
float angle() const
获取角度.
Definition: Vector2.cpp:58
float size() const
获取长度.
Definition: Vector2.cpp:23
二维向量, 整型.
Definition: Vector2i.h:14
float sizeSquared() const
获取长度平方.
Definition: Vector2.cpp:28
Vector2i asInt() const
获取整型二维向量.
Definition: Vector2.cpp:180
float distance(const Vector2 &point) const
获取到另一个点的距离.
Definition: Vector2.cpp:33