ラティス形式と呼ばれるシェーディング方法です。
擬似矩形の頂点を設定して三角メッシュを作っていきます。
矩形の横方向の並びを行と言います。
矩形は次のパラメータで、座標を行単位で設定していきます。
x座標 y座標 色値(0〜4個)
VerticesPerRowは行の頂点数を指定します。
行の頂点が2なら矩形が1個、3なら2個、5なら3個になります。
★が付いたパラメータは変更可能です。色々と変えてみてください。
コード内の<< >>は本来英語記号ですが、ここでは入力できないため日本語記号<< >>を使用しています
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 %!PS-Adobe-3.0 EPSF-3.0
%%BoundingBox: 0 0 240 240
%%Title:ラティス形式のグローシェーディングによる三角メッシュ
0 0 240 240 rectstroke % 画面囲み
120 120 translate % 座標の原点を中央に移動
<< % シェーディング辞書定義
/ShadingType 5 % ラティス形式のグローシェーディング
/ColorSpace /DeviceRGB % ★色空間定義
/VerticesPerRow 2 % ★ラティスの行の頂点数(2以上)
/DataSource [ % ★三角メッシュを定義する頂点座標と色値
-100 100 1 0 1 % 上の行の頂点
0 100 0 1 1
-100 0 1 1 0 % 下の行の頂点
0 0 1 0 1
]
>> shfill %グラデーションで塗りつぶす
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 %!PS-Adobe-3.0 EPSF-3.0
%%BoundingBox: 0 0 240 240
%%Title:ラティス形式のグローシェーディングによる三角メッシュ
0 0 240 240 rectstroke % 画面囲み
120 120 translate % 座標の原点を中央に移動
/cyan { 0 1 1 } def % シアン
/magenta { 1 0 1 } def % マゼンタ
/yellow { 1 1 0 } def % イエロー
<< % シェーディング辞書定義
/ShadingType 5 % ラティス形式のグローシェーディング
/ColorSpace /DeviceRGB % ★色空間定義
/VerticesPerRow 3 % ★ラティスの行の頂点数(2以上)
/DataSource [ % ★三角メッシュを定義する頂点座標と色値
% 100の高さの頂点
-100 100 magenta
0 100 cyan
100 100 magenta
% 0の高さの頂点
-100 0 yellow
0 0 cyan 100 0 yellow
]
>> shfill %グラデーションで塗りつぶす
※変更部分のコードのみ掲載しています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | /VerticesPerRow 3 % ラティスの行の頂点数(2以上) /DataSource [ % 三角メッシュを定義する頂点座標と色値 % 100の高さの頂点 -100 100 magenta 0 100 cyan 100 100 magenta % 0の高さの頂点 -100 0 yellow 0 0 cyan 100 0 yellow % -100の高さの頂点 -100 -100 magenta 0 -100 cyan 100 -100 magenta ] <pre> |
縦に任意数つなげることが可能です。
座標の順番を変えることで三角メッシュの方向も変わります。
ただし座標は一筆書きのように順番に設定します。
※変更部分のコードのみ掲載しています。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 /VerticesPerRow 2
/DataSource [
0 100 yellow
-100 100 magenta
0 0 yellow
-100 0 cyan
-100 0 cyan
0 0 yellow
-100 -100 magenta
0 -100 yellow
0 -100 yellow
100 -100 magenta
0 0 yellow
100 0 cyan
100 0 cyan
0 0 yellow
100 100 magenta
0 100 yellow
]
真四角である必要はありません。
コメント