Central Projection of Hyperbolic Space Onto a Horosphere

Marijana Babic and Srdjan Vukmirovic

Introduction

Hyperbolic geometry (or geometry of Bolyai - Lobachevski) is together with spherical geometry the simplest "curved" geometry. Hyperbolic plane, usually denoted by (L^2), is usually visualized using certain model of hyperbolic plane. Poincare disk, Klein disk and half-plane model are  the best known models of hyperbolic plane. In the Figure 1. the red triangle, together with three triangles obtained by reflection with respect to its edges are shown in those three models. Note, that in all pictures,  all four triangles are mutually congruent in hyperbolic plane.  A region of hyperbolic plane is not isometric to a region of "flat", Euclidean plane. This means that it is not possible to represent, without distorsion, a region of hyperbolic plane on a flat computer screen.

Therefore, hyperbolic metric of the model is not inherited from the plane:  distances become infinitely big near the absolute (unit circle in the first two models and x-axis in the third model). Although to our eyes the absolute is finite, it represents infinity of the hyperbolic plane.

For hyperbolic space (L^(3 )) there exist analogous models: Poincare ball, Klein ball and half-space model. Two approaches for visualization of the hyperbolic space have been used so far, and both approaches at least in one instance use certain model.

The first is to represent a geometrical object in some model of hyperbolic space in  (R^3)and then to project  it onto computer screen by standard central projection of (R^3).

The second approach is to fix a hyperbolic plane (L^(2 ))in hyperbolic space (L^3), project the space onto (L^2) by means of central projection in (L^3) and finally visualize the plane (L^(2 ))using some model on the computer screen.

In this paper we take a different approach. We wonder: how would hypebolic space look like to us, if we were there? Equivalently, in terms of computer graphics: how would the picture look like if we isometrically embedd our flat computer screen into (L^3), project the hyperbolic space on the screen by means of central projection in (L^3) and then watch the picture on the screen without any distorsions and models?

The mathematical answer was well known to very founders of hyperbolic geometry: there is a peculirar surface in (L^3), called horosphere, which is isometric to Euclidean plane. Therefore,  if we isommetricaly embedd a flat, Euclidean screen in hyperbolic space it may become a part of horosphere. In this paper we discuss necessary mathematical background regarding central projection of hyperbolic space onto horosphere, as well as, isometric transformations of the hyperbolic space. The final result is Mathematica package L3toHorosphere that allows visualization of (L^3) by means of central projection onto horosphere and also visualization of hyperbolic motions. Using this package many interesting pictures and animations are obtained.

The paper is organized as follows. In the first section we give a brief overview of models of hyperbolic space. In the second section we study horosphere and central projection onto horosphere.  We find the position of the observer (eyepoint) and screen (horosphere) that is meaningfull and  easiest to implement. The third section is devoted to implementation of isometries of hyperbolic space. Finally, in the fourth section we give some examples of projections  and animations obtained by package L3toHorosphere.

Models of hyperbolic space

Klein ball and projective model

Klein ball model {P(x,y,z) | (x^2) + (y^2) + (z^2) <1} is interior of unit sphere in (R^3). The unit sphere is called absolute of this model.  Lines  and planes of this model are parts of euclidean lines and planes. The distance beetwen points P and Q is given by the formula

d(P,Q) = (1/2)log((|QA||PB|)/(|PA||QB|)),

where A and B are endpoints of the chord containing P and Q and vertical bar denotes the euclidean distance.

Klein ball model is closely related to Klein projective model or pseudosphere model. Namely for point P(x,y,z) from the Klein model, one can consider homogenous coordinates P(x:y:z:1). There are unique homogenous P((Subscript[x, 1]):(Subscript[x, 2]):(Subscript[x, 3]):(Subscript[x, 4])) representing the same point and satisfying the relation

-((Subscript[x, 1])^2)- ((Subscript[x, 2])^2)- ((Subscript[x, 3])^2)+ ((Subscript[x, 4])^2) = 1, (Subscript[x, 4])>0.

This means that one can regard hyperbolic space as pseudosphere (2) in Minkowski vector space (R^(3,1)), with scalar product  · given by matrix diag(-1, -1, -1, 1).

It is interesting that formula (1) for distance translates into

d(P,Q) = (cosh^(-1))(P·Q),

