[GRASS-SVN] r43553 - grass/branches/develbranch_6/raster/r.cost
svn_grass at osgeo.org
svn_grass at osgeo.org
Tue Sep 21 03:43:26 EDT 2010
Author: neteler
Date: 2010-09-21 07:43:26 +0000 (Tue, 21 Sep 2010)
New Revision: 43553
Modified:
grass/branches/develbranch_6/raster/r.cost/main.c
Log:
partial revert to original code with less divisions
Modified: grass/branches/develbranch_6/raster/r.cost/main.c
===================================================================
--- grass/branches/develbranch_6/raster/r.cost/main.c 2010-09-21 07:15:48 UTC (rev 43552)
+++ grass/branches/develbranch_6/raster/r.cost/main.c 2010-09-21 07:43:26 UTC (rev 43553)
@@ -849,113 +849,97 @@
case 1:
value = &W;
segment_get(&in_seg, value, row, col);
- fcost = (double)((W / 2.0) + (my_cost / 2.0));
+ fcost = (double)(W + my_cost) / 2.0;
min_cost = pres_cell->min_cost + fcost * EW_fac;
break;
case 2:
value = &E;
segment_get(&in_seg, value, row, col);
- fcost = (double)((E / 2.0) + (my_cost / 2.0));
+ fcost = (double)(E + my_cost) / 2.0;
min_cost = pres_cell->min_cost + fcost * EW_fac;
break;
case 3:
value = &N;
segment_get(&in_seg, value, row, col);
- fcost = (double)((N / 2.0) + (my_cost / 2.0));
+ fcost = (double)(N + my_cost) / 2.0;
min_cost = pres_cell->min_cost + fcost * NS_fac;
break;
case 4:
value = &S;
segment_get(&in_seg, value, row, col);
- fcost = (double)((S / 2.0) + (my_cost / 2.0));
+ fcost = (double)(S + my_cost) / 2.0;
min_cost = pres_cell->min_cost + fcost * NS_fac;
break;
case 5:
value = &NW;
segment_get(&in_seg, value, row, col);
- fcost = (double)((NW / 2.0) + (my_cost / 2.0));
+ fcost = (double)(NW + my_cost) / 2.0;
min_cost = pres_cell->min_cost + fcost * DIAG_fac;
break;
case 6:
value = ≠
segment_get(&in_seg, value, row, col);
- fcost = (double)((NE / 2.0) + (my_cost / 2.0));
+ fcost = (double)(NE + my_cost) / 2.0;
min_cost = pres_cell->min_cost + fcost * DIAG_fac;
break;
case 7:
value = &SE;
segment_get(&in_seg, value, row, col);
- fcost = (double)((SE / 2.0) + (my_cost / 2.0));
+ fcost = (double)(SE + my_cost) / 2.0;
min_cost = pres_cell->min_cost + fcost * DIAG_fac;
break;
case 8:
value = &SW;
segment_get(&in_seg, value, row, col);
- fcost = (double)((SW / 2.0) + (my_cost / 2.0));
+ fcost = (double)(SW + my_cost) / 2.0;
min_cost = pres_cell->min_cost + fcost * DIAG_fac;
break;
case 9:
value = &NNW;
segment_get(&in_seg, value, row, col);
- fcost =
- (double)((N / 4.0) + (NW / 4.0) + (NNW / 4.0) +
- (my_cost / 4.0));
+ fcost = (double)(N + NW + NNW + my_cost) / 4.0;
min_cost = pres_cell->min_cost + fcost * V_DIAG_fac;
break;
case 10:
value = &NNE;
segment_get(&in_seg, value, row, col);
- fcost =
- (double)((N / 4.0) + (NE / 4.0) + (NNE / 4.0) +
- (my_cost / 4.0));
+ fcost = (double)(N + NE + NNE + my_cost) / 4.0;
min_cost = pres_cell->min_cost + fcost * V_DIAG_fac;
break;
case 11:
value = &SSE;
segment_get(&in_seg, value, row, col);
- fcost =
- (double)((S / 4.0) + (SE / 4.0) + (SSE / 4.0) +
- (my_cost / 4.0));
+ fcost = (double)(S + SE + SSE + my_cost) / 4.0;
min_cost = pres_cell->min_cost + fcost * V_DIAG_fac;
break;
case 12:
value = &SSW;
segment_get(&in_seg, value, row, col);
- fcost =
- (double)((S / 4.0) + (SW / 4.0) + (SSW / 4.0) +
- (my_cost / 4.0));
+ fcost = (double)(S + SW + SSW + my_cost) / 4.0;
min_cost = pres_cell->min_cost + fcost * V_DIAG_fac;
break;
case 13:
value = &WNW;
segment_get(&in_seg, value, row, col);
- fcost =
- (double)((W / 4.0) + (NW / 4.0) + (WNW / 4.0) +
- (my_cost / 4.0));
+ fcost = (double)(W + NW + WNW + my_cost) / 4.0;
min_cost = pres_cell->min_cost + fcost * H_DIAG_fac;
break;
case 14:
value = &ENE;
segment_get(&in_seg, value, row, col);
- fcost =
- (double)((E / 4.0) + (NE / 4.0) + (ENE / 4.0) +
- (my_cost / 4.0));
+ fcost = (double)(E + NE + ENE + my_cost) / 4.0;
min_cost = pres_cell->min_cost + fcost * H_DIAG_fac;
break;
case 15:
value = &ESE;
segment_get(&in_seg, value, row, col);
- fcost =
- (double)((E / 4.0) + (SE / 4.0) + (ESE / 4.0) +
- (my_cost / 4.0));
+ fcost = (double)(E + SE + ESE + my_cost) / 4.0;
min_cost = pres_cell->min_cost + fcost * H_DIAG_fac;
break;
case 16:
value = &WSW;
segment_get(&in_seg, value, row, col);
- fcost =
- (double)((W / 4.0) + (SW / 4.0) + (WSW / 4.0) +
- (my_cost / 4.0));
+ fcost = (double)(W + SW + WSW + my_cost) / 4.0;
min_cost = pres_cell->min_cost + fcost * H_DIAG_fac;
break;
}
More information about the grass-commit
mailing list