Then I needed to modify libArray code so that other portions of the code
could use the pre-computed fit data.
Today I discovered that arrayfit was messed up. That is now fixed.
to a higher res data set, attempting to preserve the most important
features in the original data set. The user can specify a min and max
number of output nodes as well as a maximum error tolerance that should
not be exceeded (between the original and simplified surfaces.)
based on the terrain simplification algorithm in Michael Garlands paper
located here:
http://graphics.cs.uiuc.edu/~garland/software/terra.html
Essentially start with two triangles forming the bounding surface.
Then add the point that has the greatest error. Retriangulate.
Recalcuate errors for each remaining point, add the one with the
greatest error. Lather, rinse, repeat.
format. The big trick was that the polygon clipper is completely 2d. So
I needed to add code to preserve the elevations in the clipped output and
fill in plausible elevations for any new points created as a result of the
clipping.
intermediate mode. The goal then is that these elevations would be
preserved throughout the tile construction process and the surrounding
geometry would fill in without gaps. This has potential applications for
airports and runways of course as well as roads, rivers, streams, railroads,
or any other object where we might want to control the final elevation in
advance.
in .dem format. The .arr format is a much simpler (and a bit less flexible)
specifically for use as an intermediate format when building scenery. Any
number of various raw terrain formats could be translated into the common
.arr format which then greatly simplifies life for the build tiles util.
position.
Terrasync runs as a separate process and accepts the --atlas=port format.
The fgfs output tells the terrasync util where FlightGear is currently flying.
Terrasync will then issue the appropriate commands to rsync the surrounding
areas to your local scenery directory.
As you fly, terrasync will periodically refresh and pull any new scenery tiles
in the vicinity.
This also works if the scenery on the scenery server is update. Rsync will
pull any missing files, or any updated files.
There is a chicken/egg problem when you first start up in a brand new area.
FlightGear is expecting the scenery to be there *now* but it hasn't been
fetched yet. I suppose without making a more complex protocol, the user
will need to be aware of this. The user could restart flightgear after the
initial rsync completes, and then after that everything should be good,
assuming the user has the necessary bandwidth to keep up with flight speeds.
Final notes:
At the moment Alex Perry has a partial rsync server, but I don't know it's
status. I hope to have a full server up and running at some point soon.
Currently the terragear utility just echos the commands it would run to
rsync the data, it doesn't actually run the commands. This is a work in
progress.
- Put a space between arguments and redirection operator: looks nicer
and may be necessary in some circumstances.
- Add missing option "--min-angle" to help text.
equal to the elevation of the highest light.
Approach lighting systems don't rise and fall with the prevailing terrain.
This prevents portions of the approach lighting system from dipping below
ground level in cases where the surrounding terrain is simplified and doesn't
perfectly match the DEM data.
confused by the alphabet soup.
- Forgot to impliment the SALS(F) version of SALS approach configuration.
- Was generating SSALS when the system was requesting SALSF.
it involved creating a 2d runway object of the right size, rotating it and then
trying to back solve for the actual lon/lat. This and a few other problems was
causing problems with subsequent texture coordinate calcs for the runway
surface textures. It also could have contributed to runways/lighting being
slightly misaligned with the ILS's. Then lots of minor cascading changes as a
result.
Well, I found a bug in VpfTile that prevents the function getTileSubdir
to return the correct value.
In that case getTileSubdir was returning the content of a local
variable (subdir) that is destroyed before used outside. Usually,
it generates a segfault with MSVC but here, the returned string
was "". The patch returns the value of the string and tgpvf is
going well so far.
Added --min-area and --max-area options to specify the minimum and
maximum area of a polygon's bounding rectangle in meters square. This
option will make it possible to use different textures for big lakes
and small ponds, or for large cities and smaller towns.
polygons to scenery. It uses the regular XML property format, which
users can create easily in a text editor. See
src/Prep/UserDef/sample.xml for examples.
polygon.cxx.diff
- Fixed an incorrect delete[] call that could fail on a non-Linux
platform during genapts
split-bin.cxx.diff
- Fixed uninitialized z() values that were being printed during tgvpf
- in main.cxx, make the default log level SG_INFO rather than SG_DEBUG
(developers can easily change it back during testing)
- replace all instances of exit() with an exception throw, caught in
main.cxx, so that the program can go on processing the rest of the
airports; to restore the old behaviour, just add an exit() to the
catch clause
(Unfortunately, this still does not guarantee a full processing run,
because triangle.c in the library can invoke exit() when it gets
hopelessly confused.)
(These are not yet enabled by default because we haven't addressed what
happens when snapping a hole boundary, but not the original object to
fit in the hole.)
straddled record boundaries; it appears the the E00 format expects
all records to be right-padded with spaces to a length of 80 including
the final newline (!!!)
- added some comments in case anyone is ever foolish enough to try to
extend this library
Fixed a bug in triangulating that was potentially overwriting other
memory when creating the hole list to pass to the triangulator. This
fixes a lot of glitches!
fgfs-construct and fgfs-tools-client. The option takes an argument giving
the location of the land-cover raster file; if it is not specified,
land-cover is not built.
Curt tweaked the code that divides up the tile into land use squares but there
are still a couple slightly fishy things going on there.Z
The following files have been changed to enable the latest Terragear CVS
to compile with MSVC++ 5.0
.\construct\clipper\clipper.cxx
for( int i - lots of places
.\construct\genoutput\genobj.cxx
fix directory logic for windows, line 320 and following
.\construct\main\main.cxx
windows does not have an opendir function
added code for windows directory functions
disabled the mem allocation limit code - windows does not
have similar functions
for ( int i - several places
.\construct\match\match.cxx
moved the definition of file and command outside of the ifdef line 420
.\lib\e00\e00.cxx
for( int i - several places
.\lib\e00\e00.cxx
use simgear/compiler.h constructs
.\lib\geometry\contour_tree.hxx
removed a cout statement
.\lib\geometry\poly_support.cxx
added float.h changed 1.0e+999 to DBL_MAX, windows doesn't go that big
lots of for ( int i changes
lines 193 and 208 no != operator defined - changed logic
line 801 flag should be int, not bool, get_hole_flag returns int
.\lib\landcover\landcover.cxx
.\lib\landcover\landcover.hxx
add include simgear/compiler.h
see comments
.\lib\optimize\genfans.cxx
function canonify added return at end, windows complains
added using std for cout and endl
.\lib\optimize\genstrips.cxx
function tgGenStrips no return value, moved by_node into outer scope
fix for ( int i ...
.\lib\poly2tri\construct.c
added include <memory.h> for windows
remove unused variables lines 435 & 437
.\lib\poly2tri\misc.c
added HAVE_SYS_TIME_H logic for sys/time.h include file
added logic to uses windows functions for time and rand
.\lib\poly2tri\monotone.c
added include <memory.h> for windows
lines 286-288 remove unused variables
.\lib\poly2tri\tri.c
remove sys/time.h - no time functions called
added include <memory.h> for windows
.\lib\polygon\polygon.cxx
function polygon_to_tristrip will not compile I don't think the
logic is complete, no returned data added if else endif around
function and polygon_to_tristrip_old, renamed _old function.
Search of code reveals that function is not called by anyone.
.\lib\polygon\superpoly.cxx
changed include <superpoly.hxx> to "superpoly.hxx"
.\lib\polygon\superpoly.hxx
add include <windows.h> for windows before include <gl.h>
needed for definitions used in Microsoft version of opengl
.\lib\shapelib\dbfopen.c
added include files for windows
lines 195-197 271-272 515-517 removed unused variables
.\lib\shapelib\shpopen.c
added #include <stdlib.h> for malloc() and friends
added include files for windows
line 279 527 813 1127 removed unused variables
line 827 cast result to int
.\lib\win32\mkdir.cpp
documented function, remove debug lines
.\prep\demraw2ascii\main.c
lines 46-50 remove unused variables
.\prep\demraw2ascii\rawdem.c
line 47 changed logic to compile with MSVC
line 244-256 set real constants to float, windows complains with
double constants
.\prep\genairports\build.cxx
lots of for ( int i changes
.\prep\genairports\main.cxx
fix mkdir logic for windows
.\prep\genairports\output.cxx
added using std cout endl
lots of for ( int i changes
fix mkdir logic for windows
.\prep\genairports\runway.cxx
for ( int i changes
lines 117-118 161-162 remove default values for function parameters
.\prep\gshhs\main.cxx
added using std cout
.\prep\shapefile\noaa_decode.cxx
.\prep\shapefile\shape_decode.cxx
added using std for cout
lines 45-49 moved unused variables inside #if 0 block
- increased maximum areas to 128 (for future growth), and added Road
and Railroad areas
- changed the method of calculating the triangle centre in
poly_support.hxx
- added a has_holes() method to polygon.hxx
- added a new library, e00, for reading ArcInfo e00 files (i.e. the
free online ones from DCW and GeoGratis); it needs more work
- added a new prep utility, e00lines, for creating textured polygons
out of e00 line data (with user-specified width and area type); this
is useful for roads, railroads, rivers, and utility lines
Added adjacent triangle area weighting for calculating vertices of nodes.
Check for super small or degenerate triangles which could blow up our face
normal calculations.
expects the results to be zero'd out, even though this may not be gauranteed.
So I (Curt Olson, curt@flightgear.org) have added some code here
to explicitely zero out the space after it is malloc()'ed.
first tile to build that corner gets to define the shared point, but since
it was clipped out by the airport hole, the value defaulted to randomness.
This was then propogated on to adjacent tiles. I now calculate the corner
value in advance so the code is not dependent on finding the corner in the
resulting point set.