ジオメトリの回答に付随する単純な2Dイラストを作成する方法は?


14

アフィン変換に関する私の答えでは、説明を助けるためにいくつかの小さなイラストを作成しました。

幾何学的または数学的なアイデアを表現するアップロード可能なPNGをすばやく作成するにはどうすればよいですか?

この質問は、私のポストスクリプトの回答をサポートするために作られましたが、より一般的にSEネットワークに利益をもたらす可能性のある他のソリューションを求めることを目的としています。しかし、信頼性のために、答えはこのテクニックが実際に使用されている投稿と、「メニューからエクスポートを選択」のような明白なもの以上を含む場合の十分な「ハウツー」部分にリンクする必要があります。

私たちのサイトに設定される優先順位に照らして、この質問の範囲を決める方法に関して、ここここに 2つのメタ質問があります。


2
私は個人的に、この質問をコンピューターグラフィックスよりもPostScriptで見ています。
cifz

1
@cifz右これはGD.SEによりよく適合します。しかし、それがここにいられない理由ではありません。
-joojaa

@citzあなたの言っていることがわかると思います。私が質問からそれを取り出して、tikzと漸近線とその他のためにそれを開いたらどうでしょう。
luserはドローグ

ここで回答しているのは、これが質問として少し考えられていることを示すためであり、回答は間違いなくそうなります。GD.SEの場合のように、このスレッド全体がMetaに存在するはずです。@cifz
joojaa

回答:


13

現在の特定のニーズに応じて、さまざまなツールを使用しています。IllustratorやMathematicaなどにはアクセスできないため、無料ツールに偏見があります。

一般的なベクターアートの目的には、無料のInkscapeを使用します。.svgファイルで動作し、高品質の.pngまたはその他のビットマップ形式としてレンダリングすることもできます。たとえば、UVマッピングを説明するためにInkscapeで作成した図を次に示します。

2D関数グラフでは、オンライングラフ計算機Desmosをよく使用します。これは、他の人がグラフを表示および変更できるように、グラフをオンラインで共有できる便利な機能を備えています。スライダーを作成して、カーブパラメーターをリアルタイムで再生するように変更することもできます。たとえば、設定可能なシャープニング機能は次のとおりです

少しプログラミングを伴うより複雑なグラフ作成タスクには、グラフ作成機能も備えた無料のコンピューター代数システムであるMaximaを使用します。私はマキシマを使用して、ガウスぼかしに関するこの回答のグラフを作成しました。

これはDesmosにとって少し複雑すぎました。これは、ガウスの区分的近似をプログラムで作成する必要があったためです。

他のツールではうまく処理できない、本当に奇妙なグラフ作成タスクについては、Pythonをsvgwriteパッケージと共に使用して、プログラムで図を.svgファイルに生成しました。これらは、必要に応じてInkscapeで修正し、InkscapeまたはImageMagickを使用してビットマップにレンダリングできます。このワークフローを使用して、このブログ投稿で深度精度に関する画像を作成しました。

この場合、関数をグラフ化するだけでなく、目盛りを軸とグラフの両方に沿ってプログラム的に不均一に配置して、個別の深度バッファ値を示したいと思いました。

そして最後に、他に十分なものがない場合は、numpypillowで Pythonを使用して、ピクセル単位で画像をレンダリングします。これが、この回答でPerlinノイズイメージを作成した方法です(この場合は、ノイズパッケージも使用します)。


ネイサンは深さ精度について書いたのですか?うわー、クールな...私はそのことを読んで、それは大いに助けました!小さな世界:P
アランウルフ

12

個人的に私が選んだ毒はAdobe Illustratorです。inkscape、Corel Draw、Xara Designerなどの他のアプリも実行します。ピンチでもPowerPointは機能します。PowerPointはそのデータモデルに重大な問題があるため個人的にはお勧めしませんが、恐らく世界で最も展開されている描画アプリです。

グラフ作成アプリケーションを手元に置いておくこともお勧めします。私は個人的にこれにMathematicaを使用していますが、他の多くのアプリも動作します。または、必要に応じて、数学の無料オンラインバージョンであるWolfram alphaを使用できます。

免責事項:例は私のものであり、恥知らずな自己支持は塩をひとつまみと取るためです。

イラストレーター

ベクター描画アプリで最初にすべきことは、スナップグリッド有効にすることです。これにより、線を正確に配置する面倒さが軽減されます。Inkscapeを使用したくない大きな理由の1つは、このスナップを実装する方法が劣っていることです。PowerPointには、デフォルトでグリッドスナップが実際に付属しています。

Illustratorは私のニーズをすべて満たしていないので、Illustratorにはあまり満足していません。しかし、これまでのところソフトウェアはありません(Mayaはこのニッチを埋めるために使用されていましたが、その後オートデスクが発生しました)。

