
      Anfy IFS-fractals 1.1 - Copyright (C) by Fabio Ciucci 1997/98


This applet renders fractals by recursivly calculating a fractal-tree that
morphs using sin and cos tabs. The applet is fully configurable regarding
fractal generation and color palette.
This applet is based on original code by Martin Zettergren that is used
under license.
Remember that are needed both AnFract.class and Lware.class.
You must upload these 2 .class files and insert the <applet> tag on your
html document to add this applet to your page.

Here an example of what you have to write in the html (the things anfter
the ; are comments with min-max values acceptet):


<applet code=AnFract.class width=200 height=200>  ; Name, Width, Height
<param name=credits value="Applet by Fabio Ciucci (www.anfiteatro.it/java.html)">
<param name=regcode value="NO">         ; Register code (if you have it)
<param name=reglink value="NO">         ; URL where go optionally when clicked
<param name=regnewframe value="YES">    ; Reglink opened in new frame?
<param name=regframename value="_blank"> ; Name of new frame for reglink
<param name=statusmsg value="IFS fractals applet">  ; Statusbar message
<param name=dimensions value="8">       ; Number of of iterations each branch
<param name=branches value="2">         ; Branches per iteration
<param name=morph_speed value="3">      ; Speed of morphs through shapes
<param name=rot_speed value="5">        ; Rotation speed within iterations
<param name=rot_speed2 value="-5">      ; Rotation speed of whole fractal
<param name=decline value="0.75">       ; Length decrease each iteration
<param name=length value="26">          ; Length of the starting line
<param name=pensize value="1">          ; Drawing pen size (1..3)
<param name=progress value="YES">       ; Progressive pen increase (YES,NO)
<param name=progrinverse value="NO">    ; Inverse progressive pen (YES,NO)
<param name=progrstep value="2">        ; Pen progression stepping
<param name=iterskip value="YES">       ; Half iter skipping ("YES" or "NO")
<param name=backimage value="NO">       ; Background image (it's name or "NO")
<param name=backR value="0">            ; Background color (red component)
<param name=backG value="0">            ; Background color (green component)
<param name=backB value="0">            ; Background color (blue component)
<param name=ifsR1 value="255">          ; Fractal color 1 (red component)
<param name=ifsG1 value="255">          ; Fractal color 1 (green component)
<param name=ifsB1 value="180">          ; Fractal color 1 (blue component)
<param name=ifsR2 value="10">           ; Fractal color 2 (red component)
<param name=ifsG2 value="50">           ; Fractal color 2 (green component)
<param name=ifsB2 value="255">          ; Fractal color 2 (blue component)
<param name=overtext value="YES">       ; Fractal over text? ("YES", "NO")
<param name=textscroll value="NO">      ; File for scrolltext or "NO"
<param name=textoffset value="140">       ; Txtscroll y offset
<param name=textspeed value="1">          ; Txtscroll speed
<param name=textfont value="Arial">       ; Txtscroll font name
<param name=textbold value="NO">          ; Txtscroll bold ("YES" or "NO")
<param name=textsize value="24">          ; Txtscroll font size
<param name=textshadow value="YES">       ; Txtscroll shadow ("YES" or "NO")
<param name=TextColR value="200">         ; Txtscroll color (red component)
<param name=TextColG value="255">         ; Txtscroll color (green component)
<param name=TextColB value="190">         ; Txtscroll color (blue component)
<param name=TextSColR value="20">         ; Txtscroll shadow col. (red c.)
<param name=TextSColG value="20">         ; Txtscroll shadow col. (green c.)
<param name=TextSColB value="50">         ; Txtscroll shadow col. (blue c.)
<param name=TextJumpAmp value="0">        ; Txtscroll jump aplitude
<param name=TextJumpSpd value="0">        ; Txtscroll jump speed
<param name=TextSineAmp value="0">        ; Txtscroll sineshape amplitude        
<param name=TextSineSpd value="0">        ; Txtscroll sineshape movement
<param name=TextSineAngle value="0">      ; Txtscroll sineangle / pixel
<param name=memdelay value="1000">        ; Memory deallocation delay
<param name=priority value="3">           ; Task priority (1..10)
<param name=MinSYNC value="10">           ; Min. milliseconds/frame for sync
Sorry, your browser doesn't suppor Java.  ; Message for no java browsers.
</applet>                                 ; End of applet tag


NOTE: Don't place "; comments" on final HTML!!!

Copy and paste in your html document this cleared and correct tag:


<applet code=AnFract.class width=200 height=200>
<param name=credits value="Applet by Fabio Ciucci (www.anfiteatro.it/java.html)">
<param name=regcode value="NO">
<param name=reglink value="NO">
<param name=regnewframe value="YES">
<param name=regframename value="_blank">
<param name=statusmsg value="IFS fractals applet">
<param name=dimensions value="8">
<param name=branches value="2">
<param name=morph_speed value="3">
<param name=rot_speed value="5">
<param name=rot_speed2 value="-5">
<param name=decline value="0.75">
<param name=length value="26">
<param name=pensize value="1">
<param name=progress value="YES">
<param name=progrinverse value="NO">
<param name=progrstep value="2">
<param name=iterskip value="YES">
<param name=backimage value="NO">
<param name=backR value="0">
<param name=backG value="0">
<param name=backB value="0">
<param name=ifsR1 value="255">
<param name=ifsG1 value="255">
<param name=ifsB1 value="180">
<param name=ifsR2 value="10">
<param name=ifsG2 value="50">
<param name=ifsB2 value="255">
<param name=overtext value="YES">
<param name=textscroll value="NO">
<param name=textoffset value="120">
<param name=textspeed value="4">
<param name=textfont value="Arial">
<param name=textbold value="NO">
<param name=textsize value="24">
<param name=textshadow value="NO">
<param name=TextColR value="250">
<param name=TextColG value="230">
<param name=TextColB value="120">
<param name=TextSColR value="20">
<param name=TextSColG value="20">
<param name=TextSColB value="50">
<param name=TextJumpAmp value="0">
<param name=TextJumpSpd value="0">
<param name=TextSineAmp value="0">
<param name=TextSineSpd value="0">
<param name=TextSineAngle value="3">
<param name=memdelay value="1000">
<param name=priority value="3">
<param name=MinSYNC value="10">
Sorry, your browser doesn't suppor Java.
</applet>



                             ---------


Here are detailed instructions about how to change parameters:

The credits parameter can't be changed otherwise the applet will not work.

To activate the reg parameters read the shareware registration notes.
In the "regcode" parameter you have to place the registration code you
purchase from the author. If it is correct and the applet is run from the
registered domain name, you can use "reglink" parameter, where you can specify
an URL where bring user when the applet is clicked.
If you set to "YES" regnewframe, you can specify a frame where load the
reglink:

"_blank"  : To load the link in a new blank unnamed browser window.
"_self"   : To load the link into the same window the applet occupies.
"_parent" : To load the link into the immediate FRAMESET parent.
"_top"    : To load the link into the top body of the window.

Otherwise the frame name, for example "myframe1".

The size of the applet is determined by width and height tags.

Changing the width, and height of the applet will make the visible area of
the fractal larger. The fractal is always automatically placed in the middle
of the applet's visible area.

The "dimensions" param controls how many iterations are performed to generate
the fractal.

The "branches" param controls how many 'branches' are made from the starting
point. It is multiplied by 2 for each iteration.

NOTE: The formula used to calc the fractal tree is based around the
concept of: 2^dimensions * 2 * branches.
So, think about that when you specify the number of dimensions and branches
that too complex fractals takes up alot of memory and a lot of the
computers speed.
Have about 8 dimensions (iterations) and about 1-5 branches for the best
and fastest results.

The "morph_speed" param controls the speed the applet tree morphs through
different shapes

The "rot_speed" param controls the speed of the rotation within each branch
of the fractal tree.

The "rot_speed2" param controls the speed of the rotation within the whole
fractal tree.

The "length" param control the length of the starting line of the fractal.

The "decline" param controls the decline of the length of lines drawn for
each iteration. This could be an increase too, if you make the value more
than 1. For example 0.75 gives a 25% decrease of the length for each
iteration. 1.25 gives a 25% increase of the length for each iteration.

You can choose the pen size with "pensize" parameter, from a size of thru 3.

Otherwise, set the "progress" parameter to "YES" to enable the progressive
pen size increasing, controlled with the "progrstep" parameter.

Optionally you can invert the progression setting "progrinverse" parameter
to "YES".

To increase speed and have a different effect, set the "iterskip" parameter
to "YES".

You can change the colours for best results over your web page, the RGB
values are same as HTML tags, but in decimal values.

Use backR,backG,backB to change background color.

If you want to display an image in the background, place it's name in the
place of "NO" at backimage parameter (for example "back.jpg").
The only requirement is that the background image must be same size as the
applet to completely cover it.

About fractal color, you can choose the first and last color of a gradient
that will be spread over all the fractals: ifsR1,ifsG1,ifsB1 for first
color, ifsR2,ifsG2,ifsB2 for last color of gradient.
Examples: to make ALL the fractals white, place 255 as value for all the
ifsR1,ifsG1,ifsB1 and ifsR2,ifsG2,ifsB2.
To make fractals coloured from black to white (all the intermediate grays),
place a value of 255 for ifsR1,ifsG1,ifsB1 and a value of 0 for second
color: ifsR2,ifsG2,ifsB2.
Offcourse you can make rainbows (from red to blue, etc.).

Finally, "overtext" determine if fractals can overwrite scrolltext.

                             ---------


Optional Scrolltext parameters:


You can optionally activate a scrolltext that will scroll over the applet.
If you don't need the scrolltext, deactivate it placing "NO" at the
"textscroll" parameter.
Otherwise you must supply the name of an ASCII text file, where you must
write the text that you want to be scrolled.
Is supported one only line of text, that can be long as you want.
Remember to upload the text file too, if you activate the scrolltext!

If activated, here are the parameters:

With "textoffset" you choose the Y offset from the top: placing it to 0 the
scroll will be placed on the top, for example, and placing a value near the
height of the applet it will scroll at the bottom.

With "textspeed" parameter you decide the scrolling speed.

With "textfont" you choose the font of text. Don't choose a strange or not
standard font, not present in all systems.
The most common fonts are "Arial", "TimesRoman" and "Courier".
If the required font is not present, the most "near" will be used.

Setting "textbold" to "YES" you will enlarge a bit the font, otherwise set
it to "NO" for normal contours.

With "textsize" you can change the size of text font.
The most common sizes are: 8,9,10,11,12,14,16,18,20,22,24,26,28,36,48,72.
Intermediate values will be scaled to nearest available size.

Setting "textshadow" to "YES", a shadow will be added to textscroll.
Otherwise, setting it to "NO", any shadow will be "projected".

You can choose the color of text with:

TextColR = Red component of color (0-255)
TextColG = Green component of color (0-255)
TextColB = Blue component of color (0-255)

For example, 0,0,0 is black, 255,255,255 is white, 255,0,0 is red,
255,255,0 is yellow, 128,128,128 is grey.
You can compose any color you want, do it trying manually or use any paint
program's color selector to find Red Green Blue components of your desired
colors.

With TextSColR,TextSColG,TextSColB you can select the color for text shadow.

If you like, you can activate the text jumping function.
If "TextJumpAmp" is set to "0", any jumping will be shown.
But increasing the value will result in text jumping: more aplitute, more
high jumps.

With "TextJumpSpd" parameter you can select the jumping speed.

If you like, you can also activate the sine scroll function.
If "TextSineAmp" is set to 0, no sine distortion will be generated.
But increasing the value will result in the that the text is waving. The
higher amplitude, the more waving.

With the "TextSineSpd" parameter you can select the speed of the wave.

With the "TextSineAngle" parameter you control how many degrees in a sinewave
shape the text will be deformed for each pixel. A higher value gives more
distortion.


                             ---------


Compatibility parameters:


The "memdelay" parameter is useful only to run the applets without problems
on some bugged versions of Netscape 3, that don't deallocate correctly
the memory allocated, resulting in filling all the memory after a minute
the applet is running. This can cause also a system crash in some cases.
Last versions of browsers have fixed this problem, but if you want to run
the applets on old bugged browsers too, set "memdelay" to low values, like
"10" or "16", for example.
But this will slow down a lot the applet speed, so you have to choose
between speed (memdelay set to 1000 or higher) or slow compatibility with
old browsers (memdelay set to 20 or lower).

The "priority" parameter is useful mainly when you are running more than
one applet in same page, and one slows down or hangs.
If this applet run too slow or hangs because other one steal all the CPU
power, try increasing the priority.
Otherwise, if this applet runs well and others slows down, decrease the
priority. Consider the min priority is 1, normal priority is 5, and the
max priority is 10. Usually a priority of 3 is ok for single applets.

The "MinSYNC" parameter must be set to a value between 8 and 16 to slow
down animation in the case it runs too faster on faster computers or because
the applet size is very small. The optimal value seems to be 10, but you can
disable this feature placing a value of 0 if you see flickerings or excessive
slow down.
If the applets steal 100% of CPU power or slows down the browser and Operating
System, try increasing MinSYNC until all runs ok.
Usually values between 40 and 400 fixes all problems, even if applet slows
down for compatibility.


                             ---------


Copyright and distribution notices


Fabio Ciucci is the author and owner of this applet.
You can use freely this applet to enhance your web pages. But since I am
the author of the applet, I placed a secret linkware window that will appear
if the applet is clicked with mouse, only when the applet is online on a site:
it is external to the web browser, so it will not hit the design of your
beautyful html page.
This small window will simply show my name and ask for a link to my java
applets page.. the user can connect to it or cancel, or hide the window and
connect after visiting all your pages.
I hope this credit part is not a problem for you...
In any case, if link is accepted a new browser window will appear and your
page will remain on the original window, so you will not lost the visitor.
Consider you will use an effect programmed by me, without pay, for FREE!

NOTE: You can include the applets archive on CD-ROMS or shareware collections
and shareware sites without ask me, but only if you leave the archive(s)
unchanged.

                             ---------



Fabio Ciucci

fabioc@anfiteatro.it

http://www.anfiteatro.it/java.html


