@@ -10,17 +10,13 @@ fn fwd(op: &Op, _ctx: &dyn Context, operands: &mut dyn CoordinateSet) -> usize {
10
10
let a = ellps. semimajor_axis ( ) ;
11
11
12
12
let mut successes = 0_usize ;
13
- let length = operands. len ( ) ;
14
- for i in 0 ..length {
15
- let mut coord = operands. get_coord ( i) ;
16
- // Easting
17
- coord[ 0 ] *= a;
13
+ for i in 0 ..operands. len ( ) {
14
+ let ( lon, lat) = operands. xy ( i) ;
18
15
19
- // Northing
20
- let lat = coord[ 1 ] ;
21
- coord[ 1 ] = a * ( FRAC_PI_4 + lat / 2.0 ) . tan ( ) . ln ( ) ;
16
+ let easting = lon * a;
17
+ let northing = a * ( FRAC_PI_4 + lat / 2.0 ) . tan ( ) . ln ( ) ;
22
18
23
- operands. set_coord ( i, & coord ) ;
19
+ operands. set_xy ( i, easting , northing ) ;
24
20
successes += 1 ;
25
21
}
26
22
@@ -34,17 +30,16 @@ fn inv(op: &Op, _ctx: &dyn Context, operands: &mut dyn CoordinateSet) -> usize {
34
30
let a = ellps. semimajor_axis ( ) ;
35
31
36
32
let mut successes = 0_usize ;
37
- let length = operands. len ( ) ;
38
- for i in 0 ..length {
39
- let mut coord = operands. get_coord ( i) ;
33
+ for i in 0 ..operands. len ( ) {
34
+ let ( easting, northing) = operands. xy ( i) ;
40
35
41
36
// Easting -> Longitude
42
- coord [ 0 ] /= a;
37
+ let longitude = easting / a;
43
38
44
39
// Northing -> Latitude
45
- coord [ 1 ] = FRAC_PI_2 - 2.0 * ( -coord [ 1 ] / a) . exp ( ) . atan ( ) ;
40
+ let latitude = FRAC_PI_2 - 2.0 * ( -northing / a) . exp ( ) . atan ( ) ;
46
41
47
- operands. set_coord ( i, & coord ) ;
42
+ operands. set_xy ( i, longitude , latitude ) ;
48
43
successes += 1 ;
49
44
}
50
45
0 commit comments