Jump to content

Sunflower fractal: Difference between revisions

m
syntax highlighting fixup automation
(with credit to homme_chauve_souris. The 2*pi typo is corrected with their solution to use 8*ATN(1))
m (syntax highlighting fixup automation)
Line 9:
{{trans|Perl}}
 
<langsyntaxhighlight lang="11l">-V
phi = (1 + sqrt(5)) / 2
size = 600
Line 23:
r * cos(t) + size / 2, sqrt(i) / 13))
 
print(‘</svg>’)</langsyntaxhighlight>
 
=={{header|Action!}}==
Line 29:
{{libheader|Action! Tool Kit}}
{{libheader|Action! Real Math}}
<langsyntaxhighlight Actionlang="action!">INCLUDE "H6:REALMATH.ACT"
 
INT ARRAY SinTab=[
Line 144:
DO UNTIL CH#$FF OD
CH=$FF
RETURN</langsyntaxhighlight>
{{out}}
[https://gitlab.com/amarok8bit/action-rosetta-code/-/raw/master/images/Sunflower_fractal.png Screenshot from Atari 8-bit computer]
 
=={{header|Applesoft BASIC}}==
<langsyntaxhighlight lang="gwbasic">HGR:A=PEEK(49234):C=(SQR(5)+1)/2:N=900:FORI=0TO1600:R=(I^C)/N:A=8*ATN(1)*C*I:X=R*SIN(A)+139:Y=R*COS(A)+96:F=7-4*((X-INT(X/2)*2)>=.75):X=(X>=0ANDX<280)*X:Y=(Y>=0ANDY<192)*Y:HCOLOR=F*(XANDY):HPLOTX,Y:NEXT</langsyntaxhighlight>
 
=={{header|C}}==
The colouring of the "fractal" is determined with every iteration to ensure that the resulting graphic looks similar to a real Sunflower, thus the parameter ''diskRatio'' determines the radius of the central disk as the maximum radius of the flower is known from the number of iterations. The scaling factor is currently hardcoded but can also be externalized. Requires the [http://www.cs.colorado.edu/~main/bgi/cs1300/ WinBGIm] library.
 
<syntaxhighlight lang="c">
<lang C>
/*Abhishek Ghosh, 14th September 2018*/
 
Line 193:
return 0;
}
</syntaxhighlight>
</lang>
 
=={{header|C++}}==
{{trans|Perl}}
<langsyntaxhighlight lang="cpp">#include <cmath>
#include <fstream>
#include <iostream>
Line 237:
}
return EXIT_SUCCESS;
}</langsyntaxhighlight>
 
{{out}}
Line 243:
 
=={{header|FreeBASIC}}==
<langsyntaxhighlight lang="freebasic">
Const PI As Double = 4 * Atn(1)
Const ancho = 400
Line 269:
Sleep
End
</syntaxhighlight>
</lang>
 
=={{header|Go}}==
Line 276:
<br>
The image produced, when viewed with (for example) EOG, is similar to the Ring entry.
<langsyntaxhighlight lang="go">package main
 
import (
Line 303:
dc.Stroke()
dc.SavePNG("sunflower_fractal.png")
}</langsyntaxhighlight>
 
=={{header|javascript}}==
Line 325:
</html>
</pre>
<langsyntaxhighlight lang="javascript">const SIZE = 400, HS = SIZE >> 1, WAIT = .005, SEEDS = 3000,
TPI = Math.PI * 2, C = (Math.sqrt(10) + 1) / 2;
class Sunflower {
Line 381:
const sunflower = new Sunflower();
sunflower.start();
}</langsyntaxhighlight>
 
=={{header|J}}==
Line 389:
This implementation assumes a recent J implementation (for example, J903):
 
<langsyntaxhighlight Jlang="j">require'format/printf'
 
sunfract=: {{ NB. y: number of "sunflower seeds"
Line 406:
</svg>
}} sprintf (;/<.20+}:>./fract),<C) fwrite y}}
</syntaxhighlight>
</lang>
 
