Fractal tree: Difference between revisions

Content deleted Content added
Chkas (talk | contribs)
Thundergnat (talk | contribs)
m syntax highlighting fixup automation
Line 14:
{{trans|Nim}}
 
<langsyntaxhighlight lang="11l">-V
Width = 1000
Height = 1000
Line 37:
’)
drawTree(outsvg, 0.5 * Width, Height, TrunkLength, StartingAngle)
outsvg.write("</svg>\n")</langsyntaxhighlight>
 
=={{header|Action!}}==
Action! language does not support recursion. Therefore an iterative approach with a stack has been proposed.
<langsyntaxhighlight Actionlang="action!">DEFINE MAXSIZE="12"
 
INT ARRAY SinTab=[
Line 147:
DO UNTIL CH#$FF OD
CH=$FF
RETURN</langsyntaxhighlight>
{{out}}
[https://gitlab.com/amarok8bit/action-rosetta-code/-/raw/master/images/Fractal_tree.png Screenshot from Atari 8-bit computer]
Line 153:
=={{header|Ada}}==
{{libheader|SDLAda}}
<langsyntaxhighlight Adalang="ada">with Ada.Numerics.Elementary_Functions;
 
with SDL.Video.Windows.Makers;
Line 233:
Window.Finalize;
SDL.Finalise;
end Fractal_Tree;</langsyntaxhighlight>
 
=={{header|Arturo}}==
 
<langsyntaxhighlight lang="rebol">width: 1000
height: 1000
 
Line 269:
'svg ++ "</svg>"
 
write "fractal.svg" svg</langsyntaxhighlight>
 
{{out}}
Line 278:
[http://i.imgur.com/H7iJOde.png Image] - Link, since uploads seem to be disabled currently.
{{libheader|GDIP}}
<langsyntaxhighlight AutoHotkeylang="autohotkey">#SingleInstance, Force
#NoEnv
SetBatchLines, -1
Line 343:
Exit:
Gdip_Shutdown(pToken)
ExitApp</langsyntaxhighlight>
 
=={{header|BASIC}}==
Line 349:
==={{header|BASIC256}}===
[[File:Fractal tree BASIC-256.png|thumb|right|Asymmetric fractal tree image created by the BASIC-256 script]]
<langsyntaxhighlight lang="basic256">graphsize 300,300
 
level = 12 : len =63 # initial values
Line 393:
line x,y,xn,yn
x = xn : y = yn
return</langsyntaxhighlight>
 
==={{header|Run BASIC}}===
<langsyntaxhighlight Runlang="run BASICbasic"> 'Fractal Tree - for Run Basic - 29 Apr 2018
'from BASIC256 - http://rosettacode.org/wiki/Fractal_tree#BASIC256
'copy this text and go to http://www.runbasic.com
Line 455:
return
'end of code
End</langsyntaxhighlight>
 
==={{header|BBC BASIC}}===
Line 468:
 
{{works with|BBC BASIC for Windows}}
<langsyntaxhighlight lang="bbcbasic">
Spread = 25
Scale = 0.76
Line 474:
SizeY% = 300
Depth% = 10
</langsyntaxhighlight><syntaxhighlight lang ="bbcbasic">
VDU 23,22,SizeX%;SizeY%;8,16,16,128
Line 490:
PROCbranch(x2, y2, size * Scale, angle + Spread, depth% - 1)
ENDIF
ENDPROC</langsyntaxhighlight>
 
==={{header|IS-BASIC}}===
<langsyntaxhighlight ISlang="is-BASICbasic">100 PROGRAM "Tree.bas"
110 OPTION ANGLE DEGREES
120 GRAPHICS HIRES 2
Line 506:
210 CALL TREE(N*.75)
220 PLOT RIGHT 25,BACK N,
230 END DEF</langsyntaxhighlight>
 
=={{header|C}}==
Line 512:
 
{{libheader|SGE}} or {{libheader|cairo}}
<langsyntaxhighlight lang="c">#include <SDL/SDL.h>
#ifdef WITH_CAIRO
#include <cairo.h>
Line 612:
SDL_Quit();
return 0;
}</langsyntaxhighlight>
 
=={{header|C++}}==
[[File:fracTree_cpp.png|320px]]
<langsyntaxhighlight lang="cpp">
#include <windows.h>
#include <string>
Line 808:
}
//--------------------------------------------------------------------------------------------------
</syntaxhighlight>
</lang>
 
=={{header|Ceylon}}==
Line 814:
{{libheader|Swing}} {{libheader|AWT}}
Be sure to import java.desktop and ceylon.numeric in your module.ceylon file.
<langsyntaxhighlight lang="ceylon">import javax.swing {
 
JFrame { exitOnClose }
Line 858:
fractalTree.visible = true;
}</langsyntaxhighlight>
 
=={{header|Clojure}}==
{{trans|Java}}
{{libheader|Swing}} {{libheader|AWT}}
<langsyntaxhighlight Clojurelang="clojure">(import '[java.awt Color Graphics]
'javax.swing.JFrame)
 
Line 888:
(.show)))
 
