Complete.Org: Mailing Lists: Archives: freeciv-dev: April 2003:
[Freeciv-Dev] Re: (PR#3936) introducing native coordinates
Home

[Freeciv-Dev] Re: (PR#3936) introducing native coordinates

[Top] [All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index] [Thread Index]
Cc: freeciv-dev@xxxxxxxxxxx
Subject: [Freeciv-Dev] Re: (PR#3936) introducing native coordinates
From: Jason Dorje Short <vze49r5w@xxxxxxxxxxx>
Date: Sun, 13 Apr 2003 17:37:59 -0500
Reply-to: jdorje@xxxxxxxxxxxxxxxxxxxxx

Raimar Falke wrote:
On Sun, Apr 13, 2003 at 04:51:46AM -0500, Jason Dorje Short wrote:

Raimar Falke wrote:

On Sat, Apr 12, 2003 at 08:24:06AM +0200, Raimar Falke wrote:


but square_iterate and other local functions cannot be implemented
in these coordinates

Why not? In the worst case I calculate all the vectors by
hand and hardcode them. Something like:


Actually there is a "portable" way to do square_iterate: using
MAPSTEP.

At the start you go radius times NW.

At the body you do a STEP W. This radius times. Than a STEP S. Than
radius steps E and so on.

This is a clever(ish) way to define an operation on "native" coordinates that really uses map coordinates. Unfortunately, in addition to

being extremely inelegant

I disagree. It is one place less which is topology dependent.

Actually it is one more place which is topology dependent - since this (DIR_DX/DIR_DY) would not otherwise be a topology-dependent operation. The only places that care whether the topology is isometric are native_to_map_pos, map_to_native_pos, and the mapview window-clipping function.

Additionally, you are defining map directions in terms of map
coordinates, rather than native coordinates - even though you
propose to remove map coordinates from the code.

In the current code everything is a map coordinate. Map coordinates in
your proposal are similar to the effective form in my proposal. My
coordinates however are similar to your native coordinates.

In the current code everything is a map and a native coordinate, since the two are identical for non-iso maps. The effective form in your proposal is equivalent to native coordinates.

If the directions don't even line up with your map, how is anyone
supposed to understand what's going on?

I think it is easier to understand one set of coordinates where
MAPSTEP does a magic thing as multiple sets of coordinates.

The problem is (1) the set of coordinates is itself very non-intuitive and (2) the hacks you have to do to get local operations to work are error-prone and non-intuitive. Better to introduce a single, freeciv-wide solution that is easily understandable (explained in doc/HACKING) and works for everything.

Note, all of these are trivial if you are simply willing to do them
in map coordinates.

Yes. But you don't have to scare people by introducing multiple
coordinates (you have scared and confused me) and if these are only
used in one function (map_distance_vector). square_iterate and MAPSTEP
can be easy done without them as outlines before.

My original patch requested feedback on the explanation it provided in doc/HACKING. Perhaps we should start this discussion over, and you can tell me what scares/confuses you.

jason



[Prev in Thread] Current Thread [Next in Thread]