Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Finding coordinate of rectangle in n-dimension

What is the best way in C++ to calculate the coordinate of a rectangle (hyper-rectangle) in n-dimension?

I have dimensions definition of the rectangle in a 1d vector like:

[min1, max1, min2, max2, ...., minN, maxN]

For example, in 2d the dimensions, the vector is

[min1, max1, min2, max2]

And the corner coordinates I am looking for are

[min1, min2], [min1, max2], [max1, min2], [max1, max2]

How do we do this for a hyper-rectangle in n-dimension?

like image 444
zaza Avatar asked Sep 20 '25 20:09

zaza


1 Answers

That hyper-rectangle has 2^N vertices.

To compute the coordinates of i-th vertex where i in [ 0 .. 2^N-1 ] interval, loop over bits in the i from 0 (lowest one) to N-1. If the bit is set, use maximum coordinate for that dimension, if that bit is 0, use minimum coordinate for that dimension.

For example, for cube N=3, it has 8 vertices.

The first one has index 0, 0b000, you’ll get minimum values for all 3 coordinates. The last one has index 7, 0b111, you’ll get maximum values for all 3 coordinates. The rest of the vertices are in between, you’ll get some combination of min and max coordinates.

like image 190
Soonts Avatar answered Sep 22 '25 10:09

Soonts