Home  >  Article  >  Backend Development  >  Combine two index numbers

Combine two index numbers

WBOY
WBOYforward
2024-02-06 10:18:041168browse

Combine two index numbers

Question content

Background

A

3d cube has 12 sides and 8 angles.

Corner index

8 Corner point indexed 0 to 7.

7---------6
     /|        /|
    / |       / |
   4---------5  |
   |  |      |  |
   |  3------|--2
   | /       | /
   |/        |/
   0---------1

Edge Index

11 Edge has been indexed from 0 to 11.

// these are the corner pairs for the edges:
var mcpairtable = [12][2]int{
    {0, 1}, // edge 0
    {1, 2}, // edge 1
    {2, 3}, // edge 2
    {3, 0}, // edge 3
    {4, 5}, // edge 4
    {5, 6}, // edge 5
    {6, 7}, // edge 6
    {7, 4}, // edge 7
    {0, 4}, // edge 8
    {1, 5}, // edge 9
    {2, 6}, // edge 10
    {3, 7}, // edge 11
}

Combine two index numbers

I want to draw a tetrahedron inside a 3d cube. To describe a tetrahedron, I can use the indices of the sides and angles. For example, a tetrahedron would consist of angles 0, sides 0, sides 3, and sides 8.

question

My problem is the index number. I don't know how to combine the index of the side with the index of the corner. I have two index numbering options.

Option 1: String

One option is to use strings to form the tetrahedrons. For example, I use the c prefix for the corner index and the e prefix for the edge index:

var tehtrahedron = [4]string{"c0", "e0", "e3", "e8"}

But dealing with strings is not as easy as simple integer indexing.

Option 2: Move Index

Another option is to keep the index of the sides from 0 to 11, but move the index of the corners. Therefore, the corner point will be indexed from 0 12 to 7 12, i.e. from 12 to 19. Using this option, the same tetrahedron will look like this:

var tehtrahedron = [4]int{0+12, 0, 3, 8}

or:

var tehtrahedron = [4]int{12, 0, 3, 8}

But this option will mess up the rest of my code and make my code difficult to read.

Comments

  1. A tetrahedron does not always consist of 1 corners and 3 sides. Combinations are arbitrary. But the total number of angles and sides is always 4.
  2. The index order of the tetrahedron is important.

question

Is there a convenient way to preserve the original index numbers of edges and corners? Is it possible to represent a tetrahedron by the indices of its sides and angles at the same time?

Looking for some ideas...


Correct answer


In the end I chose mobile indexing. The edges are indexed 0 to 11 and the corners are indexed 12 to 19.

I have to do this because the combination of sides and corners is arbitrary. In addition, the order of the indexes is also critical.

The above is the detailed content of Combine two index numbers. For more information, please follow other related articles on the PHP Chinese website!

Statement:
This article is reproduced at:stackoverflow.com. If there is any infringement, please contact admin@php.cn delete