Bagaimana cara menghasilkan ilustrasi 2D sederhana untuk menyertai jawaban geometri?

14

Dalam jawaban saya tentang Affine Transformations, saya membuat beberapa ilustrasi kecil untuk membantu penjelasannya.

Bagaimana Anda membuat PNG yang dapat diunggah dengan cepat yang mengekspresikan ide geometris atau matematika?

Pertanyaan ini dibuat untuk mendukung jawaban postscript saya tetapi dimaksudkan untuk meminta solusi lain yang mungkin menguntungkan jaringan SE secara umum. Tetapi untuk kredibilitas, jawaban harus tertaut ke pos di mana teknik ini sebenarnya telah digunakan, serta bagian "howto" yang memadai jika melibatkan lebih dari sesuatu yang jelas seperti "Pilih ekspor dari menu".

Ada dua pertanyaan meta di sini dan di sini berkenaan dengan bagaimana ruang lingkup pertanyaan ini mengingat prioritas yang dapat ditetapkan untuk situs kami.

luser droog
sumber
2
Saya pribadi melihat pertanyaan ini lebih banyak di PostScript daripada di komputer.
cifz
1
@cifz hak ini akan cocok GD.SE lebih baik. Tapi itu bukan alasan mengapa itu tidak bisa ada di sini.
joojaa
@citz, saya rasa saya mengerti maksud Anda. Bagaimana jika saya mengeluarkannya dari pertanyaan, dan membukanya untuk tikz dan asymptote dan yang lainnya.
luser droog
Saya menjawab di sini untuk menunjukkan bahwa ini agak dikemukakan sebagai pertanyaan, dan jawabannya pasti akan. Mungkin seluruh thread ini harus hidup di Meta kita, seperti ini tidak pada GD.SE . Setiap pemikiran, @cifz
joojaa

Jawaban:

13

Saya menggunakan berbagai alat tergantung pada kebutuhan khusus saat itu. Saya memiliki bias terhadap alat gratis, karena saya tidak memiliki akses ke hal-hal seperti Illustrator atau Mathematica.

Untuk keperluan seni vektor umum, saya menggunakan Inkscape gratis . Ini beroperasi pada file .svg dan juga dapat menjadikannya sebagai .pngs atau format bitmap lainnya yang berkualitas tinggi. Sebagai contoh, inilah diagram yang saya buat di Inkscape untuk menjelaskan pemetaan UV :

Untuk grafik fungsi 2D, saya sering menggunakan kalkulator grafik Desmos , yang memiliki kemampuan praktis untuk memungkinkan Anda berbagi grafik secara online sehingga orang lain dapat melihat dan memodifikasinya. Anda juga dapat membuat bilah geser yang dapat divariasikan untuk dimainkan dengan parameter kurva secara real time. Sebagai contoh, berikut adalah fungsi penajaman yang dapat dikonfigurasi .

Untuk tugas grafik yang lebih kompleks yang melibatkan sedikit pemrograman, saya menggunakan Maxima , sistem aljabar komputer gratis yang juga memiliki fitur grafik. Saya menggunakan Maxima untuk membuat grafik dalam jawaban ini tentang Gaussian blurs :

Ini agak terlalu kompleks untuk Desmos, karena melibatkan pemrograman membuat pendekatan Piecewise.

Untuk tugas grafik yang sangat aneh yang tidak ditangani dengan baik oleh hal lain, saya telah menggunakan Python dengan paket svgwrite untuk secara terprogram menghasilkan diagram menjadi file .svg. Ini kemudian dapat disentuh di Inkscape jika diinginkan dan diberikan ke bitmap menggunakan Inkscape atau ImageMagick. Saya menggunakan alur kerja itu untuk membuat gambar dalam posting blog ini dengan ketelitian mendalam , seperti ini:

Dalam hal ini saya ingin tidak hanya membuat grafik fungsi, tetapi menempatkan tanda centang secara terprogram dan tidak seragam sepanjang sumbu dan grafik, untuk menggambarkan nilai buffer kedalaman diskrit.

Dan akhirnya, jika tidak ada lagi yang cukup, saya akan menggunakan Python dengan numpy dan bantal untuk membuat gambar pixel-by-pixel. Begitulah cara saya membuat gambar noise Perlin dalam jawaban ini (dengan bantuan paket noise juga, dalam hal ini).

Nathan Reed
sumber
Nathan kaulah yang menulis itu tentang presisi kedalaman? Wow keren ... saya membaca hal itu dan itu sangat membantu! dunia kecil: P
Alan Wolfe
12

Secara pribadi pilihan racun saya adalah Adobe Illustrator. Aplikasi lain seperti inkscape, Corel Draw, Xara Designer juga akan melakukannya. Dalam keadaan darurat, PowerPoint akan bekerja. Meskipun saya pribadi tidak merekomendasikan PowerPoint karena masalah parah dengan model datanya, bahkan sulit adalah aplikasi menggambar yang paling banyak digunakan di dunia.