where Q((Subscript[y, 1]):(Subscript[y, 2]):(Subscript[y, 3]):(Subscript[y, 4])) and Q((Subscript[y, 1]):(Subscript[y, 2]):(Subscript[y, 3]):(Subscript[y, 4])) are homogenous coordinates of these points. Therefore, the isometries of Klein projective model are those projective transformations that preserve the pseudosphere, i.e. the corresponding scalar product. The importance or this model is its linear nature: the lines and planes are linear and isometries are represented as multiplication of vectores by 4x4 matrices.

Half-space model

Half-space model consists of all points P(x, y, z) from (R^3)satisfaying relation z>0. The plane z=0 is called absolute of this model. Lines of this model are half-circles orthogonal to the absolute (i.e. with center on the absolute and lying in a plane orthogonal to the apsolute) and rays orthogonal to the absolute. Planes of this model are half-spheres and half-planes orthogonal to the absolute. The distance in this model is best described using the metric tensor

(ds^2) = (((dx^2) + (dy^2)+ (dz^2))/(z^2)).

The isometries of this metric tensor are compositions of reflections and inversions with respect to hyperbolic planes. We are interested in half-space model since the horosphere has its simplest representation in this model, as we show in the sequel.

It is important to notice that in addition to finite points of (R^3) satisfying  z>0 the model contains a single infinite point (Subscript[P, ∞]) (it, in fact, compactifies (R^3) to sphere (S^3)). The absolute z=0 with point (Subscript[P, ∞]) becomes two-dimensional sphere, like absolute in the other two models. Each plane and each line in (R^3) can be regarded as sphere and circle, containing (Subscript[P, ∞]).

Poincare ball model

Poincare ball model {P(x,y,z) | (x^2) + (y^2) + (z^2) <1} is also the interior of unit sphere in (R^3). The unit sphere is called absolute of this model. Lines of this model are parts of circles orthogonal to the absolute and parts of lines orthogonal to the absolute (i.e. passing through the origin). Planes of this model are parts of spheres orthogonal to the absolute and parts of planes orthogonal to absolute. The metric tensor reads

(ds^2) = (((dx^2) + (dy^2)+ (dz^2))/(((1 - (x^2) - (y^(2 ))- (z^2)))^2)).

The isometries of this metric tensor are compositions of reflections and inversions with respect to hyperbolic planes. The mapping

f(x,y,z) = ((2(x,y,z))/(1 + (x^(2 ))+(y^2)+ (z^2)))

is isometry that maps point P(x,y,z) from Poincare to Klein model. Isometry beetween half-space model and Poincare ball model can be easily realized using Euclidean isometries of (R^3) and spherical inversions. In our work we are of little interest in Poincare ball model, except for conversion beetwen Klein and half-plane model.

Horosphere and the related central projection

Horosphere

Fix a point O  on absolute and point M∈(L^3). Horosphere (with center O containing point M)  is set of images of point M in reflections with respect to all planes containing O. Note that if O is finite point and M' is image of M then OM is congruent to OM' and the horosphere is regular sphere with center O. Therefore, one may think of  horosphere as of sphere with center in infinity.

From construction of horosphere it easily follows that all horospheres are mutually congruent in (L^3). We want to find the one that is most simple in certain model. Cosider point (Subscript[P, ∞]) of the half-plane model as center of horosphere, and any finite point M((Subscript[x, 0]),(Subscript[y, 0]),(Subscript[z, 0]))  of that model. All hyperbolic planes through (Subscript[P, ∞]) are exactly all Euclidean half-planes orthogonal to the absolute z=0. Therefore, all images M' of M have the same z-coordinate and the horosphere is the plane z = (Subscript[z, 0]). Note that this special horosphere touches the absolute in point (Subscript[P, ∞]) and hence all horospheres of half-space model are spheres that touch the apsolute in its center, or planes parallel to the absolute.

From the isometries beetwen models we conclude that horspheres in Poincare ball model are spheres touching the absolute in their center and in Klein ball model  ellipsoids touching the absolute. We revert to horosphere z = (Subscript[z, 0]) in half-space model because of its simplicity. For (Subscript[z, 0])=1 the restriction of the metric tensor (3) reads

(ds^2) = (dx^2) + (dy^2),

showing that the horosphere is isometric to the Euclidean plane. Since in this case the isometry beetwen horosphere and Euclidean plane is given by the imbedding itself, the setup consisting of half-space model and horosphere z = (Subscript[z, 0]) is the one we use for implementatio of the central projection.

