Comments (5)
Same change is applicable to IncrementalTin too.
from tinfour.
Interesting idea. I will investigate.
I added some diagnostic code to the IncrementalTin class so that it would count how many cases where the nEar==3 would occur at the end of step 1. I then ran the "ExampleCrossValidation" test application from the example code provided with the Tinfour distribution. Cross validation involves systematically removing and then replacing each vertex in the triangulated mesh. So it was a quick way to test the proposed concept. I processed a subsection of the "Bear Mountain" lidar data sample that is described in the Tinfour documentation. For 9453 removals, the test resulted in a count of 29 nEar==3 cases.
Let me clarify the reasoning behind Martin's proposal. The nEar==3 case occurs when the vertex-to-be-removed connects to exactly 3 edges. When the vertex is removed, the remaining cavity is a triangle which happens to be Delaunay compliant (I think I have a proof for that). So if we counted the number of edges removed in Step 1 (as suggested), and it turned out to be 3, we could exit early. Counting the edges adds very little overhead to the process. So even though the nEar==3 case occurs infrequently, the proposed saving would be larger than the extra processing cost.
I will do some more tests to make sure that my numbers are correct. I also need to verify my assumption that the resulting triangular cavity would always be Delaunay.
from tinfour.
I'm sorry I have no statistics on my data. Can you wait till Friday?
I need to eliminate every piece of code and allocation that is not necessary. My data set is about 35k tiles each with ~100k vertices. About 60% of vertices are removed. This is extreme. I need to write better algorithms :-) This seems to me like simple change.
from tinfour.
No worries. This is a simple change, so I'd say go ahead and make it yourself for your own copy of the Tinfour code. I'll migrate it into the main Tinfour code base sometime over the next week or so. I will also collect performance stats, so you don't have to do so if it is not convenient at this tim.
I suspect that you will find that you see slightly stronger speed improvement in the semi-virtual implementation than in the standard.
Děkuji
Gary
from tinfour.
I performed performance testing with the new RepeatedDeleteTest application. The improvement was so small that I could not accurate measure it given to the noisy test environment on my Windows 7 computer (run times were too variable to demonstrate a statistically meaningful improvement). But the suggestion makes the code cleaner and more robust. So I decided to use it.
Thanks again for you suggestions and contributions to the Tinfour project.
from tinfour.
Related Issues (20)
- Simple Volume Model support for non-English Locale HOT 1
- Enhance Simple Volumetric Model to read soundings from Lidar (LAS and LAZ) files HOT 1
- Enhance SVM to include shoreline in output shapefiles HOT 1
- Enhance SVM to write GeoTIFF elevation files HOT 1
- SVM improve sample-spacing computation HOT 1
- SVM change to reduce memory use HOT 1
- Extend API in support of enhanced interpolation logic
- TriangleCollector.visitTrianglesConstrained() visits triangles twice HOT 5
- Should `.visitTrianglesConstrained()` generate triangles for TINs with no constraints? HOT 2
- Java Heap Space, unlimited loop in Tinfour
- Performance Discrepancy HOT 6
- Some pinwheel edges' B vertex are null HOT 4
- Can't open recent LAZ files HOT 10
- TinfourDemo finds no ground points even they are there HOT 4
- TinfourDemo rendering is upscaled for `-Dsun.java2d.uiScale=2` HOT 4
- Provide more access to internals for Natural Neighbor Interpolator HOT 1
- Question how to use idw in combination with Bounded Voronoi
- Error in shapefile writing for SVM operations HOT 1
- Shapefile reader can fail on empty records HOT 1
- Error reading UTF-8 strings from shapefile HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from tinfour.