-
Notifications
You must be signed in to change notification settings - Fork 7
/
TODO
62 lines (58 loc) · 4.6 KB
/
TODO
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
Before 0.1.0 (first public release):
•Read the sample data file topo0.asc and output a PostScript file of contours, drawn with spiralarcs. ✓
•Produce a 3D Bézier spline of all vertical and horizontal curves, for display purposes. ✓
•Quickly find the triangle any point is in and return its elevation. ✓
•Compute spirals of arbitrary curvature and clothance. ✓
•Create spiral objects (in 3D, so they also have specified start and end elevations)
with specified
•length, start bearing, and start and end curvatures; ✓
•start and end points and curvatures; ✓
•start and end points and directions. ✓
Before 0.1.1:
•Do basic matrix arithmetic, needed for least-squares traverse adjustment and coordinate transformation. Coordinate transformation uses fixed-size matrices, but least-squares matrices' sizes depend on the number of points. ✓
•Do quaternion arithmetic. Quaternions represent rotations (and nonnegative scaling) in 3-space. ✓
•Read geoid files and convert them to a common format. ✓
•Add a command-line interface to convertgeoid. ✓
•Specify the geoid file when reading it into bezitopo. ✓
•Read NGA EGM geoid files and Carlson GSF files. ✓
•Write a geolattice to any geolattice file it can read, if the format allows representing part of the earth. ✓
•Output a KML file depicting the outline of a geoid file. ✓
•Write an excerpt of a geoid file with specified center and distance. ✓
•Draw statistical graphs of geoid conversion. ✓
Before 0.2.0:
•Implement type-0 breaklines. ✓
•Compute all intersections of two spirals. ✓
•Decide whether a point is inside a polyline/arc/spiral. ✓
•Compute the area of a polyline/arc/spiral. ✓
•Tell whether a spiralarc is too curly, i.e. there is a line that intersects it three times out of order; or curly, i.e. there is a line perpendicular to it that intersects it somewhere else. ✓
•Make a list of drawing objects, with layers, and a way for drawing objects to refer to other drawing objects so that it can easily find out what refers to an object (e.g. a dimension label refers to a segment or arc).
•Make the PostScript output routine a class. ✓
•Make a GUI program for viewing geoid files.
•Produce a KML file showing how volleyball coordinates work. ✓
•Adjust a traverse by least squares. Some points may have coordinates from GPS too.
•Rotate and translate one pointlist to another pointlist, given a list of matching points.
•Rewrite measure.cpp in more proper C++. ✓
•Speed up boldatni generation with multithreading.
Before 0.3.0:
•Save and open a file containing a scene.
•Define paper sizes and layouts with paper space and model space windows (initially without clipping).
•Print a scene, inverting the brightness while preserving (approximately) the hue.
•Implement a GUI for CAD, which may be rudimentary (a visual display, but without hit-testing, and manipulated by typed commands), allowing to enter at least points and line segments.
•Given two pointlists and a list of points in one pointlist and corresponding points in the other pointlist, rotate and translate one pointlist to match the other.
•Output an STL file.
•Find the volume of a surface in a boundary, using a quadtree of Halton generators. The test surface is a hemisphere; its boundary is a circle.
•Clip contours to a boundary. This requires intersecting a spiral with a line or arc.
•Copy contours to two or three layers. If three, the contours in the finest layer are drawn only on very flat ground.
•Implement at least one map projection (Lambert conic). ✓
For later:
•Approximate a spiral arc by at least two circular arcs. ✓
•For a curve, compute the lengths and point of intersection of the tangents. For a segment, this is arbitrarily the midpoint. ✓
•For a spiral arc, compute the throw. ✓
•Make an alignment class which can express horizontal and vertical curves.
•Implement cross-sections and interpolate between them.
•Add a vector (or map indexed by integer) of segments, and one of arcs (but not spiralarcs), to serve as lot boundary lines, and a lot class, whose boundary is a vector of pointers to segments, some of which may be backward.
•Make a text drawing object class.
•Add cross-section windows (which require cross-sections) and line/curve/spiral tables (which require drawing text).
•Add an interior point to a TIN. This will be used to approximate a road surface with a TIN.
•Make a road intersection object. Its boundary consists of alternating straight lines (which have cross-sections that match those of the roads) and circular arcs (fillets between the roads).
•Read shapefiles.