diff --git a/mathutil/mathutil.go b/mathutil/mathutil.go index dc9db5b..5e20597 100644 --- a/mathutil/mathutil.go +++ b/mathutil/mathutil.go @@ -216,3 +216,17 @@ func RangeWithStep[T constraints.Integer | constraints.Float](start, end, step T return result } + +// AngleToRadian converts angle value to radian value. +// Play: todo +func AngleToRadian(angle float64) float64 { + radian := angle * (math.Pi / 180) + return radian +} + +// RadianToAngle converts radian value to angle value. +// Play: todo +func RadianToAngle(radian float64) float64 { + angle := radian * (180 / math.Pi) + return angle +} diff --git a/mathutil/mathutil_exmaple_test.go b/mathutil/mathutil_exmaple_test.go index 0e78e34..a44d48a 100644 --- a/mathutil/mathutil_exmaple_test.go +++ b/mathutil/mathutil_exmaple_test.go @@ -1,6 +1,9 @@ package mathutil -import "fmt" +import ( + "fmt" + "math" +) func ExampleExponent() { result1 := Exponent(10, 0) @@ -221,3 +224,33 @@ func ExampleRangeWithStep() { // [-4 -2 0] // [1 2.1 3.2] } + +func ExampleAngleToRadian() { + result1 := AngleToRadian(45) + result2 := AngleToRadian(90) + result3 := AngleToRadian(180) + + fmt.Println(result1) + fmt.Println(result2) + fmt.Println(result3) + + // Output: + // 0.7853981633974483 + // 1.5707963267948966 + // 3.141592653589793 +} + +func ExampleRadianToAngle() { + result1 := RadianToAngle(math.Pi) + result2 := RadianToAngle(math.Pi / 2) + result3 := RadianToAngle(math.Pi / 4) + + fmt.Println(result1) + fmt.Println(result2) + fmt.Println(result3) + + // Output: + // 180 + // 90 + // 45 +} diff --git a/mathutil/mathutil_test.go b/mathutil/mathutil_test.go index 8adcc93..1f713e0 100644 --- a/mathutil/mathutil_test.go +++ b/mathutil/mathutil_test.go @@ -1,6 +1,7 @@ package mathutil import ( + "math" "testing" "github.com/duke-git/lancet/v2/internal" @@ -139,7 +140,7 @@ func TestMinBy(t *testing.T) { } func TestRange(t *testing.T) { - assert := internal.NewAssert(t, "Range") + assert := internal.NewAssert(t, "TestRange") result1 := Range(1, 4) result2 := Range(1, -4) @@ -155,7 +156,7 @@ func TestRange(t *testing.T) { } func TestRangeWithStep(t *testing.T) { - assert := internal.NewAssert(t, "Range") + assert := internal.NewAssert(t, "TestRangeWithStep") result1 := RangeWithStep(1, 4, 1) result2 := RangeWithStep(1, -1, 0) @@ -167,3 +168,27 @@ func TestRangeWithStep(t *testing.T) { assert.Equal([]int{-4, -2, 0}, result3) assert.Equal([]float64{1.0, 2.1, 3.2}, result4) } + +func TestAngleToRadian(t *testing.T) { + assert := internal.NewAssert(t, "TestAngleToRadian") + + result1 := AngleToRadian(45) + result2 := AngleToRadian(90) + result3 := AngleToRadian(180) + + assert.Equal(0.7853981633974483, result1) + assert.Equal(1.5707963267948966, result2) + assert.Equal(3.141592653589793, result3) +} + +func TestRadianToAngle(t *testing.T) { + assert := internal.NewAssert(t, "TestAngleToRadian") + + result1 := RadianToAngle(math.Pi) + result2 := RadianToAngle(math.Pi / 2) + result3 := RadianToAngle(math.Pi / 4) + + assert.Equal(float64(180), result1) + assert.Equal(float64(90), result2) + assert.Equal(float64(45), result3) +}