diff --git a/range.go b/range.go index 57dbd20..ec9265d 100644 --- a/range.go +++ b/range.go @@ -38,7 +38,10 @@ func NewRange(min, max float64, divideCount int) Range { r := math.Abs(max - min) // 最小单位计算 - unit := 5 + unit := 2 + if r > 10 { + unit = 5 + } if r > 100 { unit = 20 } @@ -65,8 +68,7 @@ func (r *Range) getHeight(value float64) int { } func (r *Range) getRestHeight(value float64) int { - v := 1 - (value-r.Min)/(r.Max-r.Min) - return int(v * float64(r.Size)) + return r.Size - r.getHeight(value) } func (r *Range) GetRange(index int) (float64, float64) { diff --git a/range_test.go b/range_test.go index 151a0bb..b10002f 100644 --- a/range_test.go +++ b/range_test.go @@ -33,7 +33,7 @@ func TestRange(t *testing.T) { r := NewRange(0, 8, 6) assert.Equal(0.0, r.Min) - assert.Equal(30.0, r.Max) + assert.Equal(12.0, r.Max) r = NewRange(0, 12, 6) assert.Equal(0.0, r.Min) @@ -47,3 +47,30 @@ func TestRange(t *testing.T) { assert.Equal(0.0, r.Min) assert.Equal(480.0, r.Max) } + +func TestRangeHeightWidth(t *testing.T) { + assert := assert.New(t) + r := NewRange(0, 8, 6) + r.Size = 100 + + assert.Equal(33, r.getHeight(4)) + assert.Equal(67, r.getRestHeight(4)) + + assert.Equal(33, r.getWidth(4)) + r.Boundary = true + assert.Equal(41, r.getWidth(4)) +} + +func TestRangeGetRange(t *testing.T) { + assert := assert.New(t) + r := NewRange(0, 8, 6) + r.Size = 120 + + f1, f2 := r.GetRange(0) + assert.Equal(0.0, f1) + assert.Equal(20.0, f2) + + f1, f2 = r.GetRange(2) + assert.Equal(40.0, f1) + assert.Equal(60.0, f2) +}