build CFDG with macOS

macOSでcfdgをbuildする cfdg の command line 版が欲しかったのだけどmacOS版は公式 release package に含まれてないのでどうやら自分で build するしかない。 ググっても全然出てこないのでたぶん必要な人は少なさそうだけど、自分でbuildした顛末を記す。…

2D Strange Attractors

カオスである。Strange Attractor を Scratch で実装する、というのに凝ってしばらくハマっていた。 Strange Attractor とは何かなどについては この辺。 キーワード "strange attractor", "chaos attractor" などで画像を検索すると、いろんな図が見つかっ…

Peter DeJong Attractor

2D strange attractor の一種 Peter DeJong attractorをp5.jsで書いた。

てがきシェルピンスキーのギャスケット

handwritten Sierpinski gasket

既存のiOSアプリをUIScene対応するやり方

(0)前提 既存アプリA…iOS12以前で UIApplicationDelegate のライフサイクルで動くやつ UIはStoryboardベース 参考アプリB…iOS13以降で UIWindowSceneDelegate のライフサイクルで動くやつ Xcode11でHello World的なやつを新規作成すればよい 必要なら Suppor…

Scratch で Generative Art (2)

前にお勧めしないとか書いた気がするけど、自分では面白がってやっている。天の邪鬼である。 ペンの軌跡をフェードアウトするやり方に最近気づいたので、 Processingやp5jsのコードをScratchで実現させてみるということをやっている。 スクリーンショット ア…

Context Free Art

10年ぶりくらいにContext Free Artを触ったら言語のバージョンが上がっていた。 ぐぐっても前のバージョンで書かれたものが多いみたいなので、少しでも新しいバージョンを増やしてみよう。 startshape tree shape tree rule { SQUARE [] tree [y 0.98 size 0…

Scratch で Generative Art

お盆前に 『[普及版]ジェネラティブ・アート―Processingによる実践ガイド』マット・ピアソン(著) を買って読んでたのだけど、やる気が出てきたのでいくつか作ってみた。 ProcessingだとSampleコードからのただのコピペになってしまうので、Scratchでやってみ…

Apple Pencilを使ってみる

ねんがんの iPad mini (第5世代) を手に入れたぞ。 ついでに Apple Pencil (第1世代) も買った。 えらい出費である。 よくあるiPad miniのこじゃれたレビューとかはしない。 Apple Pencilのプログラミング的な使い方はSDKサンプルの Leveraging Touch Input …

Core Text で縦書き(3)

前回 Core Text で縦書き(2) - 錯綜 のコメント欄で90度回転しなくていいやつを教えてもらえた。 こんな誰も読んでないようなブログでも親切な人が教えてくれたりするものである。 ありがたいことである。 というわけでやってみた。 まず普通に CTFrame を使…

Scratchからmicro:bitにつないでみた

2か月くらい前にmicro:bitを購入してから ちょくちょく遊んでいるのだけど これがけっこう楽しくて 久しぶりに LEDを買ってきたり はんだごてを買ってきたり している。 けどやっぱりぼくはソフトウエアな人なので電子工作よりもプログラムを組むのが楽しい…

Swiftでファミコンエミュレータを書いた(3)

githubに上げた。 github.com わかっている問題 音は出ない 遅い iOS実機で動作確認してない 対応している mapper は NROM だけ 遅い問題 Debug build だと 7 fpsくらいしか出ない。 (MacBook 2017, iOS Simulator) Release build だと 40 fps くらい出るの…

Swift製NESエミュレータその2

遅々として進まず。 nestest はまだたくさん失敗している。 「テスト失敗」の結果を得るまでが大変だった。 実装のミスではなく、仕様を読み違えている。 6502 の CMP のキャリーフラグの仕様変だよね。 思い込みはバグのもと。 color_test はちょっと動いて…

Swiftでファミコンのエミュレータを書いてみる

先週読んだこのブログエントリ Kotlinでファミコンのエミュレータを書いた - ゆいきノート に刺激を受けたので自分でも書いてみることにした。 Swift4.2, iOS12.0, Xcode10.0で。 なるべく他人の書いたソースコードは読まないようにして、 できるだけ文書や…

Core Graphics で半透明図形を描く

図形を塗りつぶす。 UIColor.red.setFill() UIBezierPath(rect: CGRect(x: 80, y: 80, width: 100, height: 100)).fill() 重ねて描く。 UIColor.blue.setFill() UIBezierPath(rect: CGRect(x: 100, y: 100, width: 100, height: 100)).fill() ここから半透明…

Core Text で縦書き(2)

NSAttributedString.draw(in:) なら Core Text 無しで縦書きできんじゃね? と思って試してみたけどそんな単純じゃなかった。 役物だけ回転しているので近づこうとしている気配はあるけど、 なにか指定方法があるのかどうなのか、ちょっとわからなかった。 さ…

Core Text で縦書き

Core Text でテキストを描画するには CTFrameDraw(_:_:) を呼べばいいのだけど、そのパラメータをどうつくるかという話。 FrameDraw 第2引数の CGContext は UIGraphicsGetCurrentContext() で得られる。 FrameDraw 第1引数の CTFrame は CTFramesetterCreat…

NSString の UIKit 拡張で文字列を描くやり方

iOS の UIView 派生クラスで func draw(_:) を override して UIBezierPath やら UIImage やらを描画する横並びで、 文字列も描画するやつの話。 import UIKit すると NSString.draw(at:withAttributes:) や NSString.draw(in:withAttributes:) が使える。 N…

diff(A*)

Rogue Likeか Tower Defense か何かで使おうとしてA*をつくっていたけど これってdiffだよね〜と思ってたらやっぱりdiffだったので diffにも使えるように改造していた。 ランダムに問題を生成してedit graph をA*でたどったもの A*のパラメータとしては S: …

Xcode update

Xcode のバージョンが 10.0 に上がった! Swift のバージョンが 4.2 に上がった! $ xcodebuild -version Xcode 10.0 Build version 10A255 $ swift --version Apple Swift version 4.2 (swiftlang-1000.11.37.1 clang-1000.11.45.1) Target: x86_64-apple-dar…

A*

ここのところA*をSwiftで実装していた。 アルゴリズムはwikipediaのとおり https://ja.wikipedia.org/wiki/A* 案の定なかなか動かないのだけど、いちど動いてしまえばああそうか、みたいな簡単なものである。 なかなかうまくいかないのは日本語の解釈の問題…

迷路

迷路生成アルゴリズムを実装した。 (壁伸ばし法) 1が壁で0が通路 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 1 0 1 1 1 1 0 1 1 1 0 1 1 0 0 0 1 0 0 0 1 1 1 1 0 1 0 1 0 1 1 0 0 0 0 0 1 0 1 1 1 1 1 1 1 1 1 1 Flood-fillアルゴリズムで通路(0)を2で塗りつぶす。 1 1…

Rogue Likeななにか

ダンジョンの自動生成を作っているけどなかなかぐっとくる感じにならない ------------------------- ------- |.......................| |.....| |.......................+#######|.....| |.......................| #+.....| |.......................| |…

Swift/Xcode 用の.gitignoreファイル

.gitignore ファイルはプロジェクトのトップディレクトリに作ればよい 中身は下記からコピペ github.com これでxcuserdata/などが要コミット一覧に出現するのを防げる

Swift LANGUAGE GUIDE を読んで書いたブログエントリの一覧

The Basics - 錯綜 Basic Operators - 錯綜 Strings and Characters - 錯綜 Collection Types - 錯綜 Control Flow - 錯綜 Functions - 錯綜 Closures - 錯綜 Enumerations - 錯綜 Classes and Structures - 錯綜 Properties - 錯綜 Methods - 錯綜 Subscrip…

Advanced Operators

昨日に引き続き https://docs.swift.org/swift-book/LanguageGuide/AdvancedOperators.html を読む。 Swiftの算術演算子はオーバーフローしない Int16.max + 1 はエラー オーバーフローする演算子 オーバーフロー 加算 &+ オーバーフロー 減算 &- オーバーフ…

Access Control

昨日に引き続き https://docs.swift.org/swift-book/LanguageGuide/AccessControl.html を読む。 アクセスレベルは5段階 enum AccessLevel { case `open` case `public` case `internal` case `fileprivate` case `private` } レベルの高低は、openが最高(最…

Memory Safety

昨日に引き続き https://docs.swift.org/swift-book/LanguageGuide/MemorySafety.html を読む。 シングルスレッドでも競合は起きる 次のすべての条件を満たす2つのアクセスがある場合、競合が発生する 少なくとも1つは書き込み メモリ内の同じ場所にアクセス…

Automatic Reference Counting

昨日に引き続き https://docs.swift.org/swift-book/LanguageGuide/AutomaticReferenceCounting.html を読む。 ARCは「ちょうどうまくいく」 参照カウンタが適用されるのはクラスのインスタンスだけ 強い参照の循環ができるとメモリが開放されない 強い参照…

Generics

Genericsは鬼門だわ 昨日に引き続き https://docs.swift.org/swift-book/LanguageGuide/Generics.html を読む。 genericな関数 func swapTwoValues<T>(_ a: inout T, _ b: inout T) {…} 使うときは swapTwoValues(&someValue, &anotherValue) 適切に型推論され</t>…