Hi.

Normalization may not work in some degenerated cases. How about to check
equality of triangles, smth like this: https://play.golang.org/p/W9Gc00HD7E


On Mon, Aug 28, 2017 at 2:13 PM Val <delepl...@gmail.com> wrote:

> Hello,
> I have some geometry data modelling with
>   type Triangle [3]*Vertex
>
> (The exact definition of Vertex is unimportant here, but I'd like to avoid
> adding more fields inside Vertex if possible.)
>
> Then I'd like to use a triplet of vertices as the entry point of a map
> containing more data like color, texture, etc.:
>   var mesh map[Triangle]Data
>
> When I traverse a big list of Vertices (following edges) to construct the
> list of all Triangles and their Data, it's important that I don't recreate
> Data for triangles that have already been visited, even if triplet is in a
> different order:
>  A B C
>  A C B
>  B A C
>  B C A
>  C A B
>  C B A
> ... are all the same triangle in my specific modelling.
>
> To achieve this, I consider normalizing the triplet so that all keys of
> the map verify
>   A *<* B *<* C
> for some arbitrary definition of *<* .  This ensures that I can detect
> any Triangle already present as key in the map, regardless the order of its
> Vertex pointers.
>
> Unfortunately for this approach, direct pointer arithmetic doesn't exist
> in go: I can test individual Vertex pointers for equality with ==, but not
> for ordering with < or sort.Slice or sort.Sort.
> I could "print a numerical string representation" of each Vertex and use
> the strings as keys, but this looks costly and I'm not sure about this way
> being reliable.
> I could try package unsafe to convert pointers to uintptr, but this looks
> unsafe and may impair portability.
>
> My problem arises from the fact that a Vertex doesn't hold its own ID,
> it's a value object whose identity is solely determined by its memory
> location (its pointer), which is usually fine except for this normalization
> step!
> Note that I can't rely on the values of X, Y, Z coordinates for Vertex
> identity, because several Vertices may be at the same geographical
> position. Inspecting the values stored in each Vertex is irrelevant.
>
> Any creative idea ?
> This may be a starting point: https://play.golang.org/p/qvldUtH68C
>
> Thanks in advance :)
>
> --
> You received this message because you are subscribed to the Google Groups
> "golang-nuts" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to golang-nuts+unsubscr...@googlegroups.com.
> For more options, visit https://groups.google.com/d/optout.
>

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to