[Mono] Vector2/3 Project methods

This commit is contained in:
Aaron Franke 2018-08-22 13:27:35 -04:00
parent 334acc017f
commit 434973fb83
4 changed files with 12 additions and 2 deletions

View file

@ -122,7 +122,7 @@ Vector2 Vector2::rotated(real_t p_by) const {
} }
Vector2 Vector2::project(const Vector2 &p_b) const { Vector2 Vector2::project(const Vector2 &p_b) const {
return p_b * (dot(p_b) / p_b.dot(p_b)); return p_b * (dot(p_b) / p_b.length_squared());
} }
Vector2 Vector2::snapped(const Vector2 &p_by) const { Vector2 Vector2::snapped(const Vector2 &p_by) const {

View file

@ -241,7 +241,7 @@ real_t Vector3::distance_squared_to(const Vector3 &p_b) const {
} }
Vector3 Vector3::project(const Vector3 &p_b) const { Vector3 Vector3::project(const Vector3 &p_b) const {
return p_b * (dot(p_b) / p_b.dot(p_b)); return p_b * (dot(p_b) / p_b.length_squared());
} }
real_t Vector3::angle_to(const Vector3 &p_b) const { real_t Vector3::angle_to(const Vector3 &p_b) const {

View file

@ -184,6 +184,11 @@ namespace Godot
return result; return result;
} }
public Vector2 Project(Vector2 onNormal)
{
return onNormal * (Dot(onNormal) / onNormal.LengthSquared());
}
public Vector2 Reflect(Vector2 n) public Vector2 Reflect(Vector2 n)
{ {
return 2.0f * n * Dot(n) - this; return 2.0f * n * Dot(n) - this;

View file

@ -210,6 +210,11 @@ namespace Godot
); );
} }
public Vector3 Project(Vector3 onNormal)
{
return onNormal * (Dot(onNormal) / onNormal.LengthSquared());
}
public Vector3 Reflect(Vector3 n) public Vector3 Reflect(Vector3 n)
{ {
#if DEBUG #if DEBUG