!基本図形2
!circle,rect
circle,rectは引数の数によって挙動が変わります
!!circleの例
>> mce3
circle(1)
circle(0.5,2)
circle(1/2,1/2,0.5)
circle(1/2,-1/2,0.5,0.25)
<<
>>
circle(1)
circle(0.5,2)
circle(1/2,1/2,0.5)
circle(1/2,-1/2,0.5,0.25)
<<
1引数のcircleは以前に紹介しました。それ以外にもcircleには4引数まで取ることができます。

1引数 r
2引数 w,h
3引数 x,y,r
4引数 x,y,w,h

となります。
魔法陣言語は極座標での指定をメインにしていますが、circle,rectに関してはこのようにx,yで位置を調整することができます。
これを駆使することで、shiftや、rotateを減らせるかもしれません。

また、現在楕円を描画するためにはこの方法しかありません。

!!rectの例
>> mce3
rect(1)
rect(0.5,2)
rect(1/2,1/2,0.5)
rect(1/2,-1/2,0.5,0.25)
<<
>>
rect(1)
rect(0.5,2)
rect(1/2,1/2,0.5)
rect(1/2,-1/2,0.5,0.25)
<<
rectもcircleとおなじインターフェースを備えています。

!fig
figは座標列を指定して図形を描く命令です。配下にxy関数を並べて指定します。
xは何も回転していない状態だと右が正です。yは下が正です。

これがあれば、四角形は必要ない気がするのでもしかしたらすべての描画命令をこれにするかも。
!!単純な例
>> mce3
fig(0)
 xy(0,0)
 xy(1/2,0)
 xy(1/2,1/2)
 xy(-1/2,1)
<<
>>
fig(0)
 xy(0,0)
 xy(1/2,0)
 xy(1/2,1/2)
 xy(-1/2,1)
<<
fig(0)は終点と視点を結びます。
fig(1)は結びません。

!!高度な例
>> mce3
shift(-1/2,-1/2)
 fig(1)
  loop(20)
   xy($0/10,rand())
<<
>>
shift(-1,-1)
 fig(1)
  loop(20)
   xy($0/10,rand())
<<
loopは配下の関数の結果を複製します。そのためfigの配下で利用することで、大量のxyを生成することができます。

この例では、乱数を利用して、折れ線グラフのようなものを生成しています。

!poly
多角形を描くための命令です。
!!単純な多角形
>> mce3
poly(5,1,1) //五角形
shift(1/2,1/2)
 poly(6,1,0.5) //六角形
<<
>>
poly(5,1,1) //五角形
shift(1/2,1/2)
 poly(6,1,0.5) //六角形
<<
第一引数がn角形のn
第二引数が次に結ぶ頂点までの数(あとで説明)
第三引数が倍率
です。

!!もっと多角形
>> mce3
poly(5,2,1) //五角形(五芒星)
shift(1/2,1/2)
 poly(12,5,0.5) //12角形(12芒星?)
<<
>>
poly(5,2,1) //五角形(五芒星)
shift(1/2,1/2)
 poly(12,5,0.5) //12角形(12芒星?)
<<
第二引数が次に結ぶ頂点までの数(あとで説明)

とさっき書いたのですが、それを指定するとこんな感じになります。

星の例が分かりやすいですが、いわゆる五角形がというのは、ひとつ隣の頂点に対して線を引くということを5回繰り返しています。
それに対して、この例の五芒星はふたつ隣の頂点に対して線を引くということを5回繰り返しています。
同じように12角形で5個となりの頂点に線を引いたものも描画してみました。

!arc
弧を描く命令です。(ベームベームを作るために生まれました)
楕円の弧が描画できない、この描画方向を指定できない、など気に食わないことがあるので何とかしたい。
>> mce3
arc(0,1/4,1)
<<
>>
arc(0,1/4,1)
<<
第一引数 開始角度(0-1)
第二引数 終了角度(0-1)
第三引数 大きさ



5643382
wiki
1371359210