C++でアナモルフォーズ原理を実装してみた

先日入れたVisualStudio2017のOpenCVを使ってアナモルフォーズ原理を実装してみました。

OpenCV入れてない人はこっち→ https://harusamelab.com/2019/05/05/visual-studio-2017-%E3%81%ABopencv%E3%82%92%E5%85%A5%E3%82%8C%E3%82%8Bc/

 

アナモルフォーズ原理ってなんなのだよ?

画像や写真を平面でない物体に投影したり角度を変えて見てみたりすることで正常な形が見えるようになるデザイン技法のひとつ

今回作るのは、自動車に乗っていてよく見る、40km/h とかの速度標識が縦に長いのと少し原理が近いです。少しだけ。

 

まずは、利用者がどのようなパラメタで作って欲しいかを受け取ります。

標準入力を使用しますので、iostreamをインクルードしておきましょう。

下の画像みたいに値を受け取ることが出来ます。

奥行きと高さの2つがわかれば、その直角三角形がなす角度は計算できますよね。

『約18°』と表示していますが、処理では厳密な値を使用します。

 

パラメタが受け取れたので計算処理。

A4サイズの紙(2480×3508[px])に印刷することを考えて処理しています。

0.297とか0.21とかは、A4紙の縦幅/横幅をメートル表記したものです。

このプログラムだとA4サイズだけに対応していますが、定数部分を書き換えればオールオッケーです。

Mayaで表示させてみるとこんな感じ。

(自宅のプリンターのインクが切れていたので検証はCGで…)

↓ 偉大すぎるイラスト

 

若干足が細い気がするのでどこかに間違いがあるかも…。

階段の踊り場とかにこういうアートをおいておくと面白いかもしれませんね。

印刷してみたらどうなるのか今度やってみます。光の当たり具合で変わりそうな気が。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です