C# Class R3.Geometry.SimplexCalcs

显示文件 Open project: roice3/Honeycombs Class Usage Examples

Public Methods

Method Description
CalcEScale ( ) : void
DualEdgeBall ( Sphere facets ) : H3.Cell.Edge
FCOrientMobius ( int p, int q ) : Mobius
GoursatTetrahedron ( double A, double B, double C, double A_, double B_, double C_ ) : Vector3D[]

This calculates the 4 vertices of a general (but finite) Goursat Tetrahedron. Result is in the ball model. The method comes from the dissertation "Hyperbolic polyhedra: volume and scissors congruence", by Yana Zilberberg Mohanty, section 2.4, steps 1-5. A,B,C are the three dihedral angles surrounding a vertex. A_,B_,C_ are the three oppoite dihedral angles.

GramSchmidt ( Matrix4D input, Matrix4D innerProductValues ) : Matrix4D
HoneycombEdgeBall ( Sphere facets, Vector3D vertex ) : H3.Cell.Edge
HoneycombEdgeBall ( int p, int q, int r ) : H3.Cell.Edge
HyperboloidToBall ( VectorND hyperboloidPoint ) : Vector3D
Mirrors ( Vector3D verts ) : R3.Geometry.Sphere[]

Given the 4 verts of a tetrahedron (must lie within ball), Calculate the faces of the tetrahedron. Input and Output in ball model.

Mirrors ( int p, int q, int r, Vector3D &cellCenter, bool moveToBall = true, double scaling = -1 ) : R3.Geometry.Sphere[]
Mirrors ( int p, int q, int r, bool moveToBall = true, double scaling = -1 ) : R3.Geometry.Sphere[]
MirrorsEuclidean ( ) : R3.Geometry.Sphere[]
MirrorsSpherical ( int p, int q, int r ) : R3.Geometry.Sphere[]

Mirrors for Spherical geometry, in the ball model.

PrepForFacetCentering ( int p, int q, Sphere spheres, Vector3D &cellCenter ) : void

Inputs must be in UHS!

ReverseRows ( Matrix4D m ) : Matrix4D
SimplexEdgesBall ( int p, int q, int r ) : H3.Cell.Edge[]

Returns the 6 simplex edges in the Ball model.

SimplexEdgesUHS ( int p, int q, int r ) : H3.Cell.Edge[]

Returns the 6 simplex edges in the UHS model.

ToPovRay ( Sphere mirrors ) : void
VertexPointBall ( int p, int q, int r ) : Vector3D

Calculates the point of our simplex that is at a vertex.

VertexSpherical ( int p, int q, int r ) : Vector3D
VertsBall ( int p, int q, int r ) : Vector3D[]

Return the 4 simplex vertices in the ball model.

VertsEuclidean ( ) : Vector3D[]

Private Methods

Method Description
BaseTileSegments ( int p, int q ) : Segment[]
CellCenterBall ( int p, int q, int r ) : Vector3D

Calculates the point of our simplex that is at the middle of an edge.

FaceCenterBall ( int p, int q, int r ) : Vector3D

Calculates the point of our simplex that is at the middle of an edge.

Finite ( int t ) : bool
FiniteOrInfinite ( int t ) : bool
HoneycombEdgeUHS ( int p, int q, int r ) : Circle3D
Infinite ( int t ) : bool
InteriorMirrors ( int p, int q ) : R3.Geometry.Sphere[]

Calculates the 3 mirrors connected to the cell center. This works in all geometries and returns results in the UHS model (or the appropriate analogue).

MidEdgePointBall ( int p, int q, int r ) : Vector3D

Calculates the point of our simplex that is at the middle of an edge.

MinkowskiInnerProduct ( VectorND v1, VectorND v2 ) : double
MinkowskiNormalize ( VectorND v ) : VectorND
RotateSphere ( Sphere s, double rotation ) : void

Helper to rotate a sphere about the z axis.

TilePoints ( int p, int q, Vector3D &p1, Vector3D &p2, Vector3D &p3, Segment &seg ) : void

Helper to construct some points we need for calculating simplex facets for a {p,q,r} honeycomb.

Method Details

CalcEScale() public static method

public static CalcEScale ( ) : void
return void

DualEdgeBall() public static method

public static DualEdgeBall ( Sphere facets ) : H3.Cell.Edge
facets Sphere
return H3.Cell.Edge

FCOrientMobius() public static method