Central projection onto horosphere

We have proved that we can embedd flat computer screen into hyperbolic space as a part of horosphere.  What would an observer see on the screen if he is in the hyperbolic space?  In any geometry, light ray carryng visual information from the object to the eye of the observer travels along geodesic, i.e. along straight line of that geometry. Klein model is the the easiest to sketch, since  the hyperbolic lines of that model are parts of euclidean lines.  If we place the observer O outside the horosphere  (see Figure 2., left picture) some points cannot be projected (point N) while others have two possible projections along the light ray (point M). Therefore, in that case the projection is not well defined. On the other hand, if we place the observer inside the horosphere (see Figure 2., right picture) the projection is well defined for all points of hyperbolic space.

In the half-space model, the point O(x,y,z) is inside the horosphere z = (Subscript[z, 0]) if the condition z > (Subscript[z, 0]) holds, what we suppose in the sequel. Particular coordinates of point O doesn't matter, so we can chose O(0,0,ω), ω > (Subscript[z, 0]).

Note that all points of half-space model are projected into finite points of horosphere z = (Subscript[z, 0]), except points M of the form M(0,0,z), z > ω that are projected into point (Subscript[P, ∞]), the infinite point of the horosphere (i.e. screen).

Central projection of hyperbolic line segment

In order to visualize polyhedra in hyperbolic space we have to understand the projection of hyperbolic line segment. The  line segment is projected into intersection of horosphere and the hyperbolic plane determined by the eyepoint O and the segment. For our purposes it is sufficient to consider half-space model, horsphere z = (Subscript[z, 0]) and the eyepoint O(0,0,ω), ω > (Subscript[z, 0]).

Recall that hyperbolic line segment is either Euclidean segment orthogonal to the absolute or cicular arc orthogonal to the absolute. The following casese are possible:

1) If the segment AB and eyepoint O don't belong to single Euclidean plane (what is possible only in case of circular arc), the projection belongs to intersection of horosphere and half-sphere determined by them. It is circular arc A'B' in horosphere z = (Subscript[z, 0]) (see Figure 3.).

2) If the segment AB and eyepoint O belong to single Euclidean plane α (orthogonal to absolute) its projection is:

a) Euclidean segment A'B' if segment AB have no common point with z-axis above O (that is point (0,0,z), z >ω);

b) Euclidean ray starting from A' if B is of form B(0,0,z), z >ω. This ray belongs to the intersection line of  α and horosphere;

c) Two disjoint Euclidean rays starting from A' and B' and belonging to the intersection line of α and horosphere. This happens if segment AB has one inner point of the form (0,0,z), z >ω;

d) Emty set if  segment AB is containted in the set {(0,0,z) |  z >ω}.

Note that that there are two  circular arcs in horosphere  z = (Subscript[z, 0])  with endpoints A' and B'. Therefore, to determine uniquely the projection of segment AB we need the projection C' of some point C belonging to the segment AB. Similar holds for Euclidean ray with the endpoint A'.

Visibility

The notion of visibility in Klein ball model coincides with Eucliedan visibility. Therefore, to determine the visibility one can use the standard algorithms from (R^3).

Isometries of hyperbolic space

The isometries of hyperbolic space are mathematicaly well known. The fastest and most elegant way to implement the isometries is to represent them as 4x4 matrices that are applied to column vectors of homogenous coordinates of points in Klein projective model. The homogenous coordinates are of the form P((Subscript[x, 1]):(Subscript[x, 2]):(Subscript[x, 3]):(Subscript[x, 4])), where homogenity means that coordinates ((Subscript[λx, 1]):(Subscript[λx, 2]):(Subscript[λx, 3]):(Subscript[λx, 4])), for each λ≠0, represent the same point.

As explanied in Section 2 the isometries are characerized as linear mappings preserving Minkowski scalar product, i.e. matrix A of an isometry satisfies (A^T) J A  = J, where  J=diag(1,1,1,-1) is diagonal matrix of the scalar product. Any hyperbolic isometry is composition of less than four reflections with respect to hyperbolic planes. In this review we don't want to exhaust all isometries, so we present only isometries that are composition at most two plane reflections.

Reflection with respect to plane (or point)

Plane in the Klein projective model is represented by hyperplane in  the vector space (R^(3,1)), so it has an equation