(fractal-tree 9)</langsyntaxhighlight>
 
=={{header|Common Lisp}}==
{{libheader|lispbuilder-sdl}}
{{trans|Clojure}}
<langsyntaxhighlight lang="lisp">;; (require :lispbuilder-sdl)
 
(defun deg-to-radian (deg)
Line 930:
(fractal-tree 9)
</syntaxhighlight>
</lang>
 
=={{header|D}}==
===SVG Version===
{{trans|Raku}}
<langsyntaxhighlight lang="d">import std.stdio, std.math;
 
enum width = 1000, height = 1000; // Image dimension.
Line 957:
tree(width / 2.0, height, length, 3 * PI / 2);
"</svg>".writeln;
}</langsyntaxhighlight>
 
===Turtle Version===
This uses the turtle module from the Dragon Curve task, and the module from the Grayscale Image task.
{{trans|Logo}}
<langsyntaxhighlight lang="d">import grayscale_image, turtle;
 
void tree(Color)(Image!Color img, ref Turtle t, in uint depth,
Line 981:
img.tree(t, 10, 80, 0.7, 30);
img.savePGM("fractal_tree.pgm");
}</langsyntaxhighlight>
 
===Alternative version===
{{trans|Java}}
Using DFL.
<langsyntaxhighlight lang="d">import dfl.all;
import std.math;
 
Line 1,028:
}
return result;
}</langsyntaxhighlight>
 
=={{header|EasyLang}}==
Line 1,034:
[https://easylang.online/apps/fractal-tree.html Run it]
 
<syntaxhighlight lang="text">func tree x y deg n . .
if n > 0
linewidth n * 0.4
Line 1,050:
call tree 50 90 -90 10
timer 1
.</langsyntaxhighlight>
 
=={{header|F_Sharp|F#}}==
{{trans|Raku}}
<langsyntaxhighlight lang="fsharp">let (cos, sin, pi) = System.Math.Cos, System.Math.Sin, System.Math.PI
 
let (width, height) = 1000., 1000. // image dimension
Line 1,074:
xmlns='http://www.w3.org/2000/svg'>"
tree (width/2.) height length (3.*pi/2.)
printfn "</svg>"</langsyntaxhighlight>
 
=={{header|Fantom}}==
<langsyntaxhighlight lang="fantom">
using fwt
using gfx
Line 1,113:
}
}
</syntaxhighlight>
</lang>
 
=={{header|FreeBASIC}}==
{{trans|BBC BASIC}}
<langsyntaxhighlight lang="freebasic">' version 17-03-2017
' compile with: fbc -s gui
 
Line 1,156:
windowtitle ("Fractal Tree, hit any key to end program")
Sleep
End</langsyntaxhighlight>
 
=={{header|Frege}}==
Line 1,162:
{{Works with|Frege|3.23.888-g4e22ab6}}
 
<langsyntaxhighlight lang="frege">module FractalTree where
 
import Java.IO
Line 1,240:
drawTree g t 16
f <- File.new "FractalTreeFrege.png"
void $ ImageIO.write buffy "png" f</langsyntaxhighlight>
 
Output is [http://funwithsoftware.org/images/2016-FractalTreeFrege.png here] due to [[User talk:Short Circuit#Is file uploading blocked forever?|Is file uploading blocked forever?]]
 
=={{header|Frink}}==
<syntaxhighlight lang="frink">
<lang Frink>
// Draw Fractal Tree in Frink
 
Line 1,273:
// Show the final tree
g.show[]
</syntaxhighlight>
</lang>
 
=={{header|Go}}==
[[file:GoFtree.png|right|thumb|png converted from output ppm]]
<langsyntaxhighlight lang="go">package main
 
// Files required to build supporting package raster are found in:
Line 1,313:
ftree(g, x2, y2, distance*frac, direction+angle, depth-1)
}
}</langsyntaxhighlight>
 
