feat: geometry.Point 支持 Abs、Min、Max 运算
This commit is contained in:
parent
0481194f74
commit
269662486b
|
@ -146,7 +146,7 @@ func CalcNewCoordinate[V generic.SignedNumber](x, y, angle, distance V) (newX, n
|
||||||
}
|
}
|
||||||
|
|
||||||
// CalcAngleDifference 计算两个角度之间的最小角度差
|
// CalcAngleDifference 计算两个角度之间的最小角度差
|
||||||
func CalcAngleDifference[V generic.Number](angleA, angleB V) V {
|
func CalcAngleDifference[V generic.SignedNumber](angleA, angleB V) V {
|
||||||
pi := math.Pi
|
pi := math.Pi
|
||||||
t := angleA - angleB
|
t := angleA - angleB
|
||||||
a := t + V(pi)
|
a := t + V(pi)
|
||||||
|
|
|
@ -79,6 +79,37 @@ func (slf Point[V]) Div(point Point[V]) Point[V] {
|
||||||
return NewPoint(slf.GetX()/point.GetX(), slf.GetY()/point.GetY())
|
return NewPoint(slf.GetX()/point.GetX(), slf.GetY()/point.GetY())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Abs 返回位置的绝对值
|
||||||
|
func (slf Point[V]) Abs() Point[V] {
|
||||||
|
return NewPoint(V(math.Abs(float64(slf.GetX()))), V(math.Abs(float64(slf.GetY()))))
|
||||||
|
}
|
||||||
|
|
||||||
|
// Max 返回两个位置中每个维度的最大值组成的新的位置
|
||||||
|
func (slf Point[V]) Max(point Point[V]) Point[V] {
|
||||||
|
x, y := slf.GetXY()
|
||||||
|
px, py := point.GetXY()
|
||||||
|
if px > x {
|
||||||
|
x = px
|
||||||
|
}
|
||||||
|
if py > y {
|
||||||
|
y = py
|
||||||
|
}
|
||||||
|
return NewPoint(x, y)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Max 返回两个位置中每个维度的最小值组成的新的位置
|
||||||
|
func (slf Point[V]) Min(point Point[V]) Point[V] {
|
||||||
|
x, y := slf.GetXY()
|
||||||
|
px, py := point.GetXY()
|
||||||
|
if px < x {
|
||||||
|
x = px
|
||||||
|
}
|
||||||
|
if py < y {
|
||||||
|
y = py
|
||||||
|
}
|
||||||
|
return NewPoint(x, y)
|
||||||
|
}
|
||||||
|
|
||||||
// NewPointCap 创建一个由 x、y 坐标组成的点,这个点具有一个数据容量
|
// NewPointCap 创建一个由 x、y 坐标组成的点,这个点具有一个数据容量
|
||||||
func NewPointCap[V generic.SignedNumber, D any](x, y V) PointCap[V, D] {
|
func NewPointCap[V generic.SignedNumber, D any](x, y V) PointCap[V, D] {
|
||||||
return PointCap[V, D]{
|
return PointCap[V, D]{
|
||||||
|
|
Loading…
Reference in New Issue