## mmf Class MMF_SelfRotation

```Object
common:Generic
common:Transform
common:UserTransform
mmf:MMF_SelfRotation
```

`class UserTransform:MMF_SelfRotation`

Rotates the complex value by multiples of its own angle.

Ultra Fractal Source
``` class MMF_SelfRotation(common.ulb:UserTransform) {
; Rotates the complex value by multiples of its own angle.<br>
public:
import "common.ulb"

; @param pparent the parent, generally "this" for the parent, or zero
func MMF_SelfRotation(Generic pparent)
UserTransform.UserTransform(pparent)
endfunc

complex func Iterate(complex pz)
;    m_Iterations = m_Iterations + 1 not used in this transform
if pz!=(0,0)
float m = cabs(pz)
if @degree==(1,0)
pz = sqr(pz)/m
else
pz = pz^(@degree+1.0)/m^@degree
endif
endif
return pz
endfunc

default:
title = "Self Rotation"
complex param degree
caption = "Degree of rotation"
default = (1,0)
hint = "The larger the value, the more rotation involved. Using 1.0 \
means that the z value is rotated by its own angle, using \
2.0 means that it's rotated by twice its own angle, 3.0 by \
three times and so on. Values less than 1, non-integer values, \
negative values, imaginary values etc. will produce strange \
results, not that results aren't strange anyway - in \
particular when self-rotation is applied the chance of \
Strangely Attractive orbits is increased :)"
endparam
}
```

Constructor Summary
`MMF_SelfRotation()`

`MMF_SelfRotation(Generic pparent)`

Method Summary
` complex` `Iterate(complex pz)`
Transform a single point within a sequence

Methods inherited from class common:Transform
`Init, IsSolid, IterateSilent`

Methods inherited from class common:Generic
`GetParent`

Methods inherited from class Object

Constructor Detail

### MMF_SelfRotation

`public MMF_SelfRotation(Generic pparent)`
Parameters:
`pparent` - the parent, generally "this" for the parent, or zero

### MMF_SelfRotation

`public MMF_SelfRotation()`
Method Detail

### Iterate

`public complex Iterate(complex pz)`
Description copied from class: `Transform`
Transform a single point within a sequence

After a sequence has been set up with Init(), this function will be called once for each value in the sequence. Note that all values in the sequence must be processed in order (they cannot be processed out of order). If the sequence contains only one value, Init() will still be called and then Iterate() will be called just once.

Overrides:
`Iterate` in class `Transform`
Parameters:
`pz` - the complex value to be transformed
Returns:
the transformed value