木曜日, 10月 02, 2025

PowerPointでテキストの一部の色替えは複製を活用

質問がありましたので・・・
PowerPointでテキストの一部の色替えは複製を活用すると正確に処理出来ます。

まずベースのテキストを入力します。

次に、その複製を作成します。

複製側で色替えしたい部分をカラー変更し、それ以外を[塗りつぶしなし]

最後に2つぃうのテキストボックスを整列で同じ位置に調整し、上に配置されている色替えしたテキストボックスに対して任意の開始アニメーション設定すれば完了です。

TCDW8542 
見ていないようで記憶に残る人って居ますね

同じ時間帯に散歩コースや駅のホームなどで、よく見かける人と何ヶ月も出会わないと妙に気になってしまいます。意外と見ていないようで記憶に残る人って居ますね。

水曜日, 10月 01, 2025

JavaScriptでAI遊び 71 
Illustratorでオブジェクトの面積を求める

Illustratorでオブジェクトの面積を求めます。ただし曲線を含む場合はラフな結果になりますが、後述する様にアンカーポイントを増やすことで対処できます。

function getClosedPathArea(path) {
if (!path.closed) return 0;

var points = path.pathPoints;
var n = points.length;
var area = 0;
// 多角形の面積公式(Shoelace formula/靴紐公式)
    // 公式はソースの最後を参照
// クローズパス内の 各アンカーポイントを順に処理
// n はアンカーポイントの数
// p1 は現在の点の座標(例:A点)
// p2 は次の点の座標(例:B点)
// % n にすることで 最後の点から最初の点へ繋がり
// 閉じた形(ループ)になる
for (var i = 0; i < n; i++) {
var p1 = points[i].anchor;
// 多角形の面積公式のコア部分
// 面積=1/2Σ(Xi/・
// p1[0] は X 座標、p1[1] は Y 座標
// 一辺ずつ順に計算して全て合計
var p2 = points[(i + 1) % n].anchor;
// 
area += (p1[0] * p2[1]) - (p2[0] * p1[1]);
}
// 最後に絶対値を取り 1/2 にして面積として返す
// Math.abs は、パスが時計回り or
    // 反時計回りどちらでも正の面積にするため
return Math.abs(area / 2);
}

// 曲線の精度は、アンカーポイントを参照するので
// 大まかな面積になります。
// 正確な面積を求める場合は
// アウトライン化後に分割数を増やす必要があります。

function main() {
if (app.documents.length ==
        0 || app.activeDocument.selection.length == 0) {
alert("オブジェクトを選択してください。");
return;
}

var sel = app.activeDocument.selection;
var totalArea = 0;
var count = 0;

// sel は現在の選択オブジェクトの配列
        //(app.activeDocument.selection で取得)
// sel.length は選択されたオブジェクトの数
// i を 0 から順に回して、すべての選択オブジェクトを1つずつ処理
for (var i = 0; i < sel.length; i++) {
// パス(PathItem)かつ閉じたパスであること
if (sel[i].typename === "PathItem" && sel[i].closed) {
// 該当パスの面積を求める関数 getClosedPathArea() を
            // 呼び出して合計面積に加算
totalArea += getClosedPathArea(sel[i]);
count++;
}
}

if (count === 0) {
alert("クローズパスが選択されていません。");
} else {
// Illustrator では 1pt ≒ 0.35278 mm
var areaMM2 = totalArea * Math.pow(0.35278, 2);
        // pt² → mm²
alert("選択されたクローズパス " + count + " 個の合計面積:\n" +
areaMM2.toFixed(2) + " mm²");
}
}

main();


実行後、直ぐに結果が表示されます。
直径50mmの円を作成して実験してみました。円の面積は[πr2乗]なので、計算すると
25×25×3.14=1962.50
となります。これを今回のScriptで解散すると、ポイント追加を4回or5回は実行しないと正確ではないことが解ります。ちなみに作成した円のハンドルを全て取り去ると、一辺が35.355mmの正方形になります。計算すると
35.355×35.355×3.14=1249.98

結果を表に纏めてみました。

TCDW8541 
ある意味彼らは命知らずなのかもね

Baby Alien 152
口笛を吹くバナナ系(^o^)
地下鉄の混んで椅子通路やホームなどで歩きスマホしている人って、もはや呆れるレベルなのですが、ある意味彼らは命知らずなのかもね。