=={{header|Haskell}}==
An elegant yet universal monoidal solution.
{{libheader|Gloss}}
<langsyntaxhighlight lang="haskell">import Graphics.Gloss
 
type Model = [Picture -> Picture]
Line 1,329:
, Translate 0 100 . Scale 0.5 0.5 . Rotate (-30) ]
 
main = animate (InWindow "Tree" (800, 800) (0, 0)) white $ tree1 . (* 60)</langsyntaxhighlight>
 
The solution gives rise to a variety of fractal geometric structures. Each one can be used by substituting <code>tree1</code> in the <code>main</code> function by the desired one.
<langsyntaxhighlight lang="haskell">--animated tree
tree2 t = fractal 8 branches $ Line [(0,0),(0,100)]
where branches = [ Translate 0 100 . Scale 0.75 0.75 . Rotate t
Line 1,355:
pentagon = Line [ (sin a, cos a) | a <- [0,2*pi/5..2*pi] ]
x = 2*cos(pi/5)
s = 1/(1+x)</langsyntaxhighlight>
 
'''Alternative solution'''
Line 1,363:
{{libheader|HGL}}
 
<langsyntaxhighlight lang="haskell">import Graphics.HGL.Window
import Graphics.HGL.Run
import Control.Arrow
Line 1,393:
(\w -> setGraphic w (overGraphics ( map polyline $ pts (n-1))) >> getKey w)
 
main = fractalTree 10</langsyntaxhighlight>
 
=={{header|Icon}} and {{header|Unicon}}==
<langsyntaxhighlight Iconlang="icon">procedure main()
WOpen("size=800,600", "bg=black", "fg=white") | stop("*** cannot open window")
drawtree(400,500,-90,9)
Line 1,413:
}
return
end</langsyntaxhighlight>
 
{{libheader|Icon Programming Library}}
Line 1,422:
=={{header|J}}==
 
<langsyntaxhighlight lang="j">require'gl2'
coinsert'jgl2'
Line 1,446:
}}
 
gllines <.(10 + ,/"2 P-"1<./,/P)</langsyntaxhighlight>
 
See the [[Talk:Fractal tree#J Explanation|talk page]] for some implementation notes.
Line 1,452:
=={{header|Java}}==
{{libheader|Swing}} {{libheader|AWT}}
<langsyntaxhighlight lang="java">import java.awt.Color;
import java.awt.Graphics;
import javax.swing.JFrame;
Line 1,483:
new FractalTree().setVisible(true);
}
}</langsyntaxhighlight>
 
=={{header|JavaScript}}==
Implementation using HTML5 canvas element to draw tree structure.
<langsyntaxhighlight JavaScriptlang="javascript"><html>
<body>
<canvas id="canvas" width="600" height="500"></canvas>
Line 1,523:
 
</body>
</html></langsyntaxhighlight>
 
=={{header|jq}}==
The following generates SVG, which can be viewed by following the link below.
<langsyntaxhighlight lang="jq"># width and height define the outer dimensions;
# len defines the trunk size;
# scale defines the branch length relative to the trunk;
Line 1,564:
;
 