Ini juga bisa menjadi ide yang baik untuk memiliki aplikasi grafik. Saya pribadi menggunakan Mathematica untuk ini meskipun banyak aplikasi lain akan berfungsi juga. Atau jika mau, Anda dapat menggunakan Wolfram alpha yang merupakan versi online matematika gratis.

Penafian: Karena contoh adalah milik saya dan dukungan diri yang tidak tahu malu mengambil sedikit garam.

Ilustrator

Hal pertama yang harus Anda lakukan dalam aplikasi menggambar vektor adalah mengaktifkan kotak gertakan . Ini mengurangi kebosanan menempatkan garis secara akurat. Salah satu alasan utama saya tidak suka menggunakan Inkscape adalah cara inferior mengimplementasikan gertakan ini. PowerPoint sebenarnya hadir dengan grid gertakan secara default.

Saya tidak benar-benar puas dengan Illustrator karena tidak memenuhi semua kebutuhan saya. Tetapi tidak ada perangkat lunak sejauh ini (Maya digunakan untuk mengisi ceruk ini tetapi kemudian autodesk terjadi).

Alasan kedua saya memilih Illustrator adalah karena mengerti postscript secara asli. Jadi jika saya perlu memprogram sesuatu saya dapat melakukannya dengan cepat dan pembaruan dokumen yang ada saat kode saya matang Gambar 3 dilakukan dengan cara ini.

  • Sumber daya memperlihatkan akses snap, postscript, dan skrip java ke ilustrator dan tautan maju.

Berikut adalah beberapa contoh gambar yang telah saya lakukan di seluruh jaringan dengan Illustrator, sebagian besar dengan kekuatan grid snap:

Pawai lingkaran

Gambar 1 : Salah satu dari banyak gambar yang saya gambar di ilustrator di situs ini. Catatan: Saya adalah Illustrator yang cukup berpengalaman (terkadang komersial) dan ini sangat sederhana menurut standar saya.

Gambar pawai Circle di cukup sederhana untuk dilakukan. Cukup menggambar bentuk acak dengan mengklik sekitar. Setelah menonaktifkan snap ini dan biarkan panduan pintar melakukan pekerjaan Anda untuk Anda. Gambar garis ke titik terdekat pada garis, buat lingkaran ke garis dan (saya menghapus garis panduan setelah selesai). Bilas dan ulangi. Butuh waktu sekitar 3-5 menit untuk menggambar gambar begitu saya mulai bekerja.

Gelombang lanjutan

Gambar 2 : Gelombang Kelanjutan GD.SE .

Meskipun gambar ini tampak lebih rumit, tidak banyak yang berfungsi daripada gambar pertama. Ini lebih teknis sehingga selain grid snap I dan sekarang menggunakan tombol shift untuk membatasi garis sudut 45 derajat. Isi palka mudah hanya ditugaskan ke daerah dengan alat pembangun bentuk ilustrator. (contoh pembangun bentuk yang digunakan , tangkapan layar)

gambar tetra

Gambar 3 : Terkadang lebih mudah untuk memulai dari awal dalam bentuk postscript. Gambar ditambahkan ke pos di ENG.SE .

Akhirnya gambar yang benar-benar lebih mudah dilakukan dengan mengetikkan nilai dalam postscript. Ini relatif mudah dilakukan dalam bentuk postscript. Ive masih melakukan tipografi di ilustrator. Meskipun menggambar ini dengan tangan bukanlah masalah besar saya lebih suka tidak melakukannya, tetapi saya akan melakukannya jika saya harus melakukan penilaian dengan memanggil mata.

Mathematica

Mathematica luar biasa jika Anda ingin menjelajahi lebih banyak hal. Satu-satunya kelemahan untuk Mathematica adalah TIDAK murah. Tapi itu bisa melakukan hampir semua hal dengan cepat. Ive menggunakan Mathematica untuk beberapa gambar saya atas dasar nurbs .

Salah satu kompetensi inti Mathematicas yang mudah dikembangkan bahkan gambar yang cukup rumit tanpa banyak kesulitan. Itu juga dapat dengan mudah menghidupkan gambar sederhana Anda di dalam editor Anda .

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]
    ]
}]

Hasil dalam gambar yang sama seperti yang dimiliki orang lain. Membungkusnya di dalam tabel sesuai hasil di:

masukkan deskripsi gambar di sini

Gambar 4 : Animasi mudah dilakukan di dalam editor kode menggunakan Mathematica.

joojaa
sumber
4

PostScript + ps2eps + mogrify

Untuk jawaban Affine Transformations , saya menulis sebuah program postscript yang sangat kecil dan kemudian menyimpan beberapa salinan dengan nama yang berbeda dan mengedit masing-masing untuk melakukan setiap tugas yang berbeda: skala, menerjemahkan, memutar. Misalnya, inilah yang mendasar, ident.psyang tidak mengubah koordinat antara gambar merah dan gambar hitam. Saya membuat garis merah sedikit lebih besar dan selalu menariknya terlebih dahulu, sehingga keduanya muncul dengan baik di tempat dan terlihat (IMO). Saya mempratinjau dengan ghostscript dengan perintah vi (ex) :!gs %. ( semua file sumber )

