Combine two index numbers

WBOY
Release: 2024-02-06 10:18:04
forward
1154 people have browsed it

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
Copy after login

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
}
Copy after login

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"}
Copy after login

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}
Copy after login

or:

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

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!

source:stackoverflow.com
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!