(Subscript[α, 1])(Subscript[x, 1])+(Subscript[α, 2])(Subscript[x, 2])+(Subscript[α, 3])(Subscript[x, 3])+(Subscript[α, 4])(Subscript[x, 4])=0.

The plane has normal vector (Subscript[n, α]) = ((((Subscript[α, 1]): (Subscript[α, 2]):(Subscript[α, 3]):-(Subscript[α, 4])) )^T) with respect to the scalar product given by matrix J. One can show that the reflection (Subscript[S, α]) with respect to the plane α has the matrix

S[(Subscript[n, α])] = (Subscript[I, 4]) - 2 (((Subscript[n, α])((Subscript[n, α])^T)J)/(((Subscript[n, α])^T) J (Subscript[n, α]))),

where (Subscript[I, 4]) is 4x4  identity matrix.It is important to note that the numerator (Subscript[n, α])((Subscript[n, α])^T)J is 4x4 matrix, while denominator ((Subscript[n, α])^T) J (Subscript[n, α]) is squared norm of vector (Subscript[n, α]) and hence a number. Vector (Subscript[n, α]) is considered column, while ((Subscript[n, α])^T) is row vector.

One can show that reflection (Subscript[S, P]) with respect to point P((Subscript[x, 1]):(Subscript[x, 2]):(Subscript[x, 3]):(Subscript[x, 4])) is given by the matrix

S[P] = (Subscript[I, 4]) - 2 (((PP^T)J)/((P^T) J P)),

which uses the same formula as the reflection (4) with respect to hyperplane. The reflection (Subscript[S, P]) is formally defined as composition of three reflections (Subscript[S, γ])°(Subscript[S, β])(Subscript[°S, α]) with respect to three mutually orthogonal planes α, β and γ that intersect in point P.

Translation

Translation is composition (Subscript[S, β])(Subscript[°S, α]) of two  reflections with respect to hyperparalel planes α and β, i.e. the planes  that have the common normal line n, which is unique in hyperbolic geometry. If A and B are intersections of n with α and β, respectively, we call it translation from A to B and denote it (Subscript[T, AB]). Note that (Subscript[T, AB]) is not translation by vector AB, since the notion of vector is not possible to define in hyperbolic geometry. Many other properties of hyperbolic translation are quite different from its Euclidean counterpart.  For example, we have (Subscript[T, AB])(A) = B and if (Subscript[T, AB])(M) = N then hyperbolic segments AB and MN are not congruent. Moreover, the relation AB<MN always hold.

To find the matrix of translation denote by C the hyperbolic midpoint of segment AB. One can show that (Subscript[T, AB]) = (Subscript[S, β])(Subscript[°S, α]) = (Subscript[S, C])(Subscript[°S, A ])and hence its matrix is product of known matrices:

T[AB] = S[C] S[A].

To find the hyperbolic midpoint C of the segment AB one can use the formula:

C = A(Sqrt[((B^T) J B)((A^T) J B)])+B(Sqrt[((A^T) J A)((A^T) J B)]).

Rotation

Hyperbolic rotation is composition (Subscript[R, p,ϕ])=(Subscript[S, β])(Subscript[°S, α]) of two reflections with respect to planes that intersect along axes of rotation, the line p=α⋂β, and the angle beetwen α and β equals (ϕ/2).  From formula (1) it follows that Euclidean rotations that fix the origin O(0,0,0) are isometries of Klein ball model. The consequence is that the angles in the origin of the Klein ball model are the same as Euclidean angles (this doesn't hold for any other point of Klein ball model). Therefore, to perform the rotation about line p, we translate p to contain the origin, do the rotation around translated line p' as Euclidean rotation and finally translate back. To be more specific, if R ∈ p be any point of p, then (Subscript[R, p,ϕ]) is given by the matrix:

R[p,ϕ] =T[OR] °R[p',ϕ]°T[RO],

where homogenous coordinates of the origin are O(0:0:0:1),  p' =(Subscript[T, RO])(p), and R[p', ϕ] is 4x4 block matrix

R[p', ϕ] = (({{(R^E)[p',ϕ], 0}, {0, 1}})).

