I apologize in advance– this first post will be heavy on code, short on explanation. Landscape position, e.g. previous posts, can be trivial to calculate, but to make the calculations scalable to a large area, some batching is necessary. In this case, instead of a McNab index, we’re calculating the traditional GIS landscape position. Enter my favorite non-geographic tool, PovRay… . To the difference between, we’ll use PovRay in combination with imagemagick:
#include "transforms.inc"
#version 3.6;
#declare widthx=3425;
#declare heighty=1707.5;
#declare Aperture=300;
#declare Laps=20;
#declare Ind=1-pow(1-clock,1.2);
#declare PosX=cos(2*pi*Laps*Ind)*Aperture*Ind;
#declare PosY=sin(2*pi*Laps*Ind)*Aperture*Ind;
#declare Camera_Location = ;
#declare Camera_Lookat = ;
camera {
orthographic
location Camera_Location
look_at Camera_Lookat
right widthx*x
up heighty*y
}
background {color }
union {
height_field {
png "dem.png"
scale ;
translate ;
}
pigment {
gradient x color_map {
[0 color rgb 1]
[1 color rgb 0]
}
scale
Reorient_Trans(x, Camera_Lookat-Camera_Location)
translate Camera_Location
}
finish {ambient 1}
}
povray +Ilscape_posit.pov +Olscape_posit.png +FN16 +W1370 +H683 +KFI1 +KFF99 -D
convert lscape_posit??.png -average average.png
composite -compose difference lscape_posit.png average.png difference.png
In truth, I think I could do all of this in imagemagick, but it might not be fast enough. More testing to follow... .
I forgot to site my sources for some of my code here:
This: http://warp.povusers.org/PovUtils/average/focalblur.html was the inspiration for the PovRay camera movement.