@@ -5,17 +5,18 @@ namespace g3
5
5
public class Snapping
6
6
{
7
7
8
- public static double SnapToIncrement ( double fValue , double fIncrement )
8
+ public static double SnapToIncrement ( double fValue , double fIncrement , double offset = 0 )
9
9
{
10
10
if ( ! MathUtil . IsFinite ( fValue ) )
11
11
return 0 ;
12
+ fValue -= offset ;
12
13
double sign = Math . Sign ( fValue ) ;
13
14
fValue = Math . Abs ( fValue ) ;
14
15
int nInc = ( int ) ( fValue / fIncrement ) ;
15
16
double fRem = fValue % fIncrement ;
16
17
if ( fRem > fIncrement / 2 )
17
18
++ nInc ;
18
- return sign * ( double ) nInc * fIncrement ;
19
+ return sign * ( double ) nInc * fIncrement + offset ;
19
20
}
20
21
21
22
@@ -46,14 +47,14 @@ private static double SnapToIncrementSigned(double fValue, double fIncrement, bo
46
47
47
48
}
48
49
49
- public static double SnapToIncrementLow ( double fValue , double fIncrement )
50
+ public static double SnapToIncrementLow ( double fValue , double fIncrement , double offset = 0 )
50
51
{
51
- return SnapToIncrementSigned ( fValue , fIncrement , true ) ;
52
+ return SnapToIncrementSigned ( fValue - offset , fIncrement , true ) + offset ;
52
53
}
53
54
54
- public static double SnapToIncrementHigh ( double fValue , double fIncrement )
55
+ public static double SnapToIncrementHigh ( double fValue , double fIncrement , double offset = 0 )
55
56
{
56
- return SnapToIncrementSigned ( fValue , fIncrement , false ) ;
57
+ return SnapToIncrementSigned ( fValue - offset , fIncrement , false ) + offset ;
57
58
}
58
59
}
59
60
}
0 commit comments