[Gambas-user] Coordinate system in Gambas Graphics

Lee McPherson leemcpherson at ...626...
Tue Dec 16 02:14:59 CET 2008


Forgive me for not following the whole thread, but are you trying to 
convert a spherical lat and long to a planar x,y coordinate system?  Or 
are you starting with those distorted maps where Greenland is the size 
of the United States on a flat map? 

Because if you want to use real world maps and data on a flat plane, 
you'll have to do some more math.  There are several ways to do this if 
you're looking for accuracy.  The military and other agencies use UTM.  
http://www.uwgb.edu/dutchs/UsefulData/UTMFormulas.htm 

-Lee

Jesus Guardon wrote:
> Hi Doriano and list
>
> First of all, many thanks for your input. 
>
> Yes, you are right about geographic coordinates; in real world the
> intersection between Ecuatorial line and Greenwich meridian is the
> coordinate 0;0.  Meridians above increase up to 90 degrees to North and
> below to -90 South. By the way, parallels increase up to 180 deg to East and
> -180 to West from Greenwich (parallel 0). So the upper left corner (in case
> of a whole World map) should be -180;90 and the lower right corner 180;-90.
> Based on this, the result rectangle will be 360 units wide * 180 units tall. 
>
> But still is unclear if I can use negative values mapped to a rectangle, as
> you appointed in your previous post. The idea is to have a procedure that
> can do e.g.  drawCoordinate(-3, 40), and draws a point (or whatever I want)
> on the correct place.
>
> Let me play for a while with your program, write some garbage on my notebook
> and I will post here my results. Again, thank you for your interest.
>
> Jesus Guardon
>
> Gambas 2.9 
>
>
> Doriano Blengino wrote:
>   
>> I've set up a simple project to show how the transformation matrix works.
>> It draws a line from (0;0) to an arbitrary point you specify in LX: and
>> LY:.
>> You can play with Draw.XXX fields to see they effect.
>> What I discovered is that (gambas vesion 2.0.0):
>>
>> 1) For me, negative scalings do not work; this is a *serious* limitation.
>> 2) Offsets are multiplied by scaling, ie they are expressed in "real 
>> world" coordinates.
>> 3) Perhaps I am missing something, but it seems to me that you can not 
>> read what is the current transformation matrix; the program should keep 
>> track of this.
>>
>>
>> Now, I don't know what "72N" and "-25W" mean (I think north and west, 
>> but that is all), anyway, supposing that they are arbitrary measurement 
>> units, then your map is 44+25 units wide, and 72+18 units tall, ie 69 x
>> 90.
>> You want map this to a 800 x 600. If you don't care about aspect ratio, 
>> then do Draw.scale(800 / 69, 600 / 90).
>> If you want to mantain aspect ratio (it should be), you assign the same 
>> value to scalex and scaley, the smaller of the two: 800/69=11.59, 
>> 600/90=6.66, so do Draw.scale(6.66, 6.66).
>> As your upper left corner is -25W and 72N, you must do 
>> Draw.translate(25, -72).
>> At this point, plotting a (25; 72) should go to (0; 0) in the drawing
>> area.
>>  From here ahead, I think there is a problem with the computer graphics 
>> having Y axis pointing to the bottom, so may be your map will be flipped 
>> up side down. Every Y coordinate should be transformed by newy = 
>> MapHeight-y, so a different draw.translate() must be issued.
>>
>> Anyway, it seems to me that the combination of Scale() and Translate() 
>> does the following:
>>
>>   coordinate_to_plot = (programmed_coordinate + translate_value) * 
>> scale_value
>>
>> Hope this is enough - I well could have done lot of errors, but the test 
>> project can let you experiment.
>>
>> Regards,
>> Doriano
>>
>>
>>
>>  
>> ------------------------------------------------------------------------------
>> SF.Net email is Sponsored by MIX09, March 18-20, 2009 in Las Vegas,
>> Nevada.
>> The future of the web can't happen without you.  Join us at MIX09 to help
>> pave the way to the Next Web now. Learn more and register at
>> http://ad.doubleclick.net/clk;208669438;13503038;i?http://2009.visitmix.com/
>> _______________________________________________
>> Gambas-user mailing list
>> Gambas-user at lists.sourceforge.net
>> https://lists.sourceforge.net/lists/listinfo/gambas-user
>>
>>
>>     
>
>   





More information about the User mailing list