3

以下の 2 つの (パブリック ドメイン) 画像、フラワー オブ ライフペンローズ タイリングに似た、繰り返しパターンを含むポスター サイズの画像の作成に興味があります。

私の質問:

  1. 人々は通常、コンピューターでこのような画像をどのように作成しますか? そのような点は数学的に定義できるため、答えが「Adobe Illustratorを開いて交点を推測する」ではないことを願っています。しかし、幾何学模様に興味を持っているすべての人がプログラミングにも精通しているわけではないことも想像できます。
  2. そのような画像を作成するのに最適な環境は何ですか? 特に、Java、Python、Processing などから高解像度の画像を取得する最良の方法は何ですか? それとも Mathematica が最高のツールですか?

実際にポイントを計算して計算することは、私の考えでは難しいことではありません (少なくとも、この質問の焦点では​​ありません)。プログラムから高品質のビジュアル製品を得る最善の方法に興味があります。

4

7 に答える 7

5

このような画像を作成する最良の方法は、PostScriptの記述方法を学ぶことです。それはきれいな言語で、習得が容易で、よく知っていれば非常に強力です。

ビル・キャセルマンのマニュアルは、高品質の数学的なイラストを作成するための最良のリファレンスです。

于 2009-12-03T16:55:22.887 に答える
1

それらの画像がどのように作成されたかはわかりませんが、本からスキャンされたと思いますが、フラクタルを扱う私の仕事では<canvas>、主に要素のサイズを変更できるように、タグを使用することから始める傾向がありますそしてそれがより多くの反復を描いているのを見るので、私は最高の解像度を得ることができます。

これは、SVGのようなものの問題です。解像度を選択して作成する必要があり、スケールアップとスケールダウンがうまくいきますが、1つの解像度で開発した場合は、より高い解像度に移動してデモを行います。思ったよりも多くのギャップが表示される場合があります。

それを実行して静止画像として保存したい場合は、その時点でGIFを保存しているので、どのGUIでも機能しますが、たとえばWebページに保存したい場合は、見栄えを良くします。そのブラウザでできるように、javascriptの使用を検討することをお勧めします。

数学の部分は難しくないので、必要な再帰的アルゴリズムを導出すれば、画像の描画はかなり簡単です。サイズがしきい値を下回るまで、たとえば半径が3未満になるまで、次の反復に進む傾向があります。その後、終了します。

于 2009-12-03T16:56:15.973 に答える
1

#2 は一種の聖戦になるので、#1 について説明します。:)

この性質のイメージの鍵は再帰です。基本的に、それらは興味深い結果を得るために制御された方法で何度も繰り返される同じ画像です。フラワー・オブ・ライフを例にとってみましょう。中央の花びらを 6 回繰り返します (花びらの作り方はあなた次第です)。次に、花びらの先端を中心として使用し、花びらの 1 つを重ねて、さらに 6 つの花を作成します。次に、再帰的に外側に移動します。数回の「ラウンド」の後、停止して含まれる円を描きます。基本的に、recusion は、手動で行う場合に必要となるスタンプ、移動、および回転をシミュレートします。

この種のものをいじってみると、クールな新しいものを得るには実験が最善の方法であることが常にわかりました。もちろん、それは私の想像力の欠如かもしれません。:)

私はこの答えで数学があまり得意ではないことを知っていますが、それはあなたと実験次第です. COS と SIN は友達であり、クリクルには 360 度 (数学パッケージによっては 2pi ラジアン) があることを覚えておいてください。

編集:「花」の数学を追加する

(Xo, Yo) の中心から始まり、r の花の半径...

花びらの先端 (P0、P1 など) は、...

X = Xo + (sin((n * pi)/3 + (pi / 6)) * r)
Y = Yo - (cos((n * pi)/3 + (pi / 6)) * r)

ここで、n は花びらの番号 (0..5) です。

花びらの先端を計算したら、花びらを描き、先端から新しい花を描き始めます。また、境界円を設定して、その円の外側の点が描画されないようにします。

于 2009-12-03T16:42:16.517 に答える
1

SVGなどのベクター画像形式を使用します。これにより、任意の解像度に完全にスケーリングされます。

Inkscapeは、これらを作成するための優れたツールです。

ベクター画像フォーマットを取得したら、選択した言語に応じて、プログラミング言語で使用するための多くのオプションがあります。

例えば ​​-

于 2009-12-03T16:33:53.037 に答える
0

ええと、私は当時、中学校でコンパスを使って生命の花を描いていました...実際には非常に単純です...しかし、それがあなたが探している答えではないと思います。

基本的には、すべての点から大きな円(限界)に遭遇するまで、同じ半径の円を描くことで構成されます。

于 2009-12-03T16:55:28.300 に答える
0

JavaでiTextを使用してPDFを作成しようとします。PDF はベクター グラフィックスをサポートしているため、問題なくスケーリングできます。非常に多くのグラフィック要素がある場合、iTextがパフォーマンスに関してどれだけうまくスケーリングするかわかりません。

于 2009-12-03T16:48:26.800 に答える
0

A1. タートル グラフィックス、l システム、反復関数システム、空間充填曲線、およびおそらく私がよく知らない、またはまだ考えていない他の多くのアプローチを見たいと思うかもしれません。

A2. あなたが提案する言語のいずれかを使用して、これらのいずれかをプログラムできます。私は Mathematica が好きですが、誰もが Mathematica のコピーを持っているわけではなく、私もコピーを持っていることを知っています。なぜなら、私は数を計算する仕事をしていて、きれいな画像を作るために Mathematica で遊んでいるからです。しかし、無料の Processing は、アーティストにとって使いやすいように設計されており、あなたにとってはより良い出発点になるかもしれません. Mathematica と Processing の両方がその場でグラフィックスを実行するため、外部ライブラリを呼び出す必要はありません (または、どのライブラリを使用するかを気にする必要はありません)。

そして、ベクトルが進むべき道であると言うすべての人に同意しますが、紙やスクリーンへの最終的な制作ステップがレンダリングであることを忘れないでください。これにより、たとえば、出力形式として Postscript または PDF が使用される場合があります。

楽しむ

マーク

于 2009-12-03T16:51:18.603 に答える