金曜日, 8月 08, 2025

TCDW8487 
色々と値上がりしていて笑えないです(>_<)

Baby Alien 116
耳を隠しているドラ猫系(^o^)
今年は台湾パイナップルをまだ食べていません。行きつけのスーパーでは数が少なく例年の倍近い価格に躊躇してしまいました。色々と値上がりしていて笑えないです(>_<)。

木曜日, 8月 07, 2025

modoローポリモデリング 59 
四角形ポリゴンを三角形ポリゴンに変換手順

私は今のところ実験用にしか使わないのですが、ソフトによっては三角形ポリゴンの方が都合が良いモノもあるらしい?ので、変換方法を整理してみました。

処理したいデータを選択し、以下の1〜5の手順を踏みます。
1.[メッシュオペレーション]

2.[オペレータ追加]>[プロシージャルモデリング]>[編集]>[Mesh Operations]

3.[[オペレータ追加]>[プロシージャルモデリング]>[メッシュオペレーション]>[編集]>[Merge Meshes]

4.[オペレータ追加]>[プロシージャルモデリング]>[編集]>[Freeze]

5.[オペレータ追加]>[プロシージャルモデリング]>[ポリゴン]>[Triangulate]

これで四角形ポリゴンは、三角形ポリゴンに切り替わります。後は書き出しするだけですが、そのままOBJ形式で書き出して再読み込みすると、なぜか?三角を維持しません。そこで・・・



書き出したOBJ形式をmodoに読み込むときに[スタティックメッシュとして読み込み]にチェックを入れれば三角形ポリゴンを確認できます。ただし、他の3Dソフトで読み込むと三角形ポリゴンではなく四角形ポリゴンで読み込まれてしまいます。

そこで、他の3Dソフトで利用する場合は[形状]>[フリーズ]を実行し・・・

デフォルト設定のまま[OK] すると・・・

[オペレーター追加]の表示が変わります。この状態で書き出せば他の3Dアプリに読み込むんでも三角形ポリゴン状態になります。

TCDW8486 
日中だと完全にお湯になりますね(>_<)

Baby Alien 115
体の模様が擬態系(^o^)
朝、鉢植えに水をあげるのですが、じょうろの水が一晩でぬるま湯になっている今日この頃。日中だと完全にお湯になりますね(>_<)

水曜日, 8月 06, 2025

Let's start JavaScript 79 
HTMLでアラビア数字を漢数字に変換

たま〜に必要なので、ダラダラ作っていました。
HTMLでアラビア数字を漢数字に変換します。


変換する漢数字は上の右端を基準としました。

<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>漢数字変換</title>
<style>
body {
margin: 0;
padding: 0;
height: 100%;
font-family: serif;
background-color: black;
color: white;
}
.container {
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
height: 50vh;
text-align: center;
}
input {
padding: 5px;
font-size: 18px;
margin: 5px;
}
button {
padding: 0px;
font-size: 16px;
margin: 5px;
width: 60px;
height: 30px;
}
#result {
margin-top: 20px;
font-size: 32px;
font-weight: bold;
color: white;
}
</style>
</head>
<body>
<div class="container">
<h3>アラビア数字を漢数字に変換<br>
        Convert Arabic Numerals to Kanji Numerals</h3>
<input type="number" id="inputNumber"
        placeholder="数値を入力">
<button onclick="convertToKanji()">変換</button>
<div id="result"></div>
</div>

<script>
function convertToKanji() {
const num =
        parseInt(document.getElementById('inputNumber').value, 10);
const resultDiv = document.getElementById('result');

if (isNaN(num)) {
resultDiv.textContent = '数値を入力してください。';
return;
}

resultDiv.textContent = numberToKanji(num);
}

