Moved integer related methods to separate package.
This commit is contained in:
parent
40abdf0439
commit
fc18ea9ce8
@ -1,4 +1,4 @@
|
|||||||
package geom
|
package ints
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"bytes"
|
"bytes"
|
||||||
@ -6,14 +6,6 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
)
|
)
|
||||||
|
|
||||||
// AbsInt returns the absolute value of i.
|
|
||||||
func AbsInt(i int) int {
|
|
||||||
if 0 > i {
|
|
||||||
return -i
|
|
||||||
}
|
|
||||||
return i
|
|
||||||
}
|
|
||||||
|
|
||||||
// Itoa returns i as a string.
|
// Itoa returns i as a string.
|
||||||
func Itoa(i int) string {
|
func Itoa(i int) string {
|
||||||
return strconv.Itoa(i)
|
return strconv.Itoa(i)
|
||||||
@ -48,38 +40,6 @@ func FmtInts64(ints []int64, sep string) string {
|
|||||||
return out.String()
|
return out.String()
|
||||||
}
|
}
|
||||||
|
|
||||||
// MinInt returns the minimum of a and b.
|
|
||||||
func MinInt(a, b int) int {
|
|
||||||
if a < b {
|
|
||||||
return a
|
|
||||||
}
|
|
||||||
return b
|
|
||||||
}
|
|
||||||
|
|
||||||
// MinInt64 returns the minimum of a and b.
|
|
||||||
func MinInt64(a, b int64) int64 {
|
|
||||||
if a < b {
|
|
||||||
return a
|
|
||||||
}
|
|
||||||
return b
|
|
||||||
}
|
|
||||||
|
|
||||||
// MaxInt returns the maximum of a and b.
|
|
||||||
func MaxInt(a, b int) int {
|
|
||||||
if a > b {
|
|
||||||
return a
|
|
||||||
}
|
|
||||||
return b
|
|
||||||
}
|
|
||||||
|
|
||||||
// MaxInt64 returns the maximum of a and b.
|
|
||||||
func MaxInt64(a, b int64) int64 {
|
|
||||||
if a > b {
|
|
||||||
return a
|
|
||||||
}
|
|
||||||
return b
|
|
||||||
}
|
|
||||||
|
|
||||||
// MustAtoi parses string s as an integer. Method panics if the conversion fails.
|
// MustAtoi parses string s as an integer. Method panics if the conversion fails.
|
||||||
func MustAtoi(s string) int {
|
func MustAtoi(s string) int {
|
||||||
var i, err = strconv.Atoi(s)
|
var i, err = strconv.Atoi(s)
|
||||||
@ -116,28 +76,6 @@ func MustAstois64(s ...string) []int64 {
|
|||||||
return res
|
return res
|
||||||
}
|
}
|
||||||
|
|
||||||
// NormInt returns the normalized value of i (-1, 0 or 1).
|
|
||||||
func NormInt(i int) int {
|
|
||||||
if i < 0 {
|
|
||||||
return -1
|
|
||||||
}
|
|
||||||
if i > 0 {
|
|
||||||
return 1
|
|
||||||
}
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
|
|
||||||
// NormInt64 returns the normalized value of i (-1, 0 or 1).
|
|
||||||
func NormInt64(i int64) int64 {
|
|
||||||
if i < 0 {
|
|
||||||
return -1
|
|
||||||
}
|
|
||||||
if i > 0 {
|
|
||||||
return 1
|
|
||||||
}
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
|
|
||||||
// SplitInts splits the string s by separator sep, converts every part to an integer and returns all the integers as a slice. Method panics if one of the conversion fails.
|
// SplitInts splits the string s by separator sep, converts every part to an integer and returns all the integers as a slice. Method panics if one of the conversion fails.
|
||||||
func SplitInts(s, sep string) []int {
|
func SplitInts(s, sep string) []int {
|
||||||
var numbers = strings.Split(s, sep)
|
var numbers = strings.Split(s, sep)
|
||||||
@ -157,11 +95,3 @@ func SplitInts64(s, sep string) []int64 {
|
|||||||
}
|
}
|
||||||
return ints
|
return ints
|
||||||
}
|
}
|
||||||
|
|
||||||
// SubAbsInt subtracts a from b and returns the absolute value of the result.
|
|
||||||
func SubAbsInt(a, b int) int {
|
|
||||||
if a > b {
|
|
||||||
return a - b
|
|
||||||
}
|
|
||||||
return b - a
|
|
||||||
}
|
|
71
ints/math.go
Normal file
71
ints/math.go
Normal file
@ -0,0 +1,71 @@
|
|||||||
|
package ints
|
||||||
|
|
||||||
|
// Abs returns the absolute value of i.
|
||||||
|
func Abs(i int) int {
|
||||||
|
if 0 > i {
|
||||||
|
return -i
|
||||||
|
}
|
||||||
|
return i
|
||||||
|
}
|
||||||
|
|
||||||
|
// Min returns the minimum of a and b.
|
||||||
|
func Min(a, b int) int {
|
||||||
|
if a < b {
|
||||||
|
return a
|
||||||
|
}
|
||||||
|
return b
|
||||||
|
}
|
||||||
|
|
||||||
|
// Min64 returns the minimum of a and b.
|
||||||
|
func Min64(a, b int64) int64 {
|
||||||
|
if a < b {
|
||||||
|
return a
|
||||||
|
}
|
||||||
|
return b
|
||||||
|
}
|
||||||
|
|
||||||
|
// Max returns the maximum of a and b.
|
||||||
|
func Max(a, b int) int {
|
||||||
|
if a > b {
|
||||||
|
return a
|
||||||
|
}
|
||||||
|
return b
|
||||||
|
}
|
||||||
|
|
||||||
|
// Max64 returns the maximum of a and b.
|
||||||
|
func Max64(a, b int64) int64 {
|
||||||
|
if a > b {
|
||||||
|
return a
|
||||||
|
}
|
||||||
|
return b
|
||||||
|
}
|
||||||
|
|
||||||
|
// Norm returns the normalized value of i (-1, 0 or 1).
|
||||||
|
func Norm(i int) int {
|
||||||
|
if i < 0 {
|
||||||
|
return -1
|
||||||
|
}
|
||||||
|
if i > 0 {
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
// Norm64 returns the normalized value of i (-1, 0 or 1).
|
||||||
|
func Norm64(i int64) int64 {
|
||||||
|
if i < 0 {
|
||||||
|
return -1
|
||||||
|
}
|
||||||
|
if i > 0 {
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
// SubAbs subtracts a from b and returns the absolute value of the result.
|
||||||
|
func SubAbs(a, b int) int {
|
||||||
|
if a > b {
|
||||||
|
return a - b
|
||||||
|
}
|
||||||
|
return b - a
|
||||||
|
}
|
8
point.go
8
point.go
@ -2,6 +2,8 @@ package geom
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
|
||||||
|
"opslag.de/schobers/geom/ints"
|
||||||
)
|
)
|
||||||
|
|
||||||
// ZeroPt represents the coordinate (0, 0)
|
// ZeroPt represents the coordinate (0, 0)
|
||||||
@ -39,7 +41,7 @@ func NewPt(x, y int) *Point {
|
|||||||
|
|
||||||
// Abs returns a point the absolute values of X and Y.
|
// Abs returns a point the absolute values of X and Y.
|
||||||
func (p Point) Abs() Point {
|
func (p Point) Abs() Point {
|
||||||
return Pt(AbsInt(p.X), AbsInt(p.Y))
|
return Pt(ints.Abs(p.X), ints.Abs(p.Y))
|
||||||
}
|
}
|
||||||
|
|
||||||
// Add returns the sum of p and q.
|
// Add returns the sum of p and q.
|
||||||
@ -62,7 +64,7 @@ func (p Point) Less(q Point) bool {
|
|||||||
|
|
||||||
// DistInt returns the integer distance between the points p and q.
|
// DistInt returns the integer distance between the points p and q.
|
||||||
func (p Point) DistInt(q Point) int {
|
func (p Point) DistInt(q Point) int {
|
||||||
return SubAbsInt(p.X, q.X) + SubAbsInt(p.Y, q.Y)
|
return ints.SubAbs(p.X, q.X) + ints.SubAbs(p.Y, q.Y)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Mul multiplier the X and Y values of point p with t and returns the result.
|
// Mul multiplier the X and Y values of point p with t and returns the result.
|
||||||
@ -72,7 +74,7 @@ func (p Point) Mul(t int) Point {
|
|||||||
|
|
||||||
// Norm returns the point with both X and Y normalized.
|
// Norm returns the point with both X and Y normalized.
|
||||||
func (p Point) Norm() Point {
|
func (p Point) Norm() Point {
|
||||||
return Pt(NormInt(p.X), NormInt(p.Y))
|
return Pt(ints.Norm(p.X), ints.Norm(p.Y))
|
||||||
}
|
}
|
||||||
|
|
||||||
// String returns a string representation of point p "X, Y".
|
// String returns a string representation of point p "X, Y".
|
||||||
|
Loading…
Reference in New Issue
Block a user