[Freeciv-Dev] Re: [PATCH] base_real_map_distance (PR#1049)
[Top] [All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index] [Thread Index]
On Thu, Nov 01, 2001 at 06:26:48AM -0800, jdorje@xxxxxxxxxxxxxxxxxxxxx wrote:
> This patch introduces a new topology function,
> base_real_map_distance(). It performs a similar function to
> real_map_distance, but also finds a distance vector from the source to
> the destination coordinate pair. It also replaces xdist and ydist.
>
> A function like this is absolutely essential for iso-rectangular
> topologies. xdist() and ydist() will not work because you cannot find
> the distance along one coordinate axis independently of the other.
>
> + /* We assume base_real_map_distance gives us the vector with
> + the minimum squared distance. Right now this is true. */
> + /* We assume base_real_map_distance gives us the vector with
> + the minimum map distance. Right now this is true. */
> +Topology function to find the minimum "real" distance between positions
> +(x0, y0) and (x1, y1). We find not only the distance but the vector
The two comments indicate that the semantics and the description of
base_real_map_distance could change. Why?
> {
> int diff_x, diff_y, dx, dy, scalar_product;
>
> - if (dest_x > src_x) {
> - diff_x = dest_x - src_x < map.xsize / 2 ? 1 : -1;
> - } else if (dest_x < src_x) {
> - diff_x = src_x - dest_x < map.xsize / 2 ? -1 : 1;
> - } else { /* dest_x == src_x */
> - diff_x = 0;
> - }
> - if (dest_y != src_y)
> - diff_y = dest_y > src_y ? 1 : -1;
> - else
> - diff_y = 0;
> + base_real_map_distance(&diff_x, &diff_y, src_x, src_y, dest_x, dest_y);
This looks wrong. Value range of old diff_[xy] was {-1,0,1}.
Raimar
--
email: rf13@xxxxxxxxxxxxxxxxx
1 + 1 = 3, for large values of 1
|
|