Here we denote by  (R^E)[p',ϕ] the 3x3 euclidean matrix of rotation around euclidean line p' by angle ϕ.

Limit rotation

The limit or horocyclic rotation is probably the most intriguing isometry of hyperbolic plane, since it doesn't exist in Euclidean geometry. Limit rotation is composition (Subscript[S, β])(Subscript[°S, α]) of two  reflections with respect to parallel planes α and β, i.e. the planes  with single common point on the absolute.

A special case of such planes in the half-space model are two parallel Euclidean  half-planes α and β, that are orthgonal to the absolute z=0. Both α and β contain infinite point (Subscript[P, ∞]) and it is their single common point lying on absolute. To find formulas of limit rotation with respect to these planes let

α: a x + b y + (Subscript[c, 1])=0        and       β: a x + b y + (Subscript[c, 2])=0

An easy calculation shows that formulas of the limit rotation  (Subscript[S, β])(Subscript[°S, α]) are:

(x,y,z)->(x + ((2a((Subscript[c, 1])-(Subscript[c, 2])))/((a^(2 ))+ (b^2))), y + ((2b((Subscript[c, 1])-(Subscript[c, 2])))/((a^(2 ))+ (b^2))), z).

This means that in this special case the limit rotation is realized as Euclidean translation that preserves all horospheres z = (Subscript[z, 0]) with center in (Subscript[P, ∞]). In general case, the limit rotation is not an Euclidean translation, but the limit rotation (Subscript[S, β])(Subscript[°S, α]) always preserves horosphere with center (Subscript[S, β])⋂(Subscript[S, α]) on the absolute.

We now describe  general formulas of limit rotation. Note that paralel planes α and β in Klein ball model are parts of Euclidean planes α and β that intersect along line q touching the absolute in point P((Subscript[x, 0]), (Subscript[y, 0]), (Subscript[z, 0])).  (see Figure 4.)

Planes α and β have normal vector of the form  cos ϕ P + sin ϕ (q × P) = ((Subscript[a, 1])(ϕ), (Subscript[a, 2])(ϕ), (Subscript[a, 3])(ϕ)) , for some ϕ  = (Subscript[ϕ, α])  and ϕ = (Subscript[ϕ, β]). One can show that the normal vector of these planes in (R^(3,1)) in homogenous coordinates is given by:

n(ϕ) = ((Subscript[a, 1])(ϕ):(Subscript[a, 2])(ϕ):(Subscript[a, 3])(ϕ): (Subscript[a, 1])(ϕ) (Subscript[x, 0]) +  (Subscript[a, 2])(ϕ) (Subscript[y, 0])+  (Subscript[a, 3])(ϕ) (Subscript[z, 0])).

Now, the 4x4 matrix of the limit rotation (Subscript[S, β])(Subscript[°S, α]) is the product S[n((Subscript[ϕ, β]))] S[n((Subscript[ϕ, α]))] of reflection matrices (4).

Package L3toHorosphere-examples

Mathematica package L3toHorosphere has three main features: projection of hyperbolic polyhedra onto horosphere, visualization of the polyhedra and its projection in half-space model and realization of isometries of hyperbolic space.

Here is the list of functions with brief decrtiption:

drawProjection[ω, k, vert, faces, options] - project polyhedra given by faces and vertex coordinates vert from point O(0,0,ω) onto horosphere z = k (ω >k).

modelHS[ω, k, vert, faces, options] - in half-space model vizualize polyhedra given by faces and vertex coordinates vert and its central projection from point O(0,0,ω) onto horosphere z = k (ω >k).

reflect[nVector] - returns 4x4 matrix of reflection with respect to plane α with normal vector nVector. Normal vector is given in homogenous coordinates, i.e. is list of 4 numbers.

reflect[P] - returns 4x4 matrix of reflection with respect to point P  given in homogenous coordinates.

translate[A,B] - returns 4x4 matrix of translation from A to B.

rotate[A,B][ϕ] - returns 4x4 matrix of rotation by angle ϕ around line AB .

limitRotate[P][p][ϕ] - returns 4x4 matrix of limit (horocyclic) rotation by 'angle' ϕ ≠ Pi/2 (mod Pi) around line with direction p and containing unit point P (P orthgonal to p). P and p are given in the form (x,y,z).

Klein2HS[pt] - converts Klein projective point pt of form {(Subscript[x, 1]),(Subscript[x, 2]),(Subscript[x, 3]),(Subscript[x, 4])} to half-space model.

HS2Klein[pt] - converts half space point pt  of the form (x,y,z), z>0 to Klein projective point.

m[A,B] - returns midpoint of segment AB. All points are in Klein projective cooridnates  {(Subscript[x, 1]),(Subscript[x, 2]),(Subscript[x, 3]),(Subscript[x, 4])}.

normalVector[{pt1, pt2, pt3}] - returns projective normal vector of plane determined by three points. All coordinates are projective of the form  {(Subscript[x, 1]),(Subscript[x, 2]),(Subscript[x, 3]),(Subscript[x, 4])}.

edges[faces] -retuns edges of polyhedra with faces given by  faces.

This command loads the package

<<Geometry/L3toHorosphere.m

We load faces for the cube

cubeFaces = PolyhedronData["Cube", "Faces"][[2]][[1]]

Load the vertex coordinates for the cube. We have to make sure that the vertices belon to the unit sphere, so we divide coordinates by 3.

tempVert = 1/2 PolyhedronData["Cube", "VertexCoordinates"]

Now, we have from affine coordinates (x,y,z) to go to the Klein projective coordinates (x:y:z:1). For comuptational reasons it is always better to work with numeric data (Note: if we do mathematics by hand we would multiply by 4 to get rid of fractions).

cubeVert =  ( Append[#, 1] & /@  tempVert)//N

Now we project cube from point ω = (0,0,3)  of half-space model onto horosphere z = 1. We can set the color and line thickness.

cube = drawProjection[3, 1, cubeVert, cubeFaces,   color -> RGBColor[0, 0,1], thickness -> Thickness[0.003]]

This projection of the cube is so symmetric because the coordinates were symmetric.  Lets translate the cube so that its  vertex#5 is translated into the  vertex#1. The 4x4 matrix of the translation is applied to vertex coordinates by matrix multiplication.

tra1 = translate[cubeVert[[5]],cubeVert[[1]]];
cubeVertTra1   = (tra1.#)& /@ cubeVert;  (* apply the translation matrix to the vertices of cube *)
cube1 = drawProjection[3, 1, cubeVertTra1, cubeFaces,   color -> RGBColor[1, 0, 0], thickness -> Thickness[0.003]];(* the translated cube *)

Now we show together the cube and the translated cube.

Show[cube, cube1]

In Euclidean geometry, after translation, the two oposite faces ({8, 6, 5, 7} and {4, 3, 1, 2}, see cubeFaces)of cube would overlap after translation. Here, in hyperbolic geometry only the vertex#5 hit vertex#1. This shows that nor translation neither cube have Euclidean properties. Lets make an animation of the translation. Not the powerfull use of Mathematica function MatrixPower.

Animate[Show[cube,
                          drawProjection[3, 1, (MatrixPower[tra1, t].#)& /@ cubeVert, cubeFaces,   color -> RGBColor[1, 0, 0], thickness -> Thickness[0.003]],
                         PlotRange->{{-2,2}, {-2,2}}
                        ], (* Show *)
               {t,0, 1}
]

Similarly,  if you need a point C on a hyperbolic  segment AB such that, for example, AC = 5 AB, you can make it using matrix of translation and MatrixPower: C = MatrixPower[translate[A,B], 5]. In this way you can obtain any point on line AB.
 For those who know Lie groups: the set of translations along line AB is one-parametric subgroup and therefore isomorphic to (R,+).

The projection of the same cube can be very wild. We again just translate the cube along one of its edges.

tra2 = translate[cubeVert[[3]], cubeVert[[4]]];
cubeVertTra2   = (tra2.#) & /@ cubeVert; 
cube2 = drawProjection[3, 1, cubeVertTra2, cubeFaces,   color -> RGBColor[1, 0, 0], thickness -> Thickness[0.003], horizon->True];

Show[cube, cube2]

In the previous picture, the blue is the original cube, red is cube translated from vertex#3 to vertex#4. Using the option horizon->True we draw a black circle that divides front and back of the observer, where front of the observer is projected inside the black circle. We see that all edges of the cube are visible (no dashed lines). This is because the observer is in the interior of the cube.

To visualize the same cube and its projection in half-space model we use the function modelHS. If we use option  drawHorosphere -> True we would  draw the projection horosphere.

modelHS[3, 1, cubeVert, cubeFaces, range -> {{-3, 3}, {-3, 3}, {0, 3}}, drawAbsolute -> True, drawHorosphere->True]

We also visualize the translated cube and see that the observer is in its interior.

modelHS[3,1, cubeVertTra2, cubeFaces, range->{{-10,15}, {-15,10}, {0,10}}, drawAbsolute->True, drawHorosphere->True]