Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
143
Task/Julia-set/FutureBasic/julia-set.basic
Normal file
143
Task/Julia-set/FutureBasic/julia-set.basic
Normal file
|
|
@ -0,0 +1,143 @@
|
|||
#build CheckArrayBounds NO
|
||||
output file "Julia Fractal Viewer
|
||||
include "NSLog.incl"
|
||||
|
||||
begin record Complex
|
||||
float real // real component of Complex Number
|
||||
float imag // imaginary component of Complex Number
|
||||
end record
|
||||
|
||||
_window = 1
|
||||
begin enum output 1
|
||||
_juliaView
|
||||
end enum
|
||||
|
||||
void local fn BuildWindow
|
||||
CGRect r = fn CGRectMake( 0, 0, 520, 600 )
|
||||
window _window, @"Rosetta Code Julia Set", r, NSWindowStyleMaskTitled + NSWindowStyleMaskClosable + NSWindowStyleMaskMiniaturizable
|
||||
|
||||
r = fn CGRectMake( 10, 10, 500, 580 )
|
||||
imageview _juliaView, YES,,r, NSImageScaleAxesIndependently, NSImageAlignCenter, NSImageFramePhoto, _window
|
||||
end fn
|
||||
|
||||
local fn JuliaPoint( c as Complex, w as long, h as long, xl as float, xr as float, yb as float, yt as float, i as long, j as long ) as long
|
||||
float ai, ar, cr, ci, t, x, y
|
||||
long k, value
|
||||
|
||||
value = 1
|
||||
|
||||
cr = c.real
|
||||
ci = c.imag
|
||||
|
||||
x = ( ( float ) ( w - i - 1 ) * xl + ( float ) ( i ) * xr ) / ( float ) ( w - 1 )
|
||||
y = ( ( float ) ( h - j - 1 ) * yb + ( float ) ( j ) * yt ) / ( float ) ( h - 1 )
|
||||
|
||||
ar = x
|
||||
ai = y
|
||||
for k = 0 to 199
|
||||
t = ar * ar - ai * ai + cr
|
||||
ai = ar * ai + ai * ar + ci
|
||||
ar = t
|
||||
if ( 1000 < ar * ar + ai * ai )
|
||||
value = 0
|
||||
exit fn
|
||||
end if
|
||||
next k
|
||||
end fn = value
|
||||
|
||||
void local fn JuliaRGB( c as Complex, w as long, h as long, xl as float, xr as float, yb as float, yt as float, rgb(0) as unsigned char )
|
||||
long i, j, juliaValue, k
|
||||
|
||||
k = 0
|
||||
for j = 0 to h - 1
|
||||
for i = 0 to w - 1
|
||||
juliaValue = fn JuliaPoint( c, w, h, xl, xr, yb, yt, i, j )
|
||||
rgb(k) = 255 * (1-juliaValue)
|
||||
rgb(k+1) = 255 * (1-juliaValue)
|
||||
rgb(k+2) = 255
|
||||
k += 3
|
||||
next i
|
||||
next j
|
||||
end fn
|
||||
|
||||
void local fn TGAWrite( w as long, h as long, rgb(0) as ^unsigned char, url as CFURLRef )
|
||||
CFMutableDataRef dta
|
||||
unsigned char header1(11), header2(5)
|
||||
|
||||
BlockZero( @header1(0), 12 * sizeof(unsigned char) )
|
||||
header1(2) = 2
|
||||
|
||||
header2(0) = w mod 256
|
||||
header2(1) = w/256
|
||||
header2(2) = h mod 256
|
||||
header2(3) = h/256
|
||||
header2(4) = 24
|
||||
header2(5) = 0
|
||||
|
||||
dta = fn MutableDataWithCapacity(0)
|
||||
MutableDataAppendBytes( dta, @header1(0), 12 * sizeof(unsigned char) )
|
||||
MutableDataAppendBytes( dta, @header2(0), 6 * sizeof(unsigned char) )
|
||||
MutableDataAppendBytes( dta, @rgb(0), w * h * 3 * sizeof(unsigned char) )
|
||||
fn DataWriteToURL( dta, url, NSDataWritingAtomic, NULL )
|
||||
|
||||
ImageRef image = fn ImageWithData( dta )
|
||||
ImageViewSetImage( _juliaView, image )
|
||||
end fn
|
||||
|
||||
void local fn BuildJuliaSet( c as Complex )
|
||||
long h, w
|
||||
float xl, xr, yb, yt
|
||||
ptr p
|
||||
CFURLRef url
|
||||
|
||||
// Create 1000x1000-pixel canvas for image
|
||||
h = 1000
|
||||
w = 1000
|
||||
|
||||
// Locate image on canvas
|
||||
xl = -1.5
|
||||
xr = 1.5
|
||||
yb = -1.5
|
||||
yt = 1.5
|
||||
|
||||
p = fn malloc( w * h * 3 * sizeof(unsigned char) )
|
||||
|
||||
xref rgb(1) as unsigned char
|
||||
rgb = p
|
||||
|
||||
// Create image data
|
||||
fn JuliaRGB( c, w, h, xl, xr, yb, yt, @rgb(0) )
|
||||
|
||||
// Create path to final image
|
||||
url = fn URLFileURLWithPath( fn StringByExpandingTildeInPath( @"~/Desktop/julia_set.png" ) )
|
||||
|
||||
// Write image data to file
|
||||
fn TGAWrite( w, h, @rgb(0), url )
|
||||
|
||||
free(p)
|
||||
end fn
|
||||
|
||||
dim as Complex c
|
||||
|
||||
c.real = 0.355534
|
||||
c.imag = -0.337292
|
||||
|
||||
// c.real = -0.8
|
||||
// c.imag = 0.156
|
||||
|
||||
// c.real = 0.26
|
||||
// c.imag = 0.0016
|
||||
|
||||
// c.real = 0.355
|
||||
// c.imag = 0.355
|
||||
|
||||
// c.real = -0.4
|
||||
// c.imag = -0.59
|
||||
|
||||
// c.real = -0.54
|
||||
// c.imag = 0.54
|
||||
|
||||
fn BuildWindow
|
||||
fn BuildJuliaSet( c )
|
||||
|
||||
HandleEvents
|
||||
Loading…
Add table
Add a link
Reference in a new issue