- UID
- 352
- 帖子
- 1321
- 精华
- 14
- 积分
- 2599
- 来自
- 河南永城
|
global:
Mobius a0
Mobius b0
root = IIf(AlternateRoot, 0, 1)
switch (Recipe) {
case Recipes.Grandma
Mobius.GrandmaRecipe(TraceA, TraceB, root, a0, b0)
specialWordP = GrandmaP
specialWordQ = GrandmaQ
case Recipes.Jergensen
Mobius.JergensenRecipe(TraceA, TraceB, root, a0, b0)
specialWordP = GrandmaP
specialWordQ = GrandmaQ
case Recipes.Riley
Mobius.RileyRecipe(RileyParameter, a0, b0)
specialWordP = RileyP
specialWordQ = RileyQ
case Recipes.Maskit
Mobius.MaskitRecipe(MaskitParameter, a0, b0)
specialWordP = MaskitP
specialWordQ = MaskitQ
}
Mobius R0
Mobius R1
'
' Transform/Conjugate the base generators a0 and b0.
'
if (ApplyUnitCircleGroupTransform) {
R0 = Mobius.UnitCircleGroup(DegreeToRadian(UCGAngle), UCGPoint)
R1 = Mobius.Inverse(R0)
a0 = Mobius.Multiply3(R0, a0, R1)
b0 = Mobius.Multiply3(R0, b0, R1)
}
if (ConjugateBy <> MobiusSpecialMatrixTypes.Identity) {
R0 = Mobius.SpecialMatrix(ConjugateBy)
R1 = Mobius.Inverse(R0)
a0 = Mobius.Multiply3(R0, a0, R1)
b0 = Mobius.Multiply3(R0, b0, R1)
}
Mobius.Normalize(a0)
Mobius.Normalize(b0)
Mobius A1 = Mobius.Inverse(a0)
Mobius B1 = Mobius.Inverse(b0)
'
' Define the commutators.
'
Mobius abAB = Mobius.Multiply4(a0, b0, A1, B1)
Mobius baBA = Mobius.Inverse(abAB)
'
' Fill w[] with the base set and the commutators.
' Include the special word if required.
'
if (specialWordP <> 0 && specialWordQ <> 0) {
Mobius sw0 = Mobius.PQWord(specialWordP, specialWordQ, a0, B1)
Mobius sw1 = Mobius.Inverse(sw0)
Mobius w[] = a0, b0, A1, B1, abAB, baBA, sw0, sw1
} else {
Mobius w[] = a0, b0, A1, B1, abAB, baBA
}
const Complex base = Array.Dim1(w[])
const Complex count = base * Power
const Mobius generator[count]
const Complex indexLUT[10000]
Complex p[base]
for (i = 0, i < base, i += 1) {
p = IIf(i < 4, 1, CommutatorWeight)
}
Math.NormalizeWeights(p[], base)
Math.GenerateIndexLookupTable(p[], base, indexLUT[])
for (i = 0, i < Power, i += 1) {
Array.Copy(w[], 0, generator[], i*base, base)
for (j = 0, j < base, j += 1) {
w[j] = Mobius.Multiply(w[j], generator[j])
}
}
initialize:
z = Mobius.Sink(abAB)
iterate:
attractorIndex = Math.GenerateIndex(indexLUT[])
if (Random.Number() < Weight) {
index = attractorIndex
} else {
index = attractorIndex * Random.Integer(Power)
}
z = Mobius.TransformPoint(generator[index], z)
properties:.....
在http://www.fractalsciencekit.com/program/orbeqn.htm中的帮助中有些没有表达式. |
|