Example use:
 
<syntaxhighlight lang="j">
<lang J>
3000 sunfractsvg '~/sunfract.html'
129147
</syntaxhighlight>
</lang>
 
(The number displayed is the size of the generated file.)
Line 422:
'''Works with gojq, the Go implementation of jq'''
 
<langsyntaxhighlight lang="jq"># SVG headers
def svg(size):
"<svg xmlns='http://www.w3.org/2000/svg' width='\(size)'",
Line 449:
svg(600),
sunflower(600),
end_svg</langsyntaxhighlight>
 
=={{header|Julia}}==
{{trans|R}}
Run from REPL.
<langsyntaxhighlight lang="julia">using Makie
 
function sunflowerplot()
Line 473:
 
sunflowerplot()
</syntaxhighlight>
</lang>
 
=={{header|Liberty BASIC}}==
<syntaxhighlight lang="lb">
<lang lb>
nomainwin
UpperLeftX=1:UpperLeftY=1
Line 506:
close #1
end
</syntaxhighlight>
</lang>
 
=={{header|Mathematica}} / {{header|Wolfram Language}}==
<langsyntaxhighlight Mathematicalang="mathematica">numseeds = 3000;
pts = Table[
i = N[ni];
Line 518:
{ni, numseeds}
];
Graphics[pts]</langsyntaxhighlight>
 
=={{header|Microsoft Small Basic}}==
{{trans|Ring}}
<langsyntaxhighlight lang="smallbasic">' Sunflower fractal - 24/07/2018
GraphicsWindow.Width=410
GraphicsWindow.Height=400
Line 533:
y=r*Math.Cos(angle)+200
GraphicsWindow.DrawEllipse(x, y, i/numberofseeds*10, i/numberofseeds*10)
EndFor </langsyntaxhighlight>
{{out}}
[https://1drv.ms/u/s!AoFH_AlpH9oZgf5kvtRou1Wuc5lSCg Sunflower fractal]
Line 540:
{{trans|Go}}
{{libheader|imageman}}
<langsyntaxhighlight Nimlang="nim">import math
import imageman
 
Line 563:
image.drawCircle(x, y, toInt(8 * fi / Fn), Foreground)
 
image.savePNG("sunflower.png", compression = 9)</langsyntaxhighlight>
 
=={{header|Objeck}}==
{{trans|C}}
<langsyntaxhighlight lang="perl">use Game.SDL2;
use Game.Framework;
 
Line 639:
SCREEN_HEIGHT := 480
}
</syntaxhighlight>
</lang>
 
=={{header|Perl}}==
{{trans|Sidef}}
<langsyntaxhighlight lang="perl">use utf8;
use constant π => 3.14159265;
use constant φ => (1 + sqrt(5)) / 2;
Line 661:
}
 
print "</svg>\n";</langsyntaxhighlight>
See [https://github.com/SqrtNegInf/Rosettacode-Perl5-Smoke/blob/master/ref/sunflower.svg Phi-packing image] (SVG image)
 
Line 668:
{{libheader|Phix/online}}
You can run this online [http://phix.x10.mx/p2js/SunflowerFractal.htm here].
<!--<langsyntaxhighlight Phixlang="phix">(phixonline)-->
<span style="color: #008080;">with</span> <span style="color: #008080;">javascript_semantics</span>
<span style="color: #008080;">constant</span> <span style="color: #000000;">numberofseeds</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">3000</span>
Line 723:
<span style="color: #008080;">end</span> <span style="color: #008080;">procedure</span>
<span style="color: #000000;">main</span><span style="color: #0000FF;">()</span>
<!--</langsyntaxhighlight>-->
 
=={{header|Processing}}==
{{trans|C}}
<langsyntaxhighlight lang="java">
//Abhishek Ghosh, 26th June 2022
 
Line 753:
ellipse(x + r*sin(theta), y + r*cos(theta), 10 * i/(1.0*iter),10 * i/(1.0*iter));
}
</syntaxhighlight>
</lang>
 
=={{header|Python}}==
<langsyntaxhighlight lang="python">
from turtle import *
from math import *
Line 807:
 
done()
</syntaxhighlight>
</lang>
 
=={{header|R}}==
<syntaxhighlight lang="r">
<lang R>
phi=1/2+sqrt(5)/2
r=seq(0,1,length.out=2000)
Line 827:
points(x[i],y[i],cex=size[i],lwd=thick[i],col="goldenrod1")
}
</syntaxhighlight>
</lang>
{{Out}}
[https://raw.githubusercontent.com/schwartstack/sunflower/master/sunflower2.png Sunflower]
Line 835:
{{trans|C}}
 
<langsyntaxhighlight lang="racket">#lang racket
 
(require 2htdp/image)
Line 853:
(+ (/ WIDTH 2) (* r (sin theta)))
(+ (/ HEIGHT 2) (* r (cos theta)))
image))</langsyntaxhighlight>
 