main(1000; 1000; 400; 6/10)</langsyntaxhighlight>
{{out}}
$ jq -r -n -r -f Fractal_tree_svg.jq > Fractal_tree.svg
Line 1,572:
=={{header|Julia}}==
{{trans|F#}}
<langsyntaxhighlight lang="julia">
const width = height = 1000.0
const trunklength = 400.0
Line 1,600:
 
write(outsvg, "</svg>\n") # view file tree.svg in browser
</syntaxhighlight>
</lang>
 
=={{header|Kotlin}}==
{{trans|Java}}
<langsyntaxhighlight lang="scala">// version 1.1.2
 
import java.awt.Color
Line 1,635:
fun main(args: Array<String>) {
FractalTree().isVisible = true
}</langsyntaxhighlight>
 
=={{header|Lambdatalk}}==
<syntaxhighlight lang="lisp">
<lang Lisp>
1) defining the function tree:
 
Line 1,687:
 
The complete ouput can be seen displayed in http://lambdaway.free.fr/lambdawalks/?view=fractal_tree
</syntaxhighlight>
</lang>
 
=={{header|Liberty BASIC}}==
LB includes Logo-type turtle commands, so can be drawn that way as well as that shown here.
<syntaxhighlight lang="lb">
<lang lb>
NoMainWin
sw = 640 : sh = 480
Line 1,728:
End If
End Sub
</syntaxhighlight>
</lang>
 
=={{header|Lingo}}==
<langsyntaxhighlight lang="lingo">----------------------------------------
-- Creates an image of a fractal tree
-- @param {integer} width
Line 1,757:
_drawTree(img, x2, y2, angle+spreadAngle, depth-1, size*ScaleFactor, spreadAngle, scaleFactor)
end if
end</langsyntaxhighlight>
Usage:
<langsyntaxhighlight lang="lingo">fractalDepth = 10
initSize = 7.0
spreadAngle = 35*PI/180
scaleFactor = 0.95
img = fractalTree(480, 380, fractalDepth, initSize, spreadAngle, scaleFactor)</langsyntaxhighlight>
 
=={{header|Logo}}==
<langsyntaxhighlight lang="logo">to tree :depth :length :scale :angle
if :depth=0 [stop]
setpensize round :depth/2
Line 1,779:
 
clearscreen
tree 10 80 0.7 30</langsyntaxhighlight>
 
=={{header|Lua}}==
===Bitmap===
Needs L&Ouml;VE 2D Engine
<langsyntaxhighlight lang="lua">
g, angle = love.graphics, 26 * math.pi / 180
wid, hei = g.getWidth(), g.getHeight()
Line 1,822:
g.draw( canvas )
end
</syntaxhighlight>
</lang>
 
===ASCII===
Using the Bitmap class and text renderer from [[Bitmap/Bresenham%27s_line_algorithm#Lua|here]], then extending...
<langsyntaxhighlight lang="lua">function Bitmap:tree(x, y, angle, depth, forkfn, lengfn)
if depth <= 0 then return end
local fork, leng = forkfn(), lengfn()
Line 1,840:
bitmap:tree(192, 120, math.pi/2, 8, function() return 0.6 end, function() return 2.5 end)
bitmap:tree(320, 120, math.pi/2, 8, function() return 0.2+math.random()*0.3 end, function() return 2.0+math.random()*2.0 end)
bitmap:render({[0x000000]='.', [0xFFFFFFFF]='█'})</langsyntaxhighlight>
{{out}}
Shown at 25% scale:
Line 1,973:
 
=={{header|Mathematica}} / {{header|Wolfram Language}}==
<langsyntaxhighlight Mathematicalang="mathematica">fractalTree[
pt : {_, _}, \[Theta]orient_: \[Pi]/2, \[Theta]sep_: \[Pi]/9,
depth_Integer: 9] := Module[{pt2},
Line 1,990:
]
Graphics[fractalTree[{0, 0}, \[Pi]/2, \[Pi]/9]]
</syntaxhighlight>
</lang>
[[File:MathFractalTree.png]]
 
Line 1,997:
{{libheader|Swing}}
{{libheader|AWT}}
<langsyntaxhighlight NetRexxlang="netrexx">/* NetRexx */
options replace format comments java crossref symbols binary
 
Line 2,034:
RFractalTree().setVisible(isTrue)
return
</syntaxhighlight>
</lang>
=={{header|Nim}}==
{{trans|Julia}}
<syntaxhighlight lang="nim">
<lang Nim>
import math
import strformat
Line 2,069:
outsvg.write("</svg>\n") # View file tree.svg in browser.
 
</syntaxhighlight>
</lang>
 
=={{header|OCaml}}==
{{libheader|ocaml-cairo}}
 
<langsyntaxhighlight lang="ocaml">#directory "+cairo"
#load "bigarray.cma"
#load "cairo.cma"
Line 2,150:
 
Cairo_png.surface_write_to_file surf img_name
(*Cairo_png.surface_write_to_channel surf stdout*)</langsyntaxhighlight>
 
=={{header|PARI/GP}}==
Line 2,164:
{{Works with|PARI/GP|2.7.4 and above}}
 
<langsyntaxhighlight lang="parigp">
\\ Fractal tree (w/recursion)
\\ 4/10/16 aev
Line 2,198:
FractalTree(15,1500); \\FracTree3.png
}
</langsyntaxhighlight>
 
{{Output}}
Line 2,216:
=={{header|Perl}}==
using the [http://search.cpan.org/~lds/GD-2.45/GD/Simple.pm GD::Simple] module.
<langsyntaxhighlight lang="perl">use GD::Simple;
 
my ($width, $height) = (1000,1000); # image dimension
Line 2,245:
tree($x, $y, $len*$scale, $angle+35);
tree($x, $y, $len*$scale, $angle-35);
}</langsyntaxhighlight>
 
=={{header|Phix}}==
Line 2,252:
{{libheader|Phix/online}}
You can run this online [http://phix.x10.mx/p2js/fractaltree.htm here].
<!--<langsyntaxhighlight Phixlang="phix">(phixonline)-->
<span style="color: #000080;font-style:italic;">--
-- demo\rosetta\FractalTree.exw
Line 2,310:
<span style="color: #000000;">main</span><span style="color: #0000FF;">()</span>
<!--</langsyntaxhighlight>-->
 
=={{header|PHP}}==
Image is created with GD module. Code adapted from the JavaScript version.
<langsyntaxhighlight lang="php">
<?php
header("Content-type: image/png");
Line 2,345:
imagedestroy($img);
?>
</syntaxhighlight>
</lang>
 
=={{header|PicoLisp}}==
This uses the 'brez' line drawing function from
[[Bitmap/Bresenham's line algorithm#PicoLisp]].
<langsyntaxhighlight PicoLisplang="picolisp">(load "@lib/math.l")
 
(de fractalTree (Img X Y A D)
Line 2,364:
(prinl "P1")
(prinl 400 " " 300)
(mapc prinl Img) ) )</langsyntaxhighlight>
 
=={{header|Plain English}}==
<langsyntaxhighlight lang="plainenglish">To run:
Start up.
Clear the screen to the lightest blue color.
Line 2,385:
Turn left 1/16 of the way. Draw another tree given the size times 2/3. Turn right 1/16 of the way.
Turn right 1/16 of the way. Draw a third tree given the size times 2/3. Turn left 1/16 of the way.
Go back to where we were.</langsyntaxhighlight>
{{out}}
[https://commons.wikimedia.org/wiki/File:Fractal-tree.png]
 
=={{header|PostScript}}==
<langsyntaxhighlight lang="postscript">%!PS
%%BoundingBox: 0 0 300 300
%%EndComments
Line 2,435:
%
showpage origstate restore
%%EOF</langsyntaxhighlight>
 
Shorter version:<langsyntaxhighlight lang="postscript">%!PS-Adobe-3.0
%%BoundingBox: 0 0 300 300
/!0 { dup 1 sub dup 0 gt } def
Line 2,449:
 
/d 10 def 5 setlinewidth 1 setlinecap 170 20 translate d tree pop
%%EOF</langsyntaxhighlight>
 
=={{header|POV-Ray}}==
<langsyntaxhighlight lang="povray">#include "colors.inc"
#include "transforms.inc"
 
Line 2,494:
union {
FractalTree(<-2,0,0>, <1,0,0>, 1, Spread_Ang, Branches)
}</langsyntaxhighlight>
 
=={{header|Prolog}}==
SWI-Prolog has a graphic interface : XPCE.
<langsyntaxhighlight Prologlang="prolog">fractal :-
new(D, window('Fractal')),
send(D, size, size(800, 600)),
Line 2,518:
drawTree(D, X2, Y2, A2, De).
 
</syntaxhighlight>
</lang>
 
=={{header|PureBasic}}==
<langsyntaxhighlight PureBasiclang="purebasic">#Spread_Ang = 35
#Scaling_Factor = 0.75
#Deg_to_Rad = #PI / 180
Line 2,551:
EndIf
 
Repeat: Until WaitWindowEvent(10) = #PB_Event_CloseWindow</langsyntaxhighlight>
[[Image:PB_FractalTree.png]]
 
Line 2,557:
 
==== Using rotation ====
<langsyntaxhighlight lang="java">void setup() {
size(600, 600);
background(0);
Line 2,577:
popMatrix();
}
}</langsyntaxhighlight>
 
==== Calculating coordinates ====
Line 2,583:
{{trans|Python}}
 
<langsyntaxhighlight lang="java">void setup() {
size(600, 600);
background(0);
Line 2,600:
drawTree(x2, y2, angle + forkAngle, depth - 1);
}
}</langsyntaxhighlight>
 
==={{header|Processing Python mode}}===
Line 2,608:
{{trans|Processing}}
 
<langsyntaxhighlight lang="python">def setup():
size(600, 600)
background(0)
Line 2,625:
rotate(2 * -fork_ang)
drawTree(0, 0, depth - 1)
popMatrix()</langsyntaxhighlight>
 
==== Calculating coordinates ====
Line 2,631:
{{trans|Python}}
 
<langsyntaxhighlight lang="python">def setup():
size(600, 600)
background(0)
Line 2,645:
line(x1, y1, x2, y2)
drawTree(x2, y2, angle - fork_angle, depth - 1)
drawTree(x2, y2, angle + fork_angle, depth - 1)</langsyntaxhighlight>
 
=={{header|Python}}==
[[File:fractal-tree-python.png|right|thumb]]
{{libheader|pygame}}
<langsyntaxhighlight lang="python">import pygame, math
 
pygame.init()
Line 2,674:
pygame.display.flip()
while True:
input(pygame.event.wait())</langsyntaxhighlight>
=={{header|QB64}}==
<langsyntaxhighlight lang="qb64">_Title "Fractal Tree"
Const sw% = 640
Const sh% = 480
Line 2,700:
Call tree(newX, newY, initAngle + theta, theta, iL, iD)
End If
End Sub</langsyntaxhighlight>
 
=={{header|Quackery}}==
<langsyntaxhighlight Quackerylang="quackery">[ $ "turtleduck.qky" loadfile ] now!
 
[ [ 1 1
Line 2,727:
-1 4 turn
-450 1 fly
500 1 tree</langsyntaxhighlight>
 
{{output}}
Line 2,739:
[[File:FRTR12.png|200px|right|thumb|Output FRTR12.png]]
[[File:FRTR15.png|200px|right|thumb|Output FRTR15.png]]
<syntaxhighlight lang="r">
<lang r>
## Recursive FT plotting
plotftree <- function(x, y, a, d, c) {
Line 2,774:
pFractalTree(12,0.6,210);
pFractalTree(15,0.35,600);
</syntaxhighlight>
</lang>
{{Output}}
<pre>
Line 2,793:
=={{header|Racket}}==
[[File:tree-racket.png|right|thumb]]
<langsyntaxhighlight lang="racket">
#lang racket
(require graphics/turtles)
Line 2,809:
(tree 35)
(save-turtle-bitmap "tree.png" 'png)
</syntaxhighlight>
</lang>
 
=={{header|Raku}}==
(formerly Perl 6)
Image is created in [[wp:SVG|SVG]] format.
<syntaxhighlight lang="raku" perl6line>my ($width, $height) = (1000,1000); # image dimension
my $scale = 6/10; # branch scale relative to trunk
my $length = 400; # trunk size
Line 2,835:
tree($x2, $y2, $length*$scale, $angle + pi/5);
tree($x2, $y2, $length*$scale, $angle - pi/5);
}</langsyntaxhighlight>
 
=={{header|Red}}==
<langsyntaxhighlight Redlang="red">Red [Needs: 'View]
 
color: brown
Line 2,868:
]
ends: newends
]</langsyntaxhighlight>
{{out}}
[https://raw.githubusercontent.com/Palaing/redlib/master/games/images/fractaltree.png fractal tree image]
 
=={{header|Ring}}==
<langsyntaxhighlight lang="ring">
load "guilib.ring"
 
Line 2,924:
tree(self, x2, y2, size * scale, angle - spread, depth - 1)
tree(self, x2, y2, size * scale, angle + spread, depth - 1) ok}
</syntaxhighlight>
</lang>
Output:
 
Line 2,931:
=={{header|Ruby}}==
{{libheader|Shoes}}
<langsyntaxhighlight Rubylang="ruby">Shoes.app(:title => "Fractal Tree", :width => 600, :height => 600) do
background "#fff"
stroke "#000"
Line 2,949:
drawTree(300,550,-90,9)
end</langsyntaxhighlight>
 
=={{header|Rust}}==
{{libheader|Piston}}
<langsyntaxhighlight Rustlang="rust">//Cargo deps :
// piston = "0.35.0"
// piston2d-graphics = "0.23.0"
Line 3,010:
}
}
</syntaxhighlight>
</lang>
 
=={{header|Scala}}==
Adapted from the Java version. Screenshot below.
<langsyntaxhighlight lang="scala">import swing._
import java.awt.{RenderingHints, BasicStroke, Color}
 
Line 3,044:
}
}
}</langsyntaxhighlight>
[[File:scalaTree.png]]
 
