admin
2025-01-22 7e31442f0e9b07764e9c6a9680d3d4aeba5fe1de
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
Quintiq file version 2.0
#parent: #root
StaticMethod NearestGridPoint (
  Number x,
  Number y,
  output Number gridx_o,
  output Number gridy_o,
  Number gridpointdistance
) declarative remote
{
  Description: 'Get the nearest grid point'
  TextBody:
  [*
    if( x.IsFinite() and y.IsFinite() ) //check if x or y is not MinValue or MaxValue
    {
      gridpointdistance := maxvalue( gridpointdistance, 1 );  //avoid division by zero
    
    
      rx := x mod gridpointdistance;
      gridx_o := ( x - rx ) div gridpointdistance;
      if( 2*rx >= gridpointdistance )
      {
        gridx_o++;
      }
    
      ry := y mod gridpointdistance;
      gridy_o := ( y - ry ) div gridpointdistance;
      if( 2*ry >= gridpointdistance )
      {
        gridy_o++;
      }
    }
  *]
}