N Numbrush 入手する

番号は領域のどこに置かれるのか

三日月の真ん中は三日月の中にありません。ラベルを置くという作業は見た目より難しく、しかも間違えたときに静かに間違えます。

番号は、それが指している領域の内側に落ちていなければ意味がありません。たいていの形ではこれは簡単です。そして三日月に出会います。三日月の真ん中は、三日月の中にありません。

外接矩形の中心は中心ではない

いちばん手軽なやり方は、その領域の画素をすべて見て x と y の最小・最大を求め、できた長方形の中心に番号を置くことです。数行で書けて一度の走査で終わり、花びらやおおよその円ならだれも文句を言わない答えが出ます。

三日月では成り立ちません。外接矩形は両方の角と外側の弧をまたぐので、その中心はくぼんだ空白に落ちます。長方形の内側で、形の外側で、そこを占めている隣の領域の上です。輪はもっと悪く、中心はちょうど穴の中に来ます。

この種の誤りが厄介なのは、何も報告されないことです。座標は計算され、描かれ、すべて正常に見えます。人がその絵を見たときにはじめて「この 7 はどこの番号なのか」と思うことになります。

視覚的中心

正しい量は視覚的中心と呼ばれるもので、その形の内側で、あらゆる境界からできるだけ遠い点です。形の内側にあることが保証され、しかも周囲にいちばん余白が取れるので、読ませたい番号を置くのに向いています。

実装はいくつかありますが、共通しているのは形の内側だけを探索する点です。だから結果が外へ出ることは原理的にありません。外接矩形の中心より計算は重くなりますが、これは一度きりの費用です。領域分割が終わった時点で求めて保存しておけば、以後は毎回そのまま使えます。

ついでの利点として、視覚的中心は「その点のまわりにどれだけ空間があるか」という数値も一緒に返します。番号の文字サイズをそこから決められますし、そもそもその番号を出す価値があるかどうかの判断にも使えます。

番号を出さないほうがよいとき

絵をある程度まで拡大しないと、小さな領域の番号は物理的に描けません。無理に描けば数字どうしが重なり、描かないより読みにくくなります。

Numbrush では二つの関門が置かれています。ひとつは拡大のしきい値で、表示倍率が 1.8 倍を超えるまで番号は描かれません。もうひとつは同時に描く数の上限で、画面上のラベルは最大 400 までです。どちらも狙いは同じで、番号は読むためのものなので、読めないなら出さない、ということです。

拡大してはじめて番号が「生えてくる」あの挙動は、読み込みが遅いのではありません。縮小した状態では、それらの番号はもともと存在すべきでないのです。

よくある質問

なぜ番号が自分の領域の外に見えることがあるのですか

外接矩形の中心を使っている場合です。三日月・輪・C 字のような凹んだ形では、その点が形の外に落ちます。視覚的中心を使えば避けられますが、計算が一段増えます。

なぜ拡大してから番号が出るのですか

縮小した状態では描いても読めず、数字どうしが重なるだけだからです。Numbrush では 1.8 倍を超えてから描き始め、同時に出るラベルは 400 までに抑えています。

番号の大きさはどう決まるのですか

「その点のまわりにどれだけ余白があるか」に従います。視覚的中心を求めるときに一緒に出る数値なので、大きな領域の番号は大きく、小さな領域の番号は小さく、という結果は一度の計算の副産物です。

実際のキャンバスで試す

Numbrush は大人のための数字ぬりえです。曼荼羅、バラ窓、幾何学模様。1枚につき12色、狭いところには拡大鏡、押し間違えても失うものはありません。無料、オフライン、広告なし、アカウントなし。

App Store でダウンロード

関連記事

ガイド一覧