Line 3,051:
The tree is created as a list of line segments, which can then be drawn on a required device. For this program, the tree is output to an eps file.
 
<langsyntaxhighlight lang="scheme">
(import (scheme base)
(scheme file)
Line 3,103:
 
(output-tree-as-eps "fractal.eps" (create-tree 400 200 90 9))
</syntaxhighlight>
</lang>
 
=={{header|Scilab}}==
Line 3,110:
This script uses complex numbers to represent (x,y) coordinates: real part as x position, and imaginary part as y position. The tree is generated using an L-system approach, and the lines are then drawn by interpreting the resulting sentence. The output is plotted onto graphic window.
 
<syntaxhighlight lang="text">trunk = 1; //trunk length
ratio = 0.8; //size ratio between two consecutive branches
depth = 9; //final number of branch levels
Line 3,189:
plot2d(real(tree),imag(tree),14);
set(gca(),'isoview','on');
set(gca(),'axes_visible',['off','off','off']);</langsyntaxhighlight>
 
===Recursive approach===
{{trans|PHP}}
<syntaxhighlight lang="text">width = 512;
height = 512;
img=scf();
Line 3,209:
drawTree(width/2,height,90,10);
set(gca(),'isoview','on');</langsyntaxhighlight>
 
=={{header|Seed7}}==
<langsyntaxhighlight lang="seed7">$ include "seed7_05.s7i";
include "float.s7i";
include "math.s7i";
Line 3,241:
drawTree(300, 470, -90.0, 9);
ignore(getc(KEYBOARD));
end func;</langsyntaxhighlight>
 
Original source: [http://seed7.sourceforge.net/algorith/graphic.htm#fractree]
Line 3,247:
=={{header|Sidef}}==
{{trans|Perl}}
<langsyntaxhighlight lang="ruby">func tree(img, x, y, scale=6/10, len=400, angle=270) {
 
len < 1 && return()
Line 3,269:
tree(img, width/2, height)
 
File('tree.png').write(img.png, :raw)</langsyntaxhighlight>
 
=={{header|Smalltalk}}==
Line 3,275:
This example is coded for Squeak Smalltalk.
 
<langsyntaxhighlight lang="smalltalk">
Object subclass: #FractalTree
instanceVariableNames: ''
Line 3,281:
poolDictionaries: ''
category: 'RosettaCode'
</syntaxhighlight>
</lang>
 
Methods for FractalTree class:
 
<langsyntaxhighlight lang="smalltalk">
tree: aPoint length: aLength angle: anAngle
| p a |
Line 3,311:
self tree: 700@700 length: 200 angle: 0.
]
</syntaxhighlight>
</lang>
 
Now open a new Workspace and enter:
 
<langsyntaxhighlight lang="smalltalk">
FractalTree new draw.
</syntaxhighlight>
</lang>
 
=={{header|SVG}}==
Line 3,325:
 
<div style="clear:both;"></div>
<langsyntaxhighlight lang="xml"><?xml version="1.0" standalone="yes"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
Line 3,374:
</g>
</svg></langsyntaxhighlight>
 
=={{header|Swift}}==
[http://i.imgur.com/F8Fyn1i.png Image] - Link, since uploads seem to be disabled currently.
In a playground:
<langsyntaxhighlight lang="swift">extension CGFloat {
func degrees_to_radians() -> CGFloat {
return CGFloat(M_PI) * self / 180.0
Line 3,431:
let tree = Tree(frame: CGRectMake(0, 0, 300, 300))
tree
</syntaxhighlight>
</lang>
 
=={{header|Standard ML}}==
Works with PolyML
<langsyntaxhighlight Standardlang="standard MLml">open XWindows;
open Motif;
 
Line 3,479:
end ;
 
demoWindow ();</langsyntaxhighlight>
 
=={{header|Tcl}}==
{{libheader|Tk}}
<langsyntaxhighlight lang="tcl">package require Tk
 
set SIZE 800
Line 3,514:
pack [canvas .c -width $SIZE -height $SIZE]
draw_tree .c [expr {$SIZE/2}] [expr {$SIZE-10}] 0.0 -1.0 $INITIAL_LENGTH \
[expr {3.1415927 / 8}] $BRANCHES</langsyntaxhighlight>
 
=={{header|TUSCRIPT}}==
Image is created in SVG-format
<langsyntaxhighlight lang="tuscript">
$$ MODE TUSCRIPT
dest="fracaltree.svg"
Line 3,556:
WRITE/NEXT d "</svg>"
ENDACCESS d
</syntaxhighlight>
</lang>
 
=={{header|TypeScript}}==
{{trans|JavaScript}}
<langsyntaxhighlight JavaScriptlang="javascript">// Set up canvas for drawing
var canvas: HTMLCanvasElement = document.createElement('canvas')
canvas.width = 600
Line 3,596:
ctx.stroke()
 
</syntaxhighlight>
</lang>
 
=={{header|Wren}}==
{{trans|Kotlin}}
{{libheader|DOME}}
<langsyntaxhighlight lang="ecmascript">import "graphics" for Canvas, Color
import "dome" for Window
import "math" for Math
Line 3,634:
}
 
var Game = FractalTree.new(800, 600)</langsyntaxhighlight>
 
=={{header|XPL0}}==
[[File:FtreeXPL0.png|200px|thumb|right|Output]]
<langsyntaxhighlight XPL0lang="xpl0">include c:\cxpl\codes;
 
proc DrawBranch(Lev, Dir, Len, X, Y);
Line 3,658:
if ChIn(1) then []; \wait for keystroke
SetVid(3); \restore normal text mode
]</langsyntaxhighlight>
 
=={{header|zkl}}==
Line 3,664:
{{trans|BBC BASIC}}{{trans|XPL0}}
[[File:FractalTree.zkl.jpg|250px|thumb|right]]
<langsyntaxhighlight lang="zkl">fcn fractalTree(){
scale:=0.76;
sizeX:=400; sizeY:=300;
Line 3,681:
branch(sizeX,0,sizeY/2,90.0,10);
bitmap.write(File("foo.ppm","wb"));
}();</langsyntaxhighlight>
The funkyness (pasteArgs) in the recursion (self.fcn) is due to the closure ('wrap): the closed over args are stashed in the arglist, they need to be added to the parameters when recursing.
 
=={{header|ZX Spectrum Basic}}==
{{trans|BASIC256}}
<langsyntaxhighlight lang="zxbasic">10 LET level=12: LET long=45
20 LET x=127: LET y=0
30 LET rotation=PI/2
Line 3,716:
1030 PLOT x,y: DRAW xn-x,y-yn
1040 LET x=xn: LET y=yn
1050 RETURN </langsyntaxhighlight>
 
[[Category:Geometry]]