Skip to content

Instantly share code, notes, and snippets.

@sergiosvieira
Created May 8, 2014 10:44
Show Gist options
  • Save sergiosvieira/7f9e134013deac2ce2d1 to your computer and use it in GitHub Desktop.
Save sergiosvieira/7f9e134013deac2ce2d1 to your computer and use it in GitHub Desktop.
float[] worldWide = {-180., 90., 360.0, 180.0};
//float[] worldWide = {-45., 22., 90.0, 45.0};
float[] screen = {0., 0., 1024., 512.};
float[] viewPort = {0., 0., 1566., 1045.};
float scale = 1.;
void setup()
{
size((int)viewPort[2], (int)viewPort[3]);
}
float latToPoint(float lat)
{
float viewPortHeight = viewPort[3];
float worldWideTop = worldWide[1];
float worldWideHeight = worldWide[3];
float ratio = viewPortHeight / worldWideHeight;
//return (- viewPortHeight * ( worldWideTop - lat )) / worldWideHeight;
return ( worldWideTop - lat) * ratio;
}
float lonToPoint(float lon)
{
float viewPortWidth = viewPort[2];
float worldWideLeft = worldWide[0];
float worldWideWidth = worldWide[2];
float ratio = viewPortWidth / worldWideWidth;
//return (- viewPortWidth * ( worldWideLeft - lon )) / worldWideWidth;
return (- worldWideLeft - (-lon)) * ratio;
}
float pointToLon(float x)
{
float viewPortWidth = viewPort[2];
float worldWideLeft = worldWide[0];
float worldWideWidth = worldWide[2];
float ratio = worldWideWidth / viewPortWidth;
return worldWideLeft - (- x * ratio);
}
float pointToLat(float y)
{
float viewPortHeight = viewPort[3];
float worldWideTop = worldWide[1];
float worldWideHeight = worldWide[3];
float ratio = worldWideHeight / viewPortHeight;
return worldWideTop - (y * ratio);
}
class Node
{
float lat;
float lon;
Node(float a_lat, float a_lon)
{
lat = a_lat;
lon = a_lon;
}
}
Node[] nodes = {
new Node( -3.505891789 , -40.2783645 ),
new Node( -5.328594679 , -38.92237107 ),
new Node( -3.74191444 , -39.35537312 ),
new Node( -4.977728725 , -39.06317314 ),
new Node( -4.215372412 , -40.06656986 ),
new Node( -5.983021841 , -40.12300317 ),
new Node( -4.062433878 , -39.45373678 ),
new Node( -7.107291457 , -39.32929965 ),
new Node( -6.23812643 , -38.92500936 ),
new Node( -5.581869982 , -39.40230051 ),
new Node( -5.149851357 , -38.87775444 ),
new Node( -3.803300041 , -39.26164818 ),
new Node( -4.838346256 , -39.14095736 ),
new Node( -7.109019721 , -38.68294255 ),
new Node( -7.501917403 , -38.74674516 ),
new Node( -5.198283775 , -39.31277746 ),
new Node( -5.693736833 , -38.95063992 ),
new Node( -4.4069701 , -39.3111742 ),
new Node( -4.851954624 , -38.16573986 ),
new Node( -4.370696352 , -39.3158692 ),
new Node( -3.571617619 , -39.97252107 ),
new Node( -7.090778078 , -39.48690884 ),
new Node( -5.915330333 , -40.41394324 ),
new Node( -5.909525237 , -40.25254923 ),
new Node( -5.949263 , -38.907803 ),
new Node( -6.983728992 , -40.35598226 ),
new Node( -5.949054571 , -38.83046507 ),
new Node( -5.776328845 , -38.34497431 ),
new Node( -4.209515016 , -40.44859842 ),
new Node( -6.037778 , -38.447193 ),
new Node( -5.470685 , -40.204276 ),
new Node( -7.481016 , -38.73024 ),
new Node( -5.195816 , -39.601225 ),
new Node( -4.419061 , -39.177621 ),
new Node( -7.641678529 , -38.89364964 ),
new Node( -3.882202451 , -40.01247312 ),
new Node( -3.796043572 , -40.25356323 ),
new Node( -5.416929772 , -40.47902143 ),
new Node( -5.280081325 , -40.66820062 ),
new Node( -5.261104572 , -40.80506682 ),
new Node( -4.042379 , -39.987322 ),
new Node( -3.761444 , -40.036497 ),
new Node( -3.179590925 , -40.44584645 ),
new Node( -4.766981832 , -40.58248057 ),
new Node( -3.599217402 , -40.86365713 ),
new Node( -3.633621 , -39.516132 ),
new Node( -6.402143043 , -38.95658227 ),
new Node( -6.417186 , -39.059782 ),
new Node( -4.309885 , -40.684951 ),
new Node( -4.816670522 , -40.36173315 ),
new Node( -4.955221893 , -40.52404083 ),
new Node( -5.382572888 , -38.45959847 ),
new Node( -6.084822 , -39.454306 ),
new Node( -3.86508767 , -41.11330357 ),
new Node( -3.50214321 , -40.6146866 ),
new Node( -5.9427898 , -40.3993464 ),
new Node( -5.868341987 , -38.31799739 ),
new Node( -6.415912 , -39.08259 ),
new Node( -3.69046238 , -39.29542795 ),
new Node( -4.193545995 , -38.79938483 ),
new Node( -3.573737 , -39.629489 ),
new Node( -4.222256817 , -38.38385341 ),
new Node( -3.397075 , -40.263431 ),
new Node( -5.7228775 , -38.1681776 ),
new Node( -3.853063885 , -40.27072029 ),
new Node( -5.261854814 , -38.64577848 ),
new Node( -5.83740469 , -39.47767639 ),
new Node( -4.036022415 , -38.53331141 ),
new Node( -6.202115 , -40.711288 ),
new Node( -3.438721263 , -39.62952233 ),
new Node( -3.975971154 , -39.50597626 ),
new Node( -3.905961845 , -38.5553424 ),
new Node( -5.50257889 , -39.73667289 ),
new Node( -4.564899904 , -38.93236956 ),
new Node( -5.728479651 , -39.64723653 ),
new Node( -6.967953 , -39.727293 ),
new Node( -5.889177 , -39.15382 ),
new Node( -3.635646537 , -40.82041518 ),
new Node( -4.000999028 , -38.52317173 ),
new Node( -5.16690242 , -39.49137774 ),
new Node( -3.837532851 , -39.68968013 ),
new Node( -6.308294209 , -39.43365984 ),
new Node( -6.01 , -40.324 ),
new Node( -3.237032614 , -40.61620927 ),
new Node( -6.946387211 , -39.94061022 ),
new Node( -3.753362 , -40.71186 ),
new Node( -5.156796288 , -39.71839241 ),
new Node( -4.317856 , -38.894027 ),
new Node( -5.840381 , -40.712804 ),
new Node( -6.733659208 , -39.93275197 ),
new Node( -5.542865475 , -39.10435886 ),
new Node( -4.220286 , -39.283268 ),
new Node( -7.081014 , -40.084615 ),
new Node( -6.788883466 , -39.37530148 ),
new Node( -3.739344633 , -38.86833962 ),
new Node( -3.771273346 , -38.95978287 ),
new Node( -4.392728041 , -39.28256728 ),
new Node( -4.808954356 , -40.01111661 ),
new Node( -6.583858781 , -39.23756393 ),
new Node( -5.293535 , -40.173444 ),
new Node( -6.189098 , -38.553137 ),
new Node( -5.965648 , -38.276387 ),
new Node( -4.980754081 , -39.36579249 ),
new Node( -6.610573141 , -39.48234294 ),
new Node( -3.168317202 , -40.86140344 ),
new Node( -7.020179 , -39.102801 ),
new Node( -5.813151154 , -39.24748357 ),
new Node( -5.570672773 , -40.67179618 ),
new Node( -4.651008 , -38.48875 ),
new Node( -6.272228994 , -39.93310611 ),
new Node( -6.596587439 , -40.13924361 ),
new Node( -4.058951 , -39.115126 ),
new Node( -3.970682 , -38.744555 ),
new Node( -3.152411571 , -41.16729406 ),
new Node( -6.88895927 , -39.08106789 ),
new Node( -4.897313 , -40.77043 ),
new Node( -5.562632 , -38.325225 ),
new Node( -6.892186 , -39.215687 ),
new Node( -7.029354 , -39.28301 ),
new Node( -4.809116 , -39.551388 ),
new Node( -4.444447 , -38.961082 ),
new Node( -5.489094821 , -38.45022931 ),
new Node( -5.04557 , -38.383801 ),
new Node( -4.799747 , -38.709306 ),
new Node( -3.371389673 , -39.49250558 ),
new Node( -3.674339449 , -39.57459903 ),
new Node( -5.625716437 , -38.2571987 ),
new Node( -4.021833113 , -38.43695443 ),
new Node( -5.898912 , -38.370149 ),
new Node( -4.402200284 , -38.69572498 ),
new Node( -4.105828779 , -38.28907915 ),
new Node( -4.666453362 , -40.2019817 ),
new Node( -6.161337629 , -39.21808495 ),
new Node( -6.271466386 , -40.22022046 ),
new Node( -4.059148 , -38.903176 ),
new Node( -3.896112 , -40.611118 ),
new Node( -3.471698 , -39.858824 ),
new Node( -6.672764 , -38.755099 ),
new Node( -3.83483 , -39.98873 )
};
void mouseWheel(MouseEvent event)
{
float e = event.getAmount();
if (e == -1)
{
scale += e;
}
else
{
scale += e;
}
//println(scale);
}
void draw()
{
background(0);
for (int i = 0; i < nodes.length; i++)
{
//println(i);
Node node = nodes[i];
float x = lonToPoint(node.lon);
float y = latToPoint(node.lat);
//println("x:", x, " y:", y);
float cx = mouseX;//viewPort[2] / 2.;
float cy = mouseY;//viewPort[3] / 2.;
//println("cx:", cx, " cy:", cy);
float newX = x - cx;
float newY = y - cy;
//println("x - cx:", newX, " y - cx:", newY);
newX *= scale;
newY *= scale;
//println("x * scale:", newX, " y * scale:", newY);
newX += cx;
newY += cy;
//println("x + cx:", newX, " y + cy:", newY);
ellipse(newX, newY, 5, 5);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment