vector/govector_test.go

158 lines
2.2 KiB
Go
Raw Normal View History

2013-08-08 20:34:27 -07:00
package govector
import (
2013-08-08 21:54:52 -07:00
"fmt"
"math"
2013-08-08 20:34:27 -07:00
"testing"
)
2013-08-08 21:54:52 -07:00
func TestSubMag(t *testing.T) {
2013-08-08 20:36:15 -07:00
p1 := Point2d{10, 10}
2013-08-08 21:54:52 -07:00
p2 := Point2d{7, 6}
2013-08-08 20:34:27 -07:00
2013-08-08 23:08:22 -07:00
v := p1.Sub(p2)
2013-08-08 20:34:27 -07:00
2013-08-08 21:54:52 -07:00
if v != (Vector2d{3, 4}) {
2013-08-08 20:34:27 -07:00
t.Errorf("Sub Error")
}
2013-08-08 23:08:22 -07:00
m := v.Mag()
2013-08-08 20:34:27 -07:00
2013-08-08 21:54:52 -07:00
if m != 5 {
t.Errorf("Mag Error")
}
}
func TestScale(t *testing.T) {
v := Vector2d{3, 4}
2013-08-08 23:08:22 -07:00
m := v.Mag()
2013-08-08 20:34:27 -07:00
if m != 5 {
t.Errorf("Mag Error")
}
2013-08-08 21:54:52 -07:00
2013-08-08 23:08:22 -07:00
m2 := v.Scale(2)
2013-08-08 21:54:52 -07:00
fmt.Printf("%v\n", m2)
2013-08-08 23:08:22 -07:00
if m2.Mag() != 10 {
2013-08-08 21:54:52 -07:00
t.Errorf("Mag Error")
}
}
func TestAdd(t *testing.T) {
p := Point2d{10, 10}
v := Vector2d{3, 4}
2013-08-08 23:08:22 -07:00
m := p.Add(v)
2013-08-08 21:54:52 -07:00
fmt.Printf("%v\n", m)
if m.X != 13 && m.Y != 14 {
t.Errorf("Add Error")
}
2013-08-08 20:34:27 -07:00
}
2013-08-08 23:08:22 -07:00
func TestNormalize(t *testing.T) {
v := Vector2d{3, 4}
vn := v.Normalize()
if vn.Mag() != 1 {
t.Errorf("Normalize Error")
}
2013-08-08 23:14:18 -07:00
v0 := Vector2d{0, 0}
vn0 := v0.Normalize()
if vn0.Mag() != 0 {
t.Errorf("Normalize Error")
}
2013-08-08 23:08:22 -07:00
}
func TestDot(t *testing.T) {
v1 := Vector2d{0, 5}
v2 := Vector2d{5, 0}
d := v1.Dot(v2)
if d != 0 {
t.Errorf("Dot Error")
}
v1 = Vector2d{1, 5}
v2 = Vector2d{5, 0}
d = v1.Dot(v2)
if d < 0 {
t.Errorf("Dot Error")
}
v1 = Vector2d{-1, 5}
v2 = Vector2d{5, 0}
d = v1.Dot(v2)
if d > 0 {
t.Errorf("Dot Error")
}
v1 = Vector2d{5, 5}
v2 = Vector2d{5, 0}
v1 = v1.Normalize()
v2 = v2.Normalize()
d = v1.Dot(v2)
fmt.Printf("%v\n", d)
if math.Abs(d-math.Acos(math.Pi/4)) < 0.0001 {
t.Errorf("Dot Error")
}
}
func TestIntersection(t *testing.T) {
p1 := Point2d{0, 5}
p2 := Point2d{5, 0}
v1 := Vector2d{10, 0}
v2 := Vector2d{0, 10}
i, p := Intersection(p1, p2, v1, v2)
fmt.Printf("%v %v\n", i, p)
if !i {
t.Errorf("Intersection Error")
}
2013-09-21 18:34:53 -07:00
p1 = Point2d{20, 5}
p2 = Point2d{5, 0}
2013-09-21 18:34:53 -07:00
v1 = Vector2d{10, 0}
v2 = Vector2d{0, 10}
2013-09-21 18:34:53 -07:00
i, p = Intersection(p1, p2, v1, v2)
fmt.Printf("%v %v\n", i, p)
if i {
t.Errorf("Intersection Error")
}
}
func TestAngle(t *testing.T) {
v1 := Vector2d{10, 0}
v2 := Vector2d{0, 10}
a := Angle(v2, v1)
fmt.Printf("%v %v %f\n", v1, v2, a*rad2deg)
if math.Abs(a-math.Pi/2) > epsilon {
t.Errorf("Angle Error")
}
v1 = Vector2d{5, 0}
v2 = Vector2d{10, 10}
a = Angle(v1, v2)
fmt.Printf("%v %v %f\n", v1, v2, a*rad2deg)
if math.Abs(a-math.Pi/4) > epsilon {
t.Errorf("Angle Error")
}
}