【VBA】エクセルでルービックキューブ

エクセルでルービックキューブを作ってみました。

(※2倍速です)

さすがにこれだけのシェイプを動かすと動作が重くなるので、
外側の面だけ作成したペラペラな「ハリボテ ルービックキューブ」です。

立体感

立体的に見せるために遠近感を付けています。

最初遠近感無しで作ってみたところ、これじゃない感がすごかったので自由に変えられるようにしてみました。
やり方があっているのか分からないので、強めにするとなんか歪みます。

やっていること

  • 四角図形の4隅頂点座標を配列に格納する
  • 回転行列で計算した座標で再作図する
  • 見える部分の図形を最前面に設定する
  • 好きな場所を回転できるように三角のボタンを配置

高速化するための工夫

回転時は一度図形を削除して改めて作図する処理と
図形を削除しないで頂点のノード移動を組み合わせています。

それでもヌルヌルとはいかないので、エクセルだとこれくらいのお遊び程度が限界な気がしています。

難しかった点

前面に見えている3面を最前面に設定するという処理を入れています。
回転中に見えている面が変わるので、どうやって見えている面を判定するのが正解なんですかね…

今回やった方法は4隅のZ値を合計して、Z値が大きい図形から順番に最前面にしています。

ルービックキューブを解いてみた

手動で回せるのに加えて、自動でも回してみました。

ルービックキューブを解いています。

このプログラムを作る時に初めて解き方を調べて
いろんな解き方があることを知りましたし、自分でも初めて全面揃えることが出来ました。

参考

ちなみにこの人の足元にも及びません…

コメントを残す

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

CAPTCHA