Files
kotlin-webgl-fractal/web/js/generated/mandelbrot.js
2016-05-22 11:10:52 +02:00

87 lines
3.6 KiB
JavaScript

(function (Kotlin) {
'use strict';
var _ = Kotlin.defineRootPackage(null, /** @lends _ */ {
HTMLElements: Kotlin.createClass(null, function () {
var tmp$0, tmp$1, tmp$2, tmp$3;
this.windowWidth = window.innerWidth | 0;
this.windowHeight = window.innerHeight | 0;
this.container = Kotlin.isType(tmp$0 = document.createElement('div'), HTMLElement) ? tmp$0 : Kotlin.throwCCE();
this.canvas = Kotlin.isType(tmp$1 = document.createElement('canvas'), HTMLCanvasElement) ? tmp$1 : Kotlin.throwCCE();
this.container.setAttribute('style', 'position: relative;');
this.canvas.setAttribute('style', 'position: absolute; left: 0px; top: 0px; z-index: 10; width: 2000px; height: 1000px;');
((tmp$2 = document.body) != null ? tmp$2 : Kotlin.throwNPE()).appendChild(this.container);
this.container.appendChild(this.canvas);
this.canvas2d = Kotlin.isType(tmp$3 = this.canvas.getContext('2d'), CanvasRenderingContext2D) ? tmp$3 : Kotlin.throwCCE();
}, /** @lends _.HTMLElements.prototype */ {
resize: function () {
this.windowWidth = window.innerWidth | 0;
this.windowHeight = window.innerHeight | 0;
this.canvas.setAttribute('width', this.windowWidth.toString() + 'px');
this.canvas.setAttribute('height', this.windowHeight.toString() + 'px');
this.canvas.setAttribute('style', 'position: absolute; left: 0px; top: 0px; z-index: 5; width: ' + this.windowWidth + 'px; height: ' + this.windowHeight + 'px;');
},
getColor_14dthe$: function (mu) {
var clr1 = mu | 0;
var t2 = mu - clr1;
var t1 = 1 - t2;
clr1 = clr1 % 768;
},
drawMandel: function () {
var tmp$0, tmp$1;
var xs;
var ys;
var xx;
var yy;
var xt;
var iteration;
var max_iteration = 767;
var halfWindowHeight = this.windowHeight / 2 | 0;
var red;
var green;
var blue;
var fillStyle;
var mu;
Kotlin.println('Window width: ' + this.windowWidth + ', height: ' + this.windowHeight + ', half: ' + halfWindowHeight);
tmp$0 = this.windowWidth;
for (var x = 0; x <= tmp$0; x++) {
tmp$1 = halfWindowHeight;
for (var y = 0; y <= tmp$1; y++) {
xs = 4.0 / this.windowWidth * x - 2.0;
ys = 2.0 - 2.0 / halfWindowHeight * y;
xx = 0.0;
yy = 0.0;
iteration = 0;
while (xx * xx + yy * yy < 4 && iteration < max_iteration) {
xt = xx * xx - yy * yy + xs;
yy = 2 * xx * yy + ys;
xx = xt;
iteration++;
}
if (iteration === max_iteration) {
fillStyle = 'rgb(0, 0, 0)';
}
else {
mu = iteration + 1 - Math.log(Math.log(xx * xx + yy * yy)) / Math.log(2.0);
iteration = iteration * 13 % 768;
red = Math.min(iteration, 255);
green = Math.max(0, Math.min(iteration, 511) - 256);
blue = Math.max(0, Math.min(iteration, 767) - 512);
fillStyle = 'rgb(' + red + ', ' + green + ', ' + blue + ')';
}
this.canvas2d.fillStyle = fillStyle;
this.canvas2d.fillRect(x, y, 1.0, 1.0);
this.canvas2d.fillRect(x, this.windowHeight - y, 1.0, 1.0);
}
}
}
}),
main_kand9s$: function (args) {
var html = new _.HTMLElements();
html.resize();
html.drawMandel();
}
});
Kotlin.defineModule('mandelbrot', _);
_.main_kand9s$([]);
}(Kotlin));