Illustratorを選択する2番目の理由は、PostScriptをネイティブに理解できることです。そのため、何かをプログラムする必要がある場合は、すぐに実行でき、コードが成熟するにつれて既存のドキュメントが更新されますImage 3はこのようにして行われます。

  • イラストレーターへのスナップ、ポストスクリプト、およびJavaスクリプトのアクセスと前方リンクを示すリソース

以下は、主にグリッドスナップの力により、Illustratorを使用してネットワーク上で行った描画の例です。

サークルマーチ

画像1:このサイトのイラストレーターで描いた多くの画像の1つ。注:私は非常に経験豊富なIllustrator(場合によっては商用)であり、これは私の基準では非常に簡単です。

サークルマーチの画像は非常に簡単です。クリックするだけでランダムな形を描くことができます。この後、スナップを無効にして、スマートガイドに作業を任せます。線上の最も近い点に線を描画し、線に円を作成します(iを実行した後にガイド線を削除しました)。すすぎ、繰り返します。ワークスペースを開始してから、画像を描くのに約3〜5分かかりました。

継続波

画像2:GD.SE 継続波

この画像は非常に複雑に見えますが、最初の画像ほど多くの作業はありません。より技術的であるため、グリッドスナップIに加えて、Shiftキーを使用してラインを45度の角度に制限します。ハッチングの塗りつぶしは、イラストレーターのシェイプビルダーツールを使用して簡単に領域に割り当てることができます。(使用中形状ビルダーの例、画面キャプチャ)

テトラ画像

画像3:ポストスクリプトの最初から簡単に開始できる場合があります。ENG.SEに投稿する画像を追加しました

最後に、ポストスクリプトに値を入力することで本当に簡単にできる画像。追記では比較的簡単です。私はまだイラストレーターでタイポグラフィをやっています。手でこれを描くことは大したことではありませんが、私は好きではありませんが、目で判断する必要がある場合はそれを行います。

Mathematica

物事をもう少し調べたい場合、Mathematicaは素晴らしいです。Mathematicaの唯一の欠点は、安価ではないことです。しかし、それはほとんど何でもすぐにできます。私はnubsベースで私の写真のいくつかにMathematicaを使用しました。

Mathematicaのコアコンピテンシーの1つは、非常に複雑な写真でも簡単に開発できることです。また、エディタ内で簡単な画像を簡単にアニメーション化できます

Graphics[{
    orig = {
        Table[
            GeometricTransformation[
                Line[{{0, 0}, {50, 0}}],
            RotationTransform[ang]],
            {ang, 0, 3 Pi/2, Pi/2}
        ],
        Line[{{20, 0}, {30, 20}, {40, 0}}]
    },
    Red,
    GeometricTransformation[
        orig,
        RotationTransform[Pi/6]
    ]
}]

他の人が持っているのと同じ絵の結果。結果としてテーブル内にそれをラップすると:

ここに画像の説明を入力してください

画像4:Mathematicaを使用してコードエディター内でアニメーションを簡単に作成できます。


4

PostScript + ps2eps + mogrify

