Twitter Facebook Google+
この記事のすべての処理コードは、画像と一緒にGithub
昨年初め、私はパーリンフローフィールドのみを使用して二十五のデザインを思い付くために自分自身に挑戦し、それに続いて七十から五の異なる方法で描画しました。circle.In この記事では、私は別の簡単な挑戦を探る:十五の異なる方法が面白い線を描く。
制約
私はこの挑戦のために三つの制約を設定しました。 以前と同じように、私の最初の制約は、代わりに形や形に焦点を当てることができるように色の使用をforforegoでした。
第二に、各バージョンは、次の宣言に従って独立した再使用可能な関数として実装する必要があります:
void line(float x1, float y1, float x2, float y2, float weight, float value) { /* * Draw a line from (x1, y1) to (x2, y2) with a given * weight and darkness (value) */}
このようにして、後で他の作品に簡単に再利用できます。 上記では、2つの追加パラメータを指定します:ストロークの重さと値(または明度/暗さ)。
第三および最終的な制約として、各バージョンにはいくつかの世代/手続き型コンポーネントが必要でした。 つまり、関数が呼び出されるたびに、新しいバリアントが生成される必要があります。
十分な話。 結果はここにあります! お楽しみください!
十五行
私は私が探していたさまざまな重みと値の基本的な書式設定から始め、可能な限り最も単純な行に行きました。 以下では、ストロークの重みは左から右に増加し、値は上から下に軽くなります:
#1
私のすぐ次の衝動は、複数の細い線から線の太さを形成することでした。 線の端キャップは、weight
で指定された直径の円として見ることができます。最初の端点の周りの円の中にランダムな点を生成し、2番目の端点の周りに別の点を生成し、それらを指定された値に基づいて色を持つ線に接続し:
#2
完全な線を描くのではなく、代わりに線上のいくつかの点をサンプリングし、小さな楕円を描きました(正しい値を得るために必要な不透明度で)。):
#3
サンプル自体の密度だけを使用して、楕円とvarythe値に単色の黒い塗りつぶしを使用できるかどうかを試してみたかったのですが、かなりうまくいくよ:
#4
私はギアを少し切り替えることにし、ライン形状の中にいくつかのランダムな点を生成した後、(Lee Byronのfantastic Mesh libraryfor Processingを使用して)Delaunay図を作成しました。 値は、線の明るさによって決定されました:
#5
とにかくMeshライブラリを使用していたので、ランダムに生成されたポイントのaconvex hullだけを実行しようとすると思いました。 これは興味深いブラシlikeshapeを与えます:
#6
この時点で、私は前のスケッチのバリエーションを試してみたかった: 私たちの行の端点の近くで終わるランダムな行を生成する代わりに、私はそれらを行の形状のどこにでも生成したいと思っていました。 結果は微妙に異なっていましたが、違いは部分的に識別できませんでした:
#7
とにかく線の形状に沿ってランダムな点を生成していたので、代わりにいくつかの楕円を描くだけだと思いました。 私は指定された重量に基づいてランダムな直径を使用しますが、これは元の形状の境界の外に描画を開始する最初のものです:
#8
次のものでは、私は塗りつぶしを削除し、ちょうど薄いアウトラインストロークを使用しました。 ヒント:処理中に分数ストロークの重みを指定して、より細い線を取得することができます(例:strokeWeight(0.5)
)
#9
ランダムな位置と直径を持つ楕円を生成するのではなく、指定されたストロークの重みまでランダムな直径を持つ元の線にgeneratethemを生成することにしま:
#10
今回は#8と#9の間のバリエーションをjustdoneしていたので、ストロークのみのバージョンからフィルバージョンに行きました:
#11
今、私はストロークのみとフィルのみのバージョンを組み合わせることにしました。 私は異なる値を得るためにstrokeとfillにopposingcolorsを使用しました:明るい値は非常に明るい塗りつぶしを持つadark strokeを持っていますが、暗い値はamuch暗い塗りつぶしを持:
#12
私は、その位置にランダムなシフトで線に沿って歩く単純な歩行者を実装するために移動しました。 私は次の反復を得るためにこれらの束を重ねました:
#13
次に、ステップサイズを非常に少量に縮小して垂直な落書きを取得し、指定されたストローク重量に基づいてランダムな変動で終点から終点までの単