Let $\mathbb{S}_\mathbb{N}^n$ denote the set of all $n$-simplices in $n$-dimensional euclidean space $E^n$.

Call an $n$-simplex aligned, if the set $C$ of its corners satisfies
$\exists c_k=\left(x^1_k,\ \dots,\ x^n_k \right)\in C:\quad x^j_k > 0\iff j\lt k\ \quad\wedge\quad x^j_k=0\iff j\ge k$
$\forall k\in\{1,\ \dots,\ n\}$

One may assume that the corners of an aligned copy of an $n$-simplex are sorted according to decreasing number of $0$-coordinate values, i.e. that $c_k=\left(x^1_k,\ \dots,\ x^{k-1}_k,\ 0^k,\ \dots,\ 0^n\right)$
(in this context the superscripts are coordinate-indices and not exponents).

Let further ACIS$^n$ denote the set of all aligned copies of simplices in $\mathbb{S}_\mathbb{N}$ and, let $C^n$ denote the set of all points in $E^n$ that correspond to corners of simplices in ACIS$^n$ whose coordinate values are all positive.


do there exist pairs $(p_n,q_n)$ of points in $C^n$ with:

  • $\|q_n-p_n\|\in \mathbb{N}$
  • $p^n_n\ne q^n_n$
  • $(q_n-p_n)^T(u_j-u_i)\ne 0$ for all pairs of corners $u_i,u_j$ of the same simplex in ACIS$^n$

i.e. pairs of points that are corners of aligned simplices with all coordinates having positive values and, whose distance is integral.

The other restrictions are meant to rule out trivial cases; e.g. scaled copies of an aligned simplex with integral side-lengthwould trivially yield integer distances.

Adendum: for illustrational purposes, here are two images of aligned integer-sided triangles:

The first one depicts the loci of the vertices $C$, when $A$ are at the origin and $B$ on the positive x-axis; that resembles the alignment in the formulation of the question: enter image description here

The second image is based on the same data, however this time the centers of side $c$ of the triangles are at the origin: enter image description here

And here is the code fragment that was used for generating the data:

int n= 0;
float[] x=new float[dim];
float[] y=new float[dim];
float xmin, xmax, ymin, ymax;

for (int ab=2; ab<100; ++ab)    {
    for (int c=1; c<ab; ++c)    {
        for (int a=1; a<ab; ++a){
            float b=ab-a;
                if (a < b)  {
                // remove the 'c/2' to get the uncentered version
                    x[n] = (c*c+b*b-a*a)/(2*c)-c/2;
                    y[n] = sqrt(b*b-x[n]*x[n]);
                } else      {
                    x[n] = (c*c+a*a-b*b)/(2*c)-c/2;
                    y[n] = sqrt(a*a-x[n]*x[n]);

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.