SVX日記

2004|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|

2017-12-02(Sat) ドット絵をベクトルデータに変換

  ちょっとした用途のため、ドット絵をベクトルデータに変換するプログラムを書いてみた。

  画像の説明

  すると、なんだか「ゲームセンターあらし」を彷彿させる絵柄が現れた(笑)。


2017-12-07(Thu) タートルグラフィックスを実装

  先日に引き続き、ちょっとした用途のため、自製グラフィックライブラリにタートルグラフィックスの関数を追加することにした。習作として、フラクタル図形を描画するプログラムも書いてみる。やり始めたら極めてアッサリと、併せて数時間でできてしまった。

  まずは、12次のC曲線。

  画像の説明

 def c_curve(win, n, l)
     unless(n == 0)
         win.tLeft(45)
         c_curve(win, n - 1, l)
         win.tRight(90)
         c_curve(win, n - 1, l)
         win.tLeft(45)
     else
         win.tForward(l)
     end
 end
 
 win.tHome
 win.tRight(90)
 c_curve(win, 12, 4)

  次に、12次のドラゴン曲線。

  画像の説明

 def r_dragon(win, n, l)
     unless(n == 0)
         win.tLeft(45)
         r_dragon(win, n - 1, l)
         win.tRight(90)
         l_dragon(win, n - 1, l)
         win.tLeft(45)
     else
         win.tForward(l)
     end
 end
 
 def l_dragon(win, n, l)
     unless(n == 0)
         win.tRight(45)
         r_dragon(win, n - 1, l)
         win.tLeft(90)
         l_dragon(win, n - 1, l)
         win.tRight(45)
     else
         win.tForward(l)
     end
 end
 
 win.tHome
 win.tRight(90)
 r_dragon(win, 12, 4)

  最後に、7次のツリー。

  画像の説明

 def tree(win, n, l)
     unless(n == 0)
         win.tSetPenWidth(n * 2)
         win.tForward(l)
         win.tRight(25)
         tree(win, n - 1, l / 1.5)
         win.tLeft(55)
         tree(win, n - 1, l / 1.3)
         win.tRight(30)
         win.tBack(l)
     else
         win.tForward(l)
         win.tBack(l)
     end
 end
 
 win.tHome
 tree(win, 7, 96)

  描画結果は、svg形式でファイル出力される。上記の図形はOperaにレンダリングさせたもの。

  CADもイイけど、こういうロジックで描画させる方が好みだわ。


2017-12-16(Sat) パーフェクト破線描画ライブラリを実装

  自由な曲線を、意図した通りに制御しつつ描くためにはベジェ曲線が最適だ。それは角丸の長方形を描くためにも有用。破線も描きたい。しかも、一点鎖線も二点鎖線も、開始点も終止点も、線が直角に曲がっても破綻しない破線が。

  というわけで、先日のタートルグラフィックスに、パーフェクトなベジェ曲線と破線描画機能を実装してみた。文法は以下。

tThrough(終止点への角度, 終止点への距離, 終止点からの角度, {オプション})

  以下で、半径100の擬似真円を描ける。

4.times { tThrough(45, 141.421356, 45) }

  ちょっと調べた限り、タートルグラフィックスにベジェ曲線を実装した事例は多くないようだが、その中でも、我ながらもっともシンプルかつ美しい実装方法であると自負している。オプションを与えることで、制御点までの距離や、破線のパターン等も指定できる。

  で、描いたのがコレ。

  画像の説明

  で、それを描くコードがコレ。

     # ベジェ曲線テスト
     win.tSetPos(64, 64)
     win.tSetHeading(90)
     win.tArc(360, 4)
 
     win.tForward(100)
     win.tArc(360, 4)
 
     2.times {
         win.tThrough( 45, sqrt(120 ** 2 + 120 ** 2), -45)
         win.tArc(360, 4)
         win.tThrough(-45, sqrt(120 ** 2 + 120 ** 2),  45)
         win.tArc(360, 4)
     }
 
     # 波線テスト
   [false, true].each {|fit|
 
     win.tSetPos(64, fit ? 192 : 128)
     win.tSetHeading(90)
     win.tArc(360, 4)
 
     win.tDForward(*win.fit_dline(100, [0, [20, 10]], { :FIT => fit }))
     win.tArc(360, 4)
 
     2.times {
         win.tDThrough( 45, sqrt(120 ** 2 + 120 ** 2), -45, { :PAT => [0, [20, 10]], :DIVS => 16, :FIT => fit })
         win.tArc(360, 4)
         win.tDThrough(-45, sqrt(120 ** 2 + 120 ** 2),  45, { :PAT => [0, [20, 10]], :DIVS => 16, :FIT => fit })
         win.tArc(360, 4)
     }
   }

  で、ちょいとライブラリをOpenGL版に入れ替え、意味もなく3Dにしてグリグリと回してみたり。

  画像の説明

  思い返せば、このライブラリの原型を作ったのは10年以上前になるのか。こんなに長らく付き合うことになるとは思ってもみなかったな。


2017-12-21(Thu) マツダは予定をかなり繰り上げるつもりだ

  日めくりは元には戻らない。だがマツダなら進めることはできる。

  画像の説明


2017-12-25(Mon) クリスマス納車

  20年以上前、初代ロードスターR-Limitedの新車購入をギリギリまで検討しながら、オープン志向が行き過ぎて裸の三菱ジープを選んでしまって以来、今年の6月に軽の自家用車を車検に出して以来、待ちに待った「赤いMTのオープンカー」を手にすることができた。

  画像の説明

  初めての新車購入で、ちょっと興味のあった「オドメータの初期値」は4km。ディーラーでひととおりの説明を受けてから帰宅し、予め購入してあったフロアマットとカップホルダを装着、ガソリンスタンドでハイオクを満タンにしてから、さっそくオープン状態で試運転に出発。

  イマドキの車は慣らし不要というし3000rpm前後をキープして普通に走る。市街地からセミ高速へ。20年ぶりのMTだが、ブリッピングによる回転合わせはスパッと決まる。

  不安だったシートの座り心地も問題なし。グッと奥に座ればちゃんと腰を支えてくれる感じ。サスは硬め。荒れた路面を走ると内臓に響く。ギリギリ許容範囲。

  画像の説明

  覚悟していたシフトの入りのシブさだが、ほとんど問題ない。入らない時も、一度の入れなおしで入る。ノブの振動もほとんどない。年次改良で改善されたのか、たまたま当たりだったのか。

  気温が低くても、窓を閉めればオープンでも問題ない。手は冷えるが、ハンドル脇の吹き出し口で暖められる。が、そのことで、自分がシフトノブに手を載せ続けるクセがあることに気づいた。でも、両手でハンドルを握っているのに違和感を感じるのだよなぁ。ATの時、いつも左手は肘掛けだもんなぁ。サイドブレーキの上に置くクセを付けようかしらん。

  セミ高速を降りて国道1号を自宅方面に。軽い渋滞状態で、さすがに左足が疲れてきた。オルガンペダルだけど右足の脛も張ってきた。足の位置が悪いのかしらん。

  画像の説明

  まだ車両感覚がなく、自宅に駐車する際に軽にブツけそうになって焦ったが、無事帰宅。最初のドライブは、約3時間半、約120km。明日からしばらく乗れないが、年末年始は走りまくるぞ。

本日のツッコミ(全4件) [ツッコミを入れる]

nekosan [来ましたね!!これからじっくり慣らしですか。 インパネ、タコメータが中央で大きく占めてるんですね。]

フルタニアン(管理者) [いやー、納車まで長かったです。 慣らしについてもいろいろ調べたんですが、ブン回して全力加速するのだけ、しばらく..]

nekosan [慣らしは、実はもう要らないといわれてて、実際、やらなくても大丈夫なんだろうなと思いつつ、どっちなんだろうなぁ?という..]

フルタニアン(管理者) [慣らしには諸説ありますが、クルマに踏めと言われた時は、割と素直に踏んじゃってますね……。 確かに暖気と似てます。暖..]