ActionScript3 で四角形を台形に変換する方法
私の台形は 3D 部屋の床であり、それをテクスチャ化したい (ビットマップ タイル)。
_____________
| | | |
| |_____| |
| / \ |
| / trapez.\ |
|/__________\|
ActionScript3 で四角形を台形に変換する方法
私の台形は 3D 部屋の床であり、それをテクスチャ化したい (ビットマップ タイル)。
_____________
| | | |
| |_____| |
| / \ |
| / trapez.\ |
|/__________\|
プログラムで「長方形」がどのように表現されるかによって異なります。いくつかのオプション:
長方形がベクトルで、アンカー ポイントにアクセスできる場合:
---> o------o <---
| |
| |
o------o
なる:
o--o
/ \
/ \
o------o
上の 2 つの点を単純に変換し、それらを互いに凝縮します。
その「長方形」が実際にDisplayObject
である場合、同じ DisplayObject を 2 つ「つなぎ合わせ」て新しいものを作成する必要があります。このページには、必要なものの例とサンプル コードがあります。
もう 1 つのオプションは、上記のレンダリング方法をベースとして使用するPapervision3Dを使用することです。
これは少しトリッキーですが、オプションです。こちら で説明されているように、ディスプレイスメント マップを使用できます。コードは AS2 ですが、「移植」するのはかなり簡単なはずです。
この回答に従って、Papervision3D(3番目のオプションを参照)を使用して「部屋」の周りにカメラを移動することをお勧めします。他の壁も同様に処理します。
アイデアは、それを三角形に分割し、それらに対して(Matrixを使用して)アフィン変換を実行することです... senocularが提供するサンプルコード(AS2用)...
オンラインにはいくつかのライブラリもありますが、現在は見つかりません...
FlashPlayer 10 をターゲットにしている場合は、クリップの回転値を回転させることでそれを行うことができます 。詳細については、 Mike Chambers からのこの投稿を参照してください。
それ以外の場合は、Papervision のような 3D エンジンが必要になります。Flash Player 9 で非アフィン変換を行う簡単な方法はありません。
幸運を。