Closed GoogleCodeExporter closed 8 years ago
Looks like the triangulation might have failed on Mexico for some unknown
reason.
The final step in the triangulation is a clean that removes some triangles
outside the polygon that are created during the triangulation.
Maybe you could dump the point data for Mexico.
You can also test triangulation here:
http://javascript.poly2tri.googlecode.com/hg/index.html
Think you even might be able to paste a svg path(see france preset) at this
test page.
Original comment by thahlen@gmail.com
on 12 May 2013 at 10:33
[deleted comment]
Thanks for your reply
I tried the test page; but the results are tiny on there, and zooming in seems
to not allow for me to scroll across to look at the rendered geometry. That
said, I also did some post triangulate filtering of points outside the bounding
box, and this left a much better result ; but still containing triangles that
formed the external hull.
In this case I think you must be right about the method failing before fully
cleaning up, but no exceptions are thrown so I guess I must investigate further,
I wlll keep looking :)
Original comment by danja_...@hotmail.co.uk
on 12 May 2013 at 2:23
Attachments:
[deleted comment]
[deleted comment]
I don't know if this helps, I hav wireframed the render both with and without
my bounding box post-filter, highlighting the border in red. Would such
triangles as fill the outside troughs (in the filtered inmage) be generated
usually, and later removed? If not then its prbably some quirk in the data
that confuses the algorithm as to whether its filling inside tris. Only
speculation on my part to be honest.
Original comment by danja_...@hotmail.co.uk
on 12 May 2013 at 4:24
Attachments:
[deleted comment]
OK, I found the problem, and it is nothing wrong inside the algorithm (btw i
never assumed it was due to the level of correctly rendered shapes) and I found
by reducing the number of points to different levels of detail in the bezier
curves, there was a change in one area from correct to incorrect. I looked at
the data and found there was indeed a self intersection near this region,
presumably corrected at higher detail levels. Once adjusted, it worked at all
details and I applied this to the previously affected regions producing the
attached result.
So apologies to flag this up prematurely, the problem was indeed with the data
and NOT the triangulation. Thank you for your earlier reply and
congratulations on a great library.
Thanks again,
Daniel
Original comment by danja_...@hotmail.co.uk
on 12 May 2013 at 5:48
Attachments:
Great that you found the problem and thanks. Always fun to see the lib getting
used and liked ;)
Original comment by thahlen@gmail.com
on 12 May 2013 at 8:42
Heres the final render, took a while to tweak some of the larger countries, the
nordic fjrds and northern Canada hehe, but looking good :)
Feel free to use this image as an ad for this library because you don't get
much more complex than a world map as far as triangulation is concerned, good
job.
Original comment by danja_...@hotmail.co.uk
on 13 May 2013 at 4:09
Attachments:
Nice :).
I actually did a triangulation of the countries myself as a test before
poly2tri was released! Not using bezier curves just simple shape file polygons.
http://www.youtube.com/watch?v=Gdceq4fOIMY
Original comment by thahlen@gmail.com
on 13 May 2013 at 12:03
[deleted comment]
[deleted comment]
Wow, that is really stunning! If I had seen that before trying out a number of
libraries I would have known to use poly2tri from the beginning. That render
really shows the power of the library and in spectacular style :) May I splash
the poly2tri logo in my university presentation? It will credit your work that
way, and deservedly so.
The only issue I have currently is that the results are a new set of points
(within the triangle structures) rater than indexing the input vertices.
Unfortunately meaning I have to convert them twice, once for input into the
algorithm and then marshaled back into a float array for OpenGL. A separate
vertex buffer being required from the poly-line border.
It is the last day I work on this project and it is great to finally get the
countries filled in, so much more clarity in the map.
I can only say thanks again, by far the simplest and most effective library I
used.
Dan
Original comment by danja_...@hotmail.co.uk
on 14 May 2013 at 2:00
You can splash poly2tri as much as you like.
If I released poly2tri today I would have used an interface IPoint2 with two
methods x() and y() and wrap the IPoint2 inside the TrianglePoint for even
simpler use. This way anyone using the lib could just implement IPoint2 on
their own datatype.
Anyways still need a new set of point objects due to the need of a specific
data structure for the triangulation.
Maybe you could do something like this. Lets say you have your poly-line border
vertexes in a buffer.
Create you own Point class:
public class MyPoint extends PolygonPoint
To this class you only add an int field called index. When you create the List
of MyPoint, for each vertex add the index value which is the index to that
point into the vertex buffer.
When done triangulation you can loop over the triangles and build and
IndexBuffer with the index values inside MyPoint.
This way you can Bundle your VertexBuffer(ArrayBuffer) and the new
IndexBuffer(ElementArrayBuffer) into a VertexArrayObject and use that when
rendering.
Does this approach help?
Original comment by thahlen@gmail.com
on 14 May 2013 at 11:42
Yes that approach seems entirely sensible. I must admit I assumed the Point
classes within the library to be sealed. I will certainly look into this for
optimizations and pass it on to those who may follow up the project next year.
Thank you for all your helpful comments and I look forward to an opportunity to
work with the library again in the future.
Best regards,
Dan
Original comment by danja_...@hotmail.co.uk
on 15 May 2013 at 3:35
Original issue reported on code.google.com by
danja_...@hotmail.co.uk
on 12 May 2013 at 2:27Attachments: