C# 클래스 R3.Math.Mobius

파일 보기 프로젝트 열기: roice3/Honeycombs 1 사용 예제들

Private Properties

프로퍼티 타입 설명
DivideQuat Vector3D
MultQuat Vector3D

공개 메소드들

메소드 설명
Apply ( System.Numerics.Complex z ) : System.Numerics.Complex

Applies a Mobius transformation to a complex number.

Apply ( Vector3D z ) : Vector3D

Applies a Mobius transformation to a vector.

Use the complex number version if you can.

ApplyInfiniteSafe ( Vector3D z ) : Vector3D
ApplyToInfinite ( ) : Vector3D

Applies a Mobius transformation to the point at infinity.

ApplyToQuaternion ( Vector3D q ) : Vector3D

Applies a Mobius transformation to a quaternion with a zero k component (handled as a vector). The complex Mobius coefficients are treated as quaternions with zero j,k values. This is also infinity safe.

CreateFromIsometry ( Geometry g, double angle, System.Numerics.Complex P ) : Mobius
Elliptic ( Geometry g, System.Numerics.Complex fixedPlus, double angle ) : void
Geodesic ( Geometry g, System.Numerics.Complex p1, System.Numerics.Complex p2 ) : void

Move from a point p1 -> p2 along a geodesic. Also somewhat from Don.

Hyperbolic ( Geometry g, System.Numerics.Complex fixedPlus, double scale ) : void
Hyperbolic2 ( Geometry g, System.Numerics.Complex fixedPlus, System.Numerics.Complex point, double offset ) : void

Allow a hyperbolic transformation using an absolute offset. offset is specified in the respective geometry.

Identity ( ) : Mobius
Inverse ( ) : Mobius

Returns a new Mobius transformation that is the inverse of us.

Isometry ( Geometry g, double angle, System.Numerics.Complex P ) : void

This will calculate the Mobius transform that represents an isometry in the given geometry. The isometry will rotate CCW by angle A about the origin, then translate the origin to P (and -P to the origin).

MapPoints ( System.Numerics.Complex z1, System.Numerics.Complex z2, System.Numerics.Complex z3 ) : void

This transform will map z1 to Zero, z2 to One, and z3 to Infinity. http://en.wikipedia.org/wiki/Mobius_transformation#Mapping_first_to_0.2C_1.2C_.E2.88.9E If one of the zi is ∞, then the proper formula is obtained by first dividing all entries by zi and then taking the limit zi → ∞

MapPoints ( System.Numerics.Complex z1, System.Numerics.Complex z2, System.Numerics.Complex z3, System.Numerics.Complex w1, System.Numerics.Complex w2, System.Numerics.Complex w3 ) : void

This transform will map the z points to the respective w points.

Mobius ( System.Numerics.Complex z1, System.Numerics.Complex z2, System.Numerics.Complex z3 ) : System.Diagnostics

This transform will map z1 to Zero, z2, to One, and z3 to Infinity.

Mobius ( System.Numerics.Complex a, System.Numerics.Complex b, System.Numerics.Complex c, System.Numerics.Complex d ) : System.Diagnostics
Normalize ( ) : void

Normalize so that ad - bc = 1

PureTranslation ( Geometry g, System.Numerics.Complex p1, System.Numerics.Complex p2 ) : void

The pure translation (i.e. moves the origin straight in some direction) that takes p1 to p2. I borrowed this from Don's hyperbolic applet.

Round ( int digits ) : void

This is only here for a numerical accuracy hack. Please don't make a habit of using!

Scale ( double scale ) : Mobius
ScaleComponents ( System.Numerics.Complex k ) : void
ToString ( ) : string
Unity ( ) : void

The identity Mobius transformation.

UpperHalfPlane ( ) : void

This will transform the unit disk to the upper half plane.

operator ( ) : Mobius

비공개 메소드들

메소드 설명
DivideQuat ( Vector3D a, Vector3D b ) : Vector3D
MultQuat ( Vector3D a, Vector3D b ) : Vector3D

메소드 상세

Apply() 공개 메소드

Applies a Mobius transformation to a complex number.
public Apply ( System.Numerics.Complex z ) : System.Numerics.Complex
z System.Numerics.Complex
리턴 System.Numerics.Complex

Apply() 공개 메소드

Applies a Mobius transformation to a vector.
Use the complex number version if you can.
public Apply ( Vector3D z ) : Vector3D
z Vector3D
리턴 Vector3D

ApplyInfiniteSafe() 공개 메소드

public ApplyInfiniteSafe ( Vector3D z ) : Vector3D
z Vector3D
리턴 Vector3D

ApplyToInfinite() 공개 메소드

Applies a Mobius transformation to the point at infinity.
public ApplyToInfinite ( ) : Vector3D
리턴 Vector3D

ApplyToQuaternion() 공개 메소드

Applies a Mobius transformation to a quaternion with a zero k component (handled as a vector). The complex Mobius coefficients are treated as quaternions with zero j,k values. This is also infinity safe.
public ApplyToQuaternion ( Vector3D q ) : Vector3D
q Vector3D
리턴 Vector3D

CreateFromIsometry() 공개 정적인 메소드

public static CreateFromIsometry ( Geometry g, double angle, System.Numerics.Complex P ) : Mobius
g Geometry
angle double
P System.Numerics.Complex
리턴 Mobius

Elliptic() 공개 메소드

public Elliptic ( Geometry g, System.Numerics.Complex fixedPlus, double angle ) : void
g Geometry
fixedPlus System.Numerics.Complex
angle double
리턴 void

Geodesic() 공개 메소드

Move from a point p1 -> p2 along a geodesic. Also somewhat from Don.
public Geodesic ( Geometry g, System.Numerics.Complex p1, System.Numerics.Complex p2 ) : void
g Geometry
p1 System.Numerics.Complex
p2 System.Numerics.Complex
리턴 void

Hyperbolic() 공개 메소드

public Hyperbolic ( Geometry g, System.Numerics.Complex fixedPlus, double scale ) : void
g Geometry
fixedPlus System.Numerics.Complex
scale double
리턴 void

Hyperbolic2() 공개 메소드

Allow a hyperbolic transformation using an absolute offset. offset is specified in the respective geometry.
public Hyperbolic2 ( Geometry g, System.Numerics.Complex fixedPlus, System.Numerics.Complex point, double offset ) : void
g Geometry
fixedPlus System.Numerics.Complex
point System.Numerics.Complex
offset double
리턴 void

Identity() 공개 정적인 메소드

public static Identity ( ) : Mobius
리턴 Mobius

Inverse() 공개 메소드

Returns a new Mobius transformation that is the inverse of us.
public Inverse ( ) : Mobius
리턴 Mobius

Isometry() 공개 메소드

This will calculate the Mobius transform that represents an isometry in the given geometry. The isometry will rotate CCW by angle A about the origin, then translate the origin to P (and -P to the origin).
public Isometry ( Geometry g, double angle, System.Numerics.Complex P ) : void
g Geometry
angle double
P System.Numerics.Complex
리턴 void

MapPoints() 공개 메소드

This transform will map z1 to Zero, z2 to One, and z3 to Infinity. http://en.wikipedia.org/wiki/Mobius_transformation#Mapping_first_to_0.2C_1.2C_.E2.88.9E If one of the zi is ∞, then the proper formula is obtained by first dividing all entries by zi and then taking the limit zi → ∞
public MapPoints ( System.Numerics.Complex z1, System.Numerics.Complex z2, System.Numerics.Complex z3 ) : void
z1 System.Numerics.Complex
z2 System.Numerics.Complex
z3 System.Numerics.Complex
리턴 void

MapPoints() 공개 메소드

This transform will map the z points to the respective w points.
public MapPoints ( System.Numerics.Complex z1, System.Numerics.Complex z2, System.Numerics.Complex z3, System.Numerics.Complex w1, System.Numerics.Complex w2, System.Numerics.Complex w3 ) : void
z1 System.Numerics.Complex
z2 System.Numerics.Complex
z3 System.Numerics.Complex
w1 System.Numerics.Complex
w2 System.Numerics.Complex
w3 System.Numerics.Complex
리턴 void

Mobius() 공개 메소드

This transform will map z1 to Zero, z2, to One, and z3 to Infinity.
public Mobius ( System.Numerics.Complex z1, System.Numerics.Complex z2, System.Numerics.Complex z3 ) : System.Diagnostics
z1 System.Numerics.Complex
z2 System.Numerics.Complex
z3 System.Numerics.Complex
리턴 System.Diagnostics

Mobius() 공개 메소드

public Mobius ( System.Numerics.Complex a, System.Numerics.Complex b, System.Numerics.Complex c, System.Numerics.Complex d ) : System.Diagnostics
a System.Numerics.Complex
b System.Numerics.Complex
c System.Numerics.Complex
d System.Numerics.Complex
리턴 System.Diagnostics

Normalize() 공개 메소드

Normalize so that ad - bc = 1
public Normalize ( ) : void
리턴 void

PureTranslation() 공개 메소드

The pure translation (i.e. moves the origin straight in some direction) that takes p1 to p2. I borrowed this from Don's hyperbolic applet.
public PureTranslation ( Geometry g, System.Numerics.Complex p1, System.Numerics.Complex p2 ) : void
g Geometry
p1 System.Numerics.Complex
p2 System.Numerics.Complex
리턴 void

Round() 공개 메소드

This is only here for a numerical accuracy hack. Please don't make a habit of using!
public Round ( int digits ) : void
digits int
리턴 void

Scale() 공개 정적인 메소드

public static Scale ( double scale ) : Mobius
scale double
리턴 Mobius

ScaleComponents() 공개 메소드

public ScaleComponents ( System.Numerics.Complex k ) : void
k System.Numerics.Complex
리턴 void

ToString() 공개 메소드

public ToString ( ) : string
리턴 string

Unity() 공개 메소드

The identity Mobius transformation.
public Unity ( ) : void
리턴 void

UpperHalfPlane() 공개 메소드

This will transform the unit disk to the upper half plane.
public UpperHalfPlane ( ) : void
리턴 void

operator() 공개 정적인 메소드

public static operator ( ) : Mobius
리턴 Mobius