%!
/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

Saya kemudian menggunakan ps2epsperintah dari psutilsuntuk menghitung kotak-kotak secara otomatis

$ 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.

Dan akhirnya menggunakan convertperintah imagemagick untuk menghasilkan gambar png yang dipotong. (Saya tidak memikirkan cara cepat untuk mengotomatisasi bagian ini. Sunting: seperti dikomentari, ini bisa dilakukan dengan mogrify -format png *.eps. Terima kasih, 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

Yang menghasilkan PNG, siap diunggah.

$ 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

luser droog
sumber
Saya tidak benar-benar melihat titik menghasilkan enkapsulasi dengan ps2eps Anda tidak bisa cukup ketik header eps di template Anda. Itu membuat instruksi lebih bersih (dan pengguna membutuhkan lebih sedikit ketergantungan). Alih-alih mengkonversi setiap file secara terpisah lakukanmogrify -format png *.eps
joojaa
Keren. Saya tidak tahu mogrify. Untuk ps2epsbagian ini, secara otomatis menghitung (dan menambahkan) info kotak-terikat. Menghilangkan bagian itu, convertakan menghasilkan gambar berukuran halaman penuh
luser droog
4

Saya hanya menggunakan Powerpoint untuk membuat diagram seperti itu dan berfungsi dengan baik segera setelah Anda merasa nyaman dengan primitif dasarnya. Ini mendukung semua operasi sederhana seperti rotasi, terjemahan, dll. Dan revisi terbaru juga memiliki geser dan transformasi 3D. Contoh:

masukkan deskripsi gambar di sini

masukkan deskripsi gambar di sini

Berikut adalah contoh diagram Powerpoint yang saya buat untuk jawabannya.

Untuk diagram yang lebih rumit, terutama dalam 3D, saya kadang-kadang menggunakan Blender dengan bahan yang tidak berwarna. Saya dapat menguraikan dan menunjukkan contoh jika relevan dengan pertanyaan Anda.

Sepertinya jsfiddle juga populer di sini.

ap_
sumber
Saya setuju --- jawaban saya kemungkinan tidak berlaku lagi karena saya belum menggunakan diagram dalam jawaban apa pun sejauh ini. Tapi saya berharap itu terjadi segera. Jadi, jika OK untuk jawaban ini berkeliaran selama beberapa hari, saya yakin saya akan dapat menemukan jawaban.
ap_
Selesai! Jawaban saya harus valid sekarang.
ap_
Luar biasa. Menghapus komentar saya sebelumnya.
luser droog
4

Bukan kotak alat definitif yang mungkin Anda cari, tetapi hanya alat tambahan yang saya gunakan sendiri: untuk grafis 3d, Blender mungkin berguna. Terutama jika Anda menggunakan plugin Export_SVG (tersedia di http://dl.dropbox.com/u/16486113/Blender/archivos/temp/SVG/export_svg.py dan http://blenderartists.org/forum/showthread.php? 282824-SVG-output-script )

Ini memungkinkan Anda untuk mendapatkan objek 3d Blender sebagai grafik vektor di Illustrator atau Inkscape. Saya merasa ini memberi saya awal yang cepat untuk membuat ilustrasi 3d sederhana .

Izinkan saya untuk menempelkan sebuah contoh. (Dalam contoh ini saya menggunakan banyak warna, tapi tentu saja, semuanya bisa dibuat hitam-merah-putih sebagai gantinya)

masukkan deskripsi gambar di sini

Tulisan gambar
sumber
pasti maksud Anda ilustrator dan inkscape (bukan ilustrator dan ilustrator)
joojaa
Saya yakin begitu! Tnx!
Ideogram
1

Saya menggunakan Powerpoint dan berbagai paket CAD (mahal). Saya menulis Powerpoint macro (kode VBA) untuk melakukan beberapa hal khusus seperti menggambar poligon kontrol kurva Bezier. Lalu saya menggunakan Windows Snipping Tool standar untuk mengambil tangkapan layar. Berikut ini beberapa contohnya:

masukkan deskripsi gambar di sini

masukkan deskripsi gambar di sini

masukkan deskripsi gambar di sini

masukkan deskripsi gambar di sini

Dan beberapa contoh lebih lanjut dari Math.SE

Satu
Dua
Tiga
Empat
Lima

bubba
sumber
Powerpoint sebenarnya cukup mahal mengingat hal-hal. Tidak apa-apa, setelah semua keterampilan menggambar datang dari Anda. Tapi setidaknya tikz, inkscape, blrnder dan postscript jauh lebih murah daripada powerpoint.
joojaa
Saya sudah tua, jadi waktu lebih penting bagi saya daripada uang. Inkscape bagus, tetapi tidak mungkin saya menghabiskan waktu menulis tikz atau kode Postscript untuk menghasilkan gambar.
bubba