木曜日, 2月 06, 2025

JavaScriptでAI遊び 34 
巨大な円弧を始点と角度を指定して描く

デフォルトで円弧ツールはありますが・・・巨大な円弧を始点と角度を指定して描いてみました。

function drawArcInMM() {
// ユーザー入力を取得
var radiusMM =
prompt("円弧の半径を入力してください (mm):", "50");
var startAngle =
prompt("開始角度を入力してください (度):", "0");
var endAngle =
prompt("終了角度を入力してください (度):", "90");

// 入力を数値に変換
radiusMM = parseFloat(radiusMM);
startAngle = parseFloat(startAngle);
endAngle = parseFloat(endAngle);

// 入力値が有効でない場合は終了
if (isNaN(radiusMM) || isNaN(startAngle) || isNaN(endAngle) ||
        radiusMM <= 0) {
alert("正しい数値を入力してください。");
return;
}

// mmをpxに変換 (1mm = 2.83464567px)
var mmToPx = 2.83464567;
var radiusPx = radiusMM * mmToPx;

// 度をラジアンに変換
var startRad = (Math.PI / 180) * startAngle;
var endRad = (Math.PI / 180) * endAngle;

// ドキュメントの参照を取得
var doc = app.activeDocument;

// ドキュメントの中心座標を取得
var centerX = doc.width / 2;
var centerY = doc.height / 2;

// 円弧を構成する点を計算
var arcPath = [];
for (var t = startRad; t <= endRad; t += 0.01) {
var x = centerX + radiusPx * Math.cos(t);
var y = centerY + radiusPx * Math.sin(t);
arcPath.push([x, y]);
}

// パスを作成
var pathItem = doc.activeLayer.pathItems.add();
pathItem.setEntirePath(arcPath);
pathItem.stroked = true;
pathItem.filled = false;
pathItem.strokeColor = new RGBColor();
pathItem.strokeColor.red = 0;
pathItem.strokeColor.green = 0;
pathItem.strokeColor.blue = 0;

alert("円弧を描画しました!");
}

// スクリプトを実行
drawArcInMM();

ジッ恋すると、円弧入力パレットが表示され・・・

続いて開始角度円弧入力パレットが表示され・・・

さごに終了角度入力パレットが表示されるので入力すれば・・・

生成されますが、生成位置をドキュメント内にうまく配置できないので、縮小表示で見つけてください。

なを、生成される円弧はパスの塊なので[オブジェクト]>[パス]>[単純化]を実行すれば完成です。