=={{header|Raku}}==
Line 862:
Or, to be completely accurate: It is a variation of a generative [[wp:Fermat's_spiral|Fermat's spiral]] using the Vogel model to implement phi-packing. See: [https://thatsmaths.com/2014/06/05/sunflowers-and-fibonacci-models-of-efficiency/ https://thatsmaths.com/2014/06/05/sunflowers-and-fibonacci-models-of-efficiency]
 
<syntaxhighlight lang="raku" perl6line>use SVG;
 
my $seeds = 3000;
Line 881:
|@c.map( { :circle[:cx(.[0]), :cy(.[1]), :r(.[2])] } ),
],
);</langsyntaxhighlight>
See: [https://github.com/thundergnat/rc/blob/master/img/phi-packing-perl6.svg Phi packing] (SVG image)
 
=={{header|Ring}}==
<langsyntaxhighlight lang="ring">
# Project : Sunflower fractal
 
Line 937:
}
label1 { setpicture(p1) show() }
</syntaxhighlight>
</lang>
Output:
 
Line 944:
=={{header|Sidef}}==
{{trans|Go}}
<langsyntaxhighlight lang="ruby">require('Imager')
 
func draw_sunflower(seeds=3000) {
Line 965:
 
var img = draw_sunflower()
img.write(file => "sunflower.png")</langsyntaxhighlight>
Output image: [https://github.com/trizen/rc/blob/master/img/sunflower-sidef.png Sunflower fractal]
 
=={{header|Vlang}}==
<langsyntaxhighlight lang="vlang">import gg
import gx
import math
Line 998:
}
ctx.end()
}</langsyntaxhighlight>
 
=={{header|Wren}}==
{{trans|Go}}
{{libheader|DOME}}
<langsyntaxhighlight lang="ecmascript">import "graphics" for Canvas, Color
import "dome" for Window
 
Line 1,033:
}
}
}</langsyntaxhighlight>
 
=={{header|Yabasic}}==
{{trans|Wren}}
<langsyntaxhighlight Yabasiclang="yabasic">// Rosetta Code problem: http://rosettacode.org/wiki/Sunflower_fractal
// Adapted from Wren to Yabasic by Galileo, 01/2022
 
Line 1,057:
y = r * cos(angle) + 200
circle x, y, i / seeds * 5
next</langsyntaxhighlight>
 
=={{header|zkl}}==
Line 1,063:
Uses Image Magick and
the PPM class from http://rosettacode.org/wiki/Bitmap/Bresenham%27s_line_algorithm#zkl
<langsyntaxhighlight lang="zkl">fcn sunflower(seeds=3000){
img,color := PPM(400,400), 0x00ff00; // green
c:=((5.0).sqrt() + 1)/2;
Line 1,073:
}
img.writeJPGFile("sunflower.zkl.jpg");
}();</langsyntaxhighlight>
{{out}}
Image at [http://www.zenkinetic.com/Images/RosettaCode/sunflower.zkl.jpg sunflower fractal]
10,333

edits

Cookies help us deliver our services. By using our services, you agree to our use of cookies.