アフィン変換の答えは、私は非常に小さなPostScriptプログラムを書いた後、別の名前の下に複数のコピーを保存し、それぞれ異なるタスクを実行するために各1を編集した:スケール、回転を翻訳します。たとえば、ident.psこれは基本的なもので、赤の描画と黒の描画の間の座標を変更するものは何もありません。赤い線を少し大きくして、常に最初にそれを描画するので、2つはうまく重ね合わせて表示されます(IMO)。vi(ex)コマンドでghostscriptでプレビューしました:!gs %。(すべてのソースファイル

%!
/axis {
    currentpoint 4 { 
        2 copy moveto
            50 0 lineto
            90 rotate
    } repeat pop pop 
} def 
/shape {
    20 0 moveto
    30 20 lineto
    40 0 lineto
    closepath
} def 

100 100 translate

gsave
% do transform here
currentlinewidth 1.5 mul setlinewidth
1 0 0 setrgbcolor
0 0 moveto axis shape stroke
grestore

0 0 moveto axis shape stroke

showpage

次に、ps2epsコマンドを使用してpsutils境界ボックスを自動的に計算しました

$ ps2eps -f *.ps
Input files: ident.ps rotate.ps scale.ps skewx.ps skewy.ps translate.ps
Processing: ident.ps
Calculating Bounding Box...ready. %%BoundingBox: 50 50 150 150
Creating output file ident.eps ... ** Warning **: Weird heading line -- %! -- ready.
Processing: rotate.ps
Calculating Bounding Box...ready. %%BoundingBox: 50 50 150 150
Creating output file rotate.eps ... ** Warning **: Weird heading line -- %! -- ready.
Processing: scale.ps
Calculating Bounding Box...ready. %%BoundingBox: 25 25 175 175
Creating output file scale.eps ... ** Warning **: Weird heading line -- %! -- ready.
Processing: skewx.ps
Calculating Bounding Box...ready. %%BoundingBox: 50 49 150 151
Creating output file skewx.eps ... ** Warning **: Weird heading line -- %! -- ready.
Processing: skewy.ps
Calculating Bounding Box...ready. %%BoundingBox: 49 50 151 150
Creating output file skewy.eps ... ** Warning **: Weird heading line -- %! -- ready.
Processing: translate.ps
Calculating Bounding Box...ready. %%BoundingBox: 50 50 165 165
Creating output file translate.eps ... ** Warning **: Weird heading line -- %! -- ready.

最後に、imagemagickのconvertコマンドを使用して、トリミングされたpng画像を作成しました。(私はこの部分を自動化する簡単な方法を考えていませんでした。編集:コメント通り、これはでできますmogrify -format png *.eps。ありがとう、joojaa!)

$ convert ident.eps ident.png

josh@cadabra ~/affine
$ convert scale.eps scale.png

josh@cadabra ~/affine
$ convert rotate.eps rotate.png

josh@cadabra ~/affine
$ convert skewx.eps skewx.png

josh@cadabra ~/affine
$ convert translate.eps translate.png

josh@cadabra ~/affine
$ convert skewy.eps skewy.png

PNGを生成し、アップロードする準備ができました。

$ ls -l *.png
-rw-r--r-- 1 josh None  587 Sep  1 21:16 ident.png
-rw-r--r-- 1 josh None 1431 Sep  1 21:21 rotate.png
-rw-r--r-- 1 josh None  798 Sep  1 21:19 scale.png
-rw-r--r-- 1 josh None 1133 Sep  1 21:22 skewx.png
-rw-r--r-- 1 josh None 1197 Sep  1 21:23 skewy.png
-rw-r--r-- 1 josh None  756 Sep  1 21:23 translate.png


テンプレートにepsヘッダーを入力するだけでは、ps2epsでカプセル化を生成するポイントを実際に見ることはできません。これにより、命令がよりクリーンになります(また、ユーザーの依存度が低くなります)。各ファイルを個別に変換する代わりにmogrify -format png *.eps
15

涼しい。私は知りませんでしたmogrifyps2epsパーツについては、境界ボックス情報を自動的に計算(および追加)します。その一部を省略、convertフルページサイズの画像を生成します
luserはドローグ

4

Powerpointを使用してこのようなダイアグラムを作成するだけで、基本的なプリミティブに慣れるとすぐに動作します。回転、平行移動などのすべての簡単な操作をサポートし、最近のリビジョンにはせん断および3D変換もあります。例:

ここに画像の説明を入力してください

ここに画像の説明を入力してください

これが、私が答えのために作成したパワーポイント図の例です

より複雑なダイアグラム、特に3Dの場合、シェーダーのないマテリアルでBlenderを使用することがあります。それがあなたの質問に関連する場合、私は例を挙げて詳しく説明します。

以下のように見えるjsfiddleはこの辺りにも人気があります。


私は同意します---これまでの回答で図を使用していなかったため、私の回答はおそらく無効になりました。しかし、私はそれがすぐに起こると期待しています。ですから、この答えが数日間ぶらぶらしてもいいなら、答えを見つけることができると確信しています。
ap_

できた!私の答えは今有効であるはずです。
ap_

優秀な。以前のコメントを削除します。
luserはドローグ

4

あなたが探しているかもしれない決定的なツールボックスではなく、私が自分自身を使用している単なる追加ツールです。3Dグラフィックスには、Blenderが役に立つかもしれません。特に、Export_SVGプラグイン(http://dl.dropbox.com/u/16486113/Blender/archivos/temp/SVG/export_svg.pyおよびhttp://blenderartists.org/forum/showthread.phpから入手できますか? 282824-SVG-output-script

これにより、IllustratorまたはInkscapeでBlender 3dオブジェクトをベクターグラフィックスとして取得できます。簡単な 3Dイラストレーションを作成するための素早い手始めになります。

例を貼り付けさせてください。(この例では多くの色を使用していますが、もちろん、代わりにすべて白と黒の赤にすることができます)

ここに画像の説明を入力してください


確かにあなたはイラストレーターと
インクスケープ

いいよ!Tnx!
イデオグラム

1

Powerpointとさまざまな(高価な)CADパッケージを使用しています。ベジェ曲線の制御ポリゴンを描くなどの特別なことを行うために、Powerpointマクロ(VBAコード)を書きました。次に、標準のWindows Snipping Toolを使用してスクリーンショットを取得します。ここではいくつかの例を示します。

ここに画像の説明を入力してください

ここに画像の説明を入力してください

ここに画像の説明を入力してください

ここに画像の説明を入力してください

そして、Math.SEからのさらなる例

一つ
二つ
三つ
四つ
ファイブ


パワーポイントは、実際に物事を考えると非常に高価です。わかりました、すべての描画スキルはあなたから来ています。しかし、少なくともtikz、inkscape、blrnder、およびpostscriptは、powerpointよりもはるかに安価です。
-joojaa

私は年寄りなので、お金よりも時間の方が重要です。Inkscapeは優れていますが、tikzまたはPostscriptコードを記述して写真を作成するのに時間を費やす方法はありません。
ババ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.