#概要
vistaでphotoshopやってみる。
キャンバス作って、マンデルブロー書いて、pngで出力やってみる。
#写真
#サンプルコード
var v = [];
var pixelSize = 1;
var width = 300;
var height = 300;
var maxIterations = 100;
var mandelMin = -2.5;
var mandelMax = 2.5;
var infinity = 2;
var brightness;
function draw() {
for (var y = 0; y < height; y++)
{
for (var x = 0; x < width; x++)
{
var map = function(num, in_min, in_max, out_min, out_max) {
return (num - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;
};
var a = map(y, 0, height, mandelMin, mandelMax);
var b = map(x, 0, width, mandelMin, mandelMax);
var initialA = a;
var initialB = b;
var iterationCount = 0;
while (iterationCount < maxIterations)
{
var aa = (a * a) - (b * b);
var bb = (2 * a * b);
a = aa + initialA;
b = bb + initialB;
var result = Math.abs(a + b);
if (result >= infinity)
{
brightness = 255;
break;
}
else
{
brightness = 0;
}
iterationCount++;
}
if (brightness == 0) v.push([x, y]);
}
}
}
draw();
preferences.rulerUnits = Units.PIXELS;
var docObj = app.documents.add(300, 300);
var myColor = new SolidColor();
myColor.rgb.red = myColor.rgb.green = myColor.rgb.blue = 0;
myColor.rgb.red = 255;
for (var i = 0; i < v.length; i++)
{
var x = v[i][0];
var y = v[i][1];
var selReg = [[x, y], [x + 1, y], [x + 1, y + 1], [x, y + 1], [x, y]];
activeDocument.selection.select(selReg);
activeDocument.selection.fill(myColor, ColorBlendMode.NORMAL, 100, false);
}
var pngOpt = new ExportOptionsSaveForWeb();
pngOpt.format = SaveDocumentType.PNG;
pngOpt.optimized = true;
pngOpt.interlaced = false;
pngOpt.PNG8 = false;
var filePath = new File("/Users/ore/test8.png");
app.activeDocument.exportDocument(filePath, ExportType.SAVEFORWEB, pngOpt);
alert("ok");
以上。