|
@@ -164,9 +164,20 @@ func SortVec2(v1, v2 *Vec2) (*Vec2, *Vec2) {
|
|
|
return v1, v2
|
|
|
}
|
|
|
|
|
|
+func (v *Vec2) Within(v1, v2 *Vec2) bool {
|
|
|
+ if v == nil || v1 == nil || v2 == nil {
|
|
|
+ return false
|
|
|
+ }
|
|
|
+ if v1.EqualTo(v2) && !v.EqualTo(v1) {
|
|
|
+ return false
|
|
|
+ }
|
|
|
+ v1, v2 = SortVec2(v1, v2)
|
|
|
+ return v.GreaterThan(v1) && v.LessThan(v2)
|
|
|
+}
|
|
|
+
|
|
|
func (v *Vec2) Distance(axis ...int64) int64 {
|
|
|
if v == nil {
|
|
|
- return 0
|
|
|
+ return -1
|
|
|
}
|
|
|
if len(axis) == 0 {
|
|
|
return v.X + v.Y
|
|
@@ -194,11 +205,8 @@ func (v *Vec2) Distance(axis ...int64) int64 {
|
|
|
}
|
|
|
|
|
|
func (v *Vec2) DistanceTo(o *Vec2) int64 {
|
|
|
- if v == nil {
|
|
|
- return 0
|
|
|
- }
|
|
|
- if o == nil {
|
|
|
- return v.Distance()
|
|
|
+ if v == nil || o == nil {
|
|
|
+ return -1
|
|
|
}
|
|
|
x := v.X - o.X
|
|
|
y := v.Y - o.Y
|
|
@@ -224,6 +232,19 @@ func (v *Vec2) Abs() *Vec2 {
|
|
|
return v
|
|
|
}
|
|
|
|
|
|
+func (v *Vec2) NegAbs() *Vec2 {
|
|
|
+ if v == nil {
|
|
|
+ return nil
|
|
|
+ }
|
|
|
+ if v.X > 0 {
|
|
|
+ v.X = -v.X
|
|
|
+ }
|
|
|
+ if v.Y > 0 {
|
|
|
+ v.Y = -v.Y
|
|
|
+ }
|
|
|
+ return v
|
|
|
+}
|
|
|
+
|
|
|
func (v *Vec2) Negate() *Vec2 {
|
|
|
if v == nil {
|
|
|
return nil
|