3

I've been reading about using the winged-edge data structure for storing a boundary representation. However, the linked site says that this is one of the oldest data structres for storing b-reps, are there newer better ones?

Secondly, is there an implementation of this in C#?

Maxence
  • 12,868
  • 5
  • 57
  • 69
Martin
  • 12,469
  • 13
  • 64
  • 128

3 Answers3

4

The datastructure used for a B-rep is very similar to those used for polygonal modeling - you just replace the edges with curves and the faces with surfaces.

The wikipedia page on polygonal meshes has several types listed, including winged edge. Personally I like half-edge meshes. The only thing they can't do well is non-manifold topology, which you may or may not need. If you do, look for radial edge topology.

There's also a freely available B-rep datastructure from OpenNurbs (McNeel, the makers of Rhino). That also gets you file IO, which is nice.

tfinniga
  • 6,693
  • 3
  • 32
  • 37
  • You came in about 1 hour after I discovered the half edge data structure myself ;) A handy link you may want to edit into your answer is http://www.flipcode.com/archives/The_Half-Edge_Data_Structure.shtml – Martin Jan 07 '10 at 00:42
3

Boundary Representation Modelling Techniques by Ian Stroud will give you a survey of ways people have approached B-reps, along with a plethora of diagrams with all the Euler operators, and concrete data structures and algorithms for implementing B-reps imperatively.

Whether you want to move a few characters forward into F# or not, you may glean quite a bit of info from the source code for Wings3d (written in Erlang). Just don't get lost making spaceships and forget you were supposed to be coding!

Also the GML will allow you to investigate interactively what you can do with your B-reps, and the data structure is the code.

dunn
  • 31
  • 2
0

Not sure if this will help or not but there are Geometry objects in the XNA library for dealing with 3D Structures and what not. There may be something in there. However my guess is that it will either be Point based or Triangle based vs edge based.

But it might be a place to look.

Joshua Cauble
  • 1,349
  • 8
  • 7
  • I'm quite familiar with XNA, I've never found anything like that :S – Martin Jan 04 '10 at 23:08
  • 1
    Not sure if you saw this link or not but it may be helpful, would need to convert it to C# but it may be able to point you in the right direction: http://www.flipcode.com/archives/The_Half-Edge_Data_Structure.shtml – Joshua Cauble Jan 06 '10 at 12:33