public static FCOrientMobius ( int p, int q ) : Mobius
p int
q int
return R3.Math.Mobius

GoursatTetrahedron() public static method

This calculates the 4 vertices of a general (but finite) Goursat Tetrahedron. Result is in the ball model. The method comes from the dissertation "Hyperbolic polyhedra: volume and scissors congruence", by Yana Zilberberg Mohanty, section 2.4, steps 1-5. A,B,C are the three dihedral angles surrounding a vertex. A_,B_,C_ are the three oppoite dihedral angles.
public static GoursatTetrahedron ( double A, double B, double C, double A_, double B_, double C_ ) : Vector3D[]
A double
B double
C double
A_ double
B_ double
C_ double
return Vector3D[]

GramSchmidt() public static method

public static GramSchmidt ( Matrix4D input, Matrix4D innerProductValues ) : Matrix4D
input R3.Math.Matrix4D
innerProductValues R3.Math.Matrix4D
return R3.Math.Matrix4D

HoneycombEdgeBall() public static method

public static HoneycombEdgeBall ( Sphere facets, Vector3D vertex ) : H3.Cell.Edge
facets Sphere
vertex Vector3D
return H3.Cell.Edge

HoneycombEdgeBall() public static method

public static HoneycombEdgeBall ( int p, int q, int r ) : H3.Cell.Edge
p int
q int
r int
return H3.Cell.Edge

HyperboloidToBall() public static method

public static HyperboloidToBall ( VectorND hyperboloidPoint ) : Vector3D
hyperboloidPoint VectorND
return Vector3D

Mirrors() public static method

Given the 4 verts of a tetrahedron (must lie within ball), Calculate the faces of the tetrahedron. Input and Output in ball model.
public static Mirrors ( Vector3D verts ) : R3.Geometry.Sphere[]
verts Vector3D
return R3.Geometry.Sphere[]

Mirrors() public static method

public static Mirrors ( int p, int q, int r, Vector3D &cellCenter, bool moveToBall = true, double scaling = -1 ) : R3.Geometry.Sphere[]
p int
q int
r int
cellCenter Vector3D
moveToBall bool
scaling double
return R3.Geometry.Sphere[]

Mirrors() public static method

public static Mirrors ( int p, int q, int r, bool moveToBall = true, double scaling = -1 ) : R3.Geometry.Sphere[]
p int
q int
r int
moveToBall bool
scaling double
return R3.Geometry.Sphere[]

MirrorsEuclidean() public static method

public static MirrorsEuclidean ( ) : R3.Geometry.Sphere[]
return R3.Geometry.Sphere[]

MirrorsSpherical() public static method

Mirrors for Spherical geometry, in the ball model.
public static MirrorsSpherical ( int p, int q, int r ) : R3.Geometry.Sphere[]
p int
q int
r int
return R3.Geometry.Sphere[]

PrepForFacetCentering() public static method

Inputs must be in UHS!
public static PrepForFacetCentering ( int p, int q, Sphere spheres, Vector3D &cellCenter ) : void
p int
q int
spheres Sphere
cellCenter Vector3D
return void

ReverseRows() public static method

public static ReverseRows ( Matrix4D m ) : Matrix4D
m R3.Math.Matrix4D
return R3.Math.Matrix4D

SimplexEdgesBall() public static method

Returns the 6 simplex edges in the Ball model.
public static SimplexEdgesBall ( int p, int q, int r ) : H3.Cell.Edge[]
p int
q int
r int
return H3.Cell.Edge[]

SimplexEdgesUHS() public static method

Returns the 6 simplex edges in the UHS model.
public static SimplexEdgesUHS ( int p, int q, int r ) : H3.Cell.Edge[]
p int
q int
r int
return H3.Cell.Edge[]

ToPovRay() public static method

public static ToPovRay ( Sphere mirrors ) : void
mirrors Sphere
return void

VertexPointBall() public static method

Calculates the point of our simplex that is at a vertex.
public static VertexPointBall ( int p, int q, int r ) : Vector3D
p int
q int
r int
return Vector3D

VertexSpherical() public static method

public static VertexSpherical ( int p, int q, int r ) : Vector3D
p int
q int
r int
return Vector3D

VertsBall() public static method

Return the 4 simplex vertices in the ball model.
public static VertsBall ( int p, int q, int r ) : Vector3D[]
p int
q int
r int
return Vector3D[]

VertsEuclidean() public static method

public static VertsEuclidean ( ) : Vector3D[]
return Vector3D[]