eloraiby / delaunay

Relatively Robust Divide and Conquer 2D Delaunay Construction Algorithm in $O(n \log n)$
GNU Affero General Public License v3.0
126 stars 34 forks source link

Adding some extra feature and Issue of failing Case #1

Closed dharmendra08 closed 9 years ago

dharmendra08 commented 10 years ago

Hi, Can you add a function which will check if a point is lying outside the delaunay structure? This will be useful when using this structure for interpolation.

Also, I am checking for below test, Result is not correct:

const int n = 100; float x1[n1],y1[n1]; float x[n],y[n],value[n]; float point[2_n]; for( int i = 0; i < n1; ++i ) {x1[ i ] = y1[ i ] = i;} for( int i = 0; i < n; ++i ){ x[ i ] = x1[ i / 10 ]; y[ i ] = y1[ i % 10 ]; } int j = 0, k= 0; for(int i=0;i<2_n;i++){ if(i%2 == 0) { point[i] = x[j]; j++;} else { point[i] = y[k]; k++;}
} int np = sizeof point/(2*sizeof(float)); delaunay2d(point,np);

[I checked no edge formation between (4,9) and (5.9)] I guess U are missing case when points lie OnCircle in "del_valid_link" function.

eloraiby commented 10 years ago

Thanks for the test case, could you tell me which of the 3 you are using ? FAST_PREDICATE LOOSE_PREDICATE EXACT_PREDICATE

dharmendra08 commented 10 years ago

Currently I am using LOOSE_PREDICATE; Can you suggest me which PREDICATION method to use?

dharmendra08 commented 10 years ago

I think I got the issue of failure. Since points are lying on grid and most of the cases are OnCircle case, so we need to correct OnCirlce case of del_valid_link function and also del_valid_left, del_valid_right. Its not related to which Prediction technique I am using. We need to change algorithm for OnCircle case.

eloraiby commented 10 years ago

I have tested the code (building the grid) with PREDICATE set to EXACT_PREDICATE, the output seems fine. Are you expecting a triangle instead of quad ?

dharmendra08 commented 10 years ago

Yeah.. right I am expecting triangle as in 2-dimension triangles are best to interpolate data instead of higher edge polygon. If we go for higher dimension then figure changes to tetrahedron,..etc. In EXACT_PREDICATE : Code is using in-build C++ function such as incircle. While compiling I got following error: LNK2001 unresolved external symbol __cdecl incircle . Do you have any idea how to resolve this issue. (I am using VS2010)

eloraiby commented 9 years ago

Please grab the latest and test, the issue should be fixed with the last updates!

eloraiby commented 9 years ago

No comment from the bug issuer. Bug is fixed.