function numberToKanji(num) {
const kanjiDigits = ['零', '壱', '弐', '参', '肆', '伍', '陸', '漆', '捌', '玖'];
const kanjiUnits = ['', '拾', '佰', '阡'];
const kanjiBigUnits = ['', '萬', '億', '兆'];

if (num === 0) return kanjiDigits[0];

let result = '';
const numStr = num.toString();
const chunks = [];

// 4桁ごとに右から区切る
let temp = numStr;
while (temp.length > 0) {
const chunk = temp.slice(-4);
chunks.unshift(chunk.padStart(4, '0'));
temp = temp.slice(0, -4);
}

chunks.forEach((chunk, i) => {
let part = '';
for (let j = 0; j < 4; j++) {
const digit = parseInt(chunk[j]);
if (digit !== 0) {
if (!(digit === 1 && j ===
                0 && chunk.length === 4 && i === 0 && j !== 3)) {
part += kanjiDigits[digit];
}
part += kanjiUnits[3 - j];
}
}
if (part !== '') {
result += part + kanjiBigUnits[chunks.length - 1 - i];
}
});

return result;
}
</script>
</body>
</html>



実行直後の画面。アラビア数字を入力して[変換]をクリックッすれば・・・


漢数字を表示します。
アラビア数字を漢数字に変換は、説明しないとワカランチンですね(^o^)汗

12345647890
12億3456万7890
十2億3千4百5十6万7千8百9十
一十二億三千四百五十六万七千八百九十
壱拾弐億参阡肆佰伍拾陸萬漆阡捌佰玖拾

TCDW8485 
エアコン全開でも私の部屋の室温は33度

Baby Alien 114
ツノが重くて難儀君(^o^)
しかし・・・ここ数日はエアコン全開でも私の部屋の室温は33度をキープ。キープしなくて良いのに律儀に守っています(>_<)

火曜日, 8月 05, 2025

JavaScriptでAI遊び 58 
Illustratorで最小多角形の直径間隔で蛇の目風を作る

Illustratorで最小多角形の直径の間隔で蛇の目風を作る。多角形対応版。

数を指定しても煩雑になるので、ここでは元の多角形を含めて4つの多角形で作成する蛇の目風マークを任意の多角形を選択して自動生成します。その際、最小多角形がそれぞれの多角形の垂直方向の間隔を同じとします。

結果、選択した多角形の垂直方向の直径Aに対して
2つ目の多角形の直径は(A÷7×5)、
3つ目の多角形の直径は(A÷7×3)、
一番小さい多角形の直径は(A÷7×1)
となります。

奇数角形の場合。中心点の関係で見た目はチョット変ですが、間違っていません。

(function () {
var doc = app.activeDocument;
var sel = doc.selection;
if (sel.length !== 1 || sel[0].typename !==
        "PathItem" || !sel[0].closed) {
alert("1つの多角形を選択してください。");
return;
}
var basePolygon = sel[0];
var baseBounds = basePolygon.geometricBounds;
var centerX = (baseBounds[0] + baseBounds[2]) / 2;
var centerY = (baseBounds[1] + baseBounds[3]) / 2;
var baseWidth = baseBounds[2] - baseBounds[0];
var baseHeight = baseBounds[1] - baseBounds[3];
var sizes = [5/7, 3/7, 1/7];
for (var i = 0; i < sizes.length; i++) {
var newWidth = baseWidth * sizes[i];
var newHeight = baseHeight * sizes[i];
var newPolygon = basePolygon.duplicate();
newPolygon.resize(sizes[i] * 100, sizes[i] * 100);
newPolygon.position =
            [centerX - newWidth / 2, centerY + newHeight / 2];
newPolygon.stroked = true;
newPolygon.filled = false;
}
})();

偶数角形の処理結果。

奇数角形の処理結果。

TCDW8484 
小まめに塗り直さなくてはいけないです

Baby Alien 113
ノミの進化形?(^o^)
4種類の日焼け止めを気分で使っているのですが、どう考えても日焼けオイルみたいな結末は、使い方の問題かな? 小まめに塗り直さなくてはいけないですからね〜(>_<)

月曜日, 8月 04, 2025

引き伸ばしレンズ遊び 02 
FUJINON EP 50mm F3.5

FUJINON EP 50mm F3.5をゲットしました。今までは80mmでしたので望遠気味で少し苦労していましたが、だいぶ楽になりました。


レンズフロント部分にはEL NIKKORのようにネジキリがありません。また、黒の色紙を妹弟ぶるるんは、本来はラバーキングがあるのですが、新品ではないので・・・。

ということでSONY α NEX-6に装着し、手作りフードをつけた状態です。

手作りフード
FUJINON EP 50mm F3.5
39-42mm 変換リング
7mmマクロチューブアダプタ
12〜19mmヘリコイドアダプタ
1mmマウントアダプタ

Panasonic LUMIX DMC-G3
LUMIX G VARIO 14-42mm/F3.5-5.6 ASPH

物撮りなら問題ないですね。

SONY α NEX-6
FUJINON EP 50mm F3.5

TCDW8483 
年齢的に少しは日光に当たった方がいいと思うのですが

Baby Alien 112
ワンコから進化した類人犬(^o^)
バスの中で、下車する直前になって全身日焼け防止対策で着込みはじめた女性にビックリ。どうみても80代で、その完璧さと機敏な動作は圧巻でした。でも、年齢的に少しは日光に当たってビタミンDを取った方がいいと思うのですが・・・。

日曜日, 8月 03, 2025

Excel VBA 49 
ExccelでA2とA2セルの色を指定段階の色相グラデに

ExccelでA2とA2セルの色から指定した段階の色相グラデ—ションを作成します。

Sub ApplyHueGradientToColumnB()
Dim ws As Worksheet
Dim startColor As Long, endColor As Long
Dim steps As Integer, i As Integer
Dim startHue As Single, endHue As Single
Dim startSaturation As Single, startBrightness As Single
Dim endSaturation As Single, endBrightness As Single
Dim h As Single, s As Single, b As Single
Set ws = ActiveSheet
startColor = ws.Range("A1").Interior.Color
endColor = ws.Range("A2").Interior.Color
steps = Application._
        InputBox("ステップ数を入力してください:", Type:=1)
' RGBからHSBに変換
RGBtoHSB startColor, startHue, startSaturation, startBrightness
RGBtoHSB endColor, endHue, endSaturation, endBrightness

' グラデーションを適用
For i = 0 To steps
h = startHue + (endHue - startHue) * i / steps
s = startSaturation + _
            (endSaturation - startSaturation) * i / steps
b = startBrightness + _
            (endBrightness - startBrightness) * i / steps
ws.Cells(i + 3, 2).Interior.Color = HSBtoRGB(h, s, b) ' B列に適用
Next i
End Sub

' RGB を HSB に変換
Sub RGBtoHSB(ByVal rgbColor As Long, _
    ByRef h As Single, ByRef s As Single, ByRef b As Single)
Dim r As Single, g As Single, bl As Single
Dim minVal As Single, maxVal As Single, delta As Single

r = (rgbColor Mod 256) / 255
g = ((rgbColor ¥ 256) Mod 256) / 255
bl = (rgbColor ¥ 65536) / 255
minVal = WorksheetFunction.Min(r, g, bl)
maxVal = WorksheetFunction.Max(r, g, bl)
delta = maxVal - minVal

b = maxVal ' 明度

If delta = 0 Then
h = 0
s = 0
Else
s = delta / maxVal ' 彩度

If maxVal = r Then
h = (g - bl) / delta
ElseIf maxVal = g Then
h = 2 + (bl - r) / delta
Else
h = 4 + (r - g) / delta
End If

h = h * 60
If h < 0 Then h = h + 360
End If
End Sub

' HSB を RGB に変換
Function HSBtoRGB(ByVal h As Single, _
    ByVal s As Single, ByVal b As Single) As Long
Dim r As Single, g As Single, bl As Single
Dim i As Integer, f As Single, p As Single, q As Single, t As Single

If s = 0 Then
r = b: g = b: bl = b
Else
h = h / 60
i = Int(h)
f = h - i
p = b * (1 - s)
q = b * (1 - s * f)
t = b * (1 - s * (1 - f))

Select Case i Mod 6
Case 0: r = b: g = t: bl = p
Case 1: r = q: g = b: bl = p
Case 2: r = p: g = b: bl = t
Case 3: r = p: g = q: bl = b
Case 4: r = t: g = p: bl = b
Case 5: r = b: g = p: bl = q
End Select
End If

HSBtoRGB = RGB(Int(r * 255), Int(g * 255), Int(bl * 255))
End Function

A1とA2セルに基準となる塗りを行い、VBAを実行すると段階数を入力するパレットが表示されるので任意入力すれば・・・

指定段階段階の基準の色の間となる段階の塗りをB列に表示します。