コードを使用して美しい幾何学アートをクラフト.


コードを使用して美しい幾何学アートをクラフト。


ループ、コントロールフロー、および特殊な機能のようなコードの基礎を使用して、ジオメトリの作品を生成します.

幾何学アート




インストール


ゲットゲット


$ go get -u github.com/lucasepe/g2d

準備完了のリリース


Here you can find g2d already compiled のために
  • MacOS
  • Linux
  • Windows
  • 使い方


    地域を処刑する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 falseint0 42 1234 -5符号付き64ビット整数
    フロート0.5 4.2 1.234 -5.564ビット倍精度浮動小数点数
    str"" "foo" "\"quotes\" and a\nline break"は不変である
    アレイ[] [1, 2] [1, 2, 3]配列可能な配列append() 組み込み
    FNfn(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を使用して指定した点で画像を中心にします