コードを使用して美しい幾何学アートをクラフト.
17764 ワード
コードを使用して美しい幾何学アートをクラフト。
ループ、コントロールフロー、および特殊な機能のようなコードの基礎を使用して、ジオメトリの作品を生成します.
幾何学アート
畝 畝
畝 畝
インストール
ゲットゲット
$ go get -u github.com/lucasepe/g2d
準備完了のリリース
Here you can find g2d
already compiled のために
$ go get -u github.com/lucasepe/g2d
使い方
地域を処刑する
g2d
スクリプト$ g2d /path/to/my-script.g2d
実行するg2d
Web上のどこかに保存されたスクリプト$ g2d http://my-cool-site.com/remote/path/to/my-script.g2d
使用する--directory
(あるいは)-d
) 生成されたPNG画像の宛先フォルダを指定するフラグ.G 2 Dプログラミング言語構文
例プログラムは以下で見つかりますexamples/ これは標準ライブラリの一部だけでなく、これらのことを示しています.
種類
G 2 Dには次のデータ型があります.
bool
, int
, float
, str
, array
, and fn
.種類
構文
ノート
ブール
true false
int0 42 1234 -5
符号付き64ビット整数フロート
0.5 4.2 1.234 -5.5
64ビット倍精度浮動小数点数str
"" "foo" "\"quotes\" and a\nline break"
は不変であるアレイ
[] [1, 2] [1, 2, 3]
配列可能な配列append()
組み込みFN
fn(a, b) { ... }
カスタム関数を定義する結合
変数は
:=
演算子.a := 3
b := 1.2
変数は整数、浮動小数点、文字列、あるいは配列/ハッシュであるかもしれません.変数を更新するには、
=
演算子:a := 3 // Binding
a = a + 5 // Updating
算術演算
g2D
のすべての基本的な算術演算をサポートしますint
and float
種類a := 5
b := 3
c := a + b
d := c / 2
e := d * d
組み込みコンテナ
g2d
1つの組み込みコンテナがあります.array
.アレイ
配列は、線形シーケンスで項目を整理するリストです.配列は複数の型を保持できます.
a := [1, 2.3, "hello!"]
b := [false, true, "Hello World", 3, 3.13]
配列への追加はpush
組み込み関数:a = append(a, "another")
このように配列の内容を反復処理できます:i := 0
while( i < len(a) ) {
print( "Array index ", i, " contains ", a[i], "\n")
i = i + 1
}
定義を使用して、この出力を生成します.Array index 0 contains 1
Array index 1 contains 2.3
Array index 2 contains hello!
Array index 3 contains another
関数
g2D
用途fn
命名/呼び出しの目的で変数に割り当てられる関数を定義するには、次の手順に従います.sum := fn(a, b) { return a + b }
print(sum(5,3), "\n") // Outputs: 8
print(sum(2.5,7.5), "\n") // Outputs: 10
関数は他の関数に値を渡すことができます:addTwo := fn(a, b, f) {
return 2 + f(a, b)
}
tot := addTwo(68, 1, sum)
print(tot, "\n") // Outputs: 71
関数内部関数multiplier := fn(q) {
return fn(x) {
return x*q
}
}
multThree := multiplier(3)
print(multThree(2), "\n") // Outputs: 6
print(multThree(3), "\n") // Outputs: 9
print(multThree(4), "\n") // Outputs: 12
他のステートメント
g2D
サポートif-else
文.max := fn(a, b) {
if (a > b) {
return a;
} else {
return b;
}
}
print( max(1, 2) ) // Outputs: 2
switch文
g2D
サポートswitch
and case
式switch n := randi(10) {
case n % 2 == 0 {
print(n, " is even", "\n")
}
default {
print(n, " is odd", "\n")
}
}
一方ループ
g2D
つのループの構成をサポートしますwhile
ループi := 30
while (i > 0) {
print(i, " ")
i = i - 10
}
// 30 20 10
組み込み関数
コア
機能
説明
exit([status])
オプションのステータスまたは0ですぐにプログラムを終了しますinput([prompt]
指定したプロンプトをオプションで印字するprint(...)
文字列をstdoutに出力するprintf(pattern, ...)
文字列をstdoutに出力します(指定したパターンに従ってフォーマットされます).sprintf(pattern, ...)
ライクprintf(...)
がbool(val)
値をboolに変換するfloat(val)
進値strをfloatに変換しますint(val)
進値strをintに変換しますstr(val)
valの文字列表現を返すlen(iterable)
iterable ( stringあるいはarray )の長さを返すappend(array, val)
配列の最後に値をプッシュした配列を返す計算
機能
説明
abs(x)
xの絶対値を返すatan(x)
xのラジアンで返します.atan2(x, y)
y/xのアークタンジェントを返すcos(x)
ラジアン引数xの余弦を返すdegrees(angle)
ラジアンを度数に変換するhypot(p, q)
リターンsqrt(p*p + q*q)
lerp(start, stop, amt)
特定の増加で2つの数字の間の数を計算しますmap(v, b1, e1, b2, e2)
ある範囲から別の範囲まで数値を再マップするmax(v1....vn)
数値の一連の最大値を返すmin(v1....vn)
数列の最小値を返すpow(x, y)
リターンx**y
, yの基底x指数sin(x)
ラジアン引数xの正弦を返しますsqrt(x)
xの平方根を返すradians(angle)
度測定をラジアンで対応する値に変換するrandf([min], [max])
minとmaxの間にランダムなfloatを返します.デフォルトではmin = 0.0とmax = 1.0randi([min], [max])
minとmaxの間にランダムなintを返す基本グラフィック機能
機能
説明
size(w,[h])
図面のサイズを設定しますwとhの両方が指定された場合、長方形の画像が生成されますviewport(xMin, xMax, yMin, yMax, xOffset, yOffset)
ユーザ定義の座標系を設定するスクリーンリセットを実行するclear()
現在の色でイメージ全体を塗りつぶします全図面クリアfillColor(hexcolor)
塗りつぶし色を指定した色に設定します例例: fillcolor (fillColor(r, g, b, [a])
塗りつぶし色をR、G、B、値に設定しますstrokeColor(hexcolor)
指定した色に色を設定しますtrokecolorの例strokeColor(r, g, b, [a])
ストロークの色をR、G、B、値に設定するstrokeWeight(weight)
指定した幅に設定しますdashes([s1, s2, ...sn])
使用する現在の破線パターンを設定します.stroke()
現在のStroke色と線幅で現在のパスを描画しますfill()
現在のパスを塗りつぶします.オープンサブパスは黙示的です.この操作の後にパスがクリアされるfillAndStroke()
現在の塗りつぶし色で現在のパスを塗りつぶし、現在のストローク色でストロークしますこの操作の後にパスがクリアされるpush()
スタックにプッシュしてグラフィックコンテキストの現在の状態を保存するpop()
スタックから最後に保存されたグラフィックコンテキスト状態を復元するsnapshot([filename])
現在の図面でPNG画像を作成します.filenameが省略された場合、それはプログレッシブカウンタで自動生成されますsnapshot()
呼び出しあなたが後でアニメーションを生成したいならば、これは役に立ちます.xpos()
現在のx位置(現在の点がある場合)を返すypos()
現在のy位置(現在の点がある場合)を返すグラフィック
機能
説明
arc(x, y, r, sa, ea)
rの半径で( x , y )を中心とした円弧を描画します.パスはSA anglechenで始まり、EA角で終わり、反時計回りで指定された方向に移動しますcircle(x, y, r)
x , y座標と半径rを中心とした円を描画するellipse(x, y, rx ,ry)
座標を中心に楕円を描画し、半径RxとRyline(x1, y1, x2, y2)
点( x 1 , y 1 )から点( x 2 , y 2 )への行を描画するpoint(x, y)
指定された座標(サイズはストローク重量に等しい)でポイントを描画しますquad(x1, y1, x2,y2, x3,y3, x4,y4)
指定した頂点を使用して4つの辺の多角形を描画するrect(x, y, w, h, [tl, tr, br, bl])
左上の角( x , y )にある( w x h )長方形を描画します.1つの半径だけが指定された場合、全てのコーナーは同じ曲がりを持っています.triangle(x1,y1, x2,y2, x3,y3)
指定した頂点を使用して三角形を描画するstar(cx, cy, n, or, ir)
星CXを引いてください、CYは中心です、nはスパイクの数、またはIRパス
機能
説明
beginPath()
新しいパスを開始するclosePath()
現在の部分から現在のサブパスの先頭までの行のセグメントを追加するmoveTo(x, y)
指定したx , y点から始まる新しいサブパスの開始を設定するlineTo(x, y)
現在のパスから現在のパスを開始するarcTo(x1, y1, x2, y2, r)
指定した制御点と半径を使用して現在のサブパスに円弧を追加しますquadraticCurveTo(x1, y1, x2, y2)
現在の副経路に二次Bのzier曲線を加えます;x 1、y 1は制御点、x 2、y 2は終点である変換
機能
説明
rotate(angle, [x, y] )
反時計回りの回転で現在の行列を更新しますx、yが指定されると、この点について回転が発生します.そうでなければ原点に対して回転が起こります(角度はラジアンで)scale(sx, sy, [x, y])
SX、SYのスケーリングファクタと現在の行列を更新;x、yを指定すると、この点についてスケーリングが発生する.translate(x, y)
XとYへの翻訳で現在の行列を更新しますidentity()
現在の変換行列をID行列にリセットするtransform(x, y)
現在の行列でx、yを乗算し、変換された位置を返すテキスト
機能
説明
text(str, x, y, [ax, ay])
指定したアンカーポイントx、yに指定したテキストstrを描画しますアンカーポイントはx - w * ax , y - h * ayです.w , hはテキストの大きさです(デフォルトのax = 0.5 , ay = 0.5で指定した点でテキストを中心に)textWidth(str)
現在のフォントフェイスを指定したテキストstrの幅を返します.fontSize(size)
フォントの高さを設定するイメージ
機能
説明
imageGet(path/to/png)
ローカルファイルシステムからPNGイメージを読み込みますimageAt(im, x, y, [ax, ay])
指定したアンカーポイントx、yに指定したイメージimを描画します( AX , AYはXとYオフセットです) AX = 0.5 , AY = 0.5を使用して指定した点で画像を中心にしますReference
この問題について(コードを使用して美しい幾何学アートをクラフト.), 我々は、より多くの情報をここで見つけました https://dev.to/lucasepe/craft-beautiful-geometric-art-using-code-8i8テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol