Làm thế nào để tạo ra các minh họa 2D đơn giản để đi kèm với câu trả lời hình học?


14

Trong câu trả lời của tôi về Biến đổi affine, tôi đã thực hiện một số minh họa nhỏ để giúp giải thích.

Làm thế nào để bạn thực hiện một PNG có thể tải lên nhanh chóng thể hiện ý tưởng hình học hoặc toán học?

Câu hỏi này được đặt ra để hỗ trợ câu trả lời cho bài viết của tôi nhưng nhằm mục đích thu hút các giải pháp khác có thể có lợi cho mạng SE nói chung. Nhưng để đáng tin cậy, một câu trả lời phải liên kết đến một bài đăng trong đó kỹ thuật này thực tế đã được sử dụng, cũng như một phần "làm thế nào" đủ nếu nó liên quan đến nhiều hơn một cái gì đó rõ ràng như "Chọn xuất từ ​​menu".

Có hai câu hỏi meta ở đâyở đây liên quan đến cách phạm vi câu hỏi này theo các ưu tiên mà nó có thể đặt ra cho trang web của chúng tôi.


2
Cá nhân tôi thấy câu hỏi này nhiều hơn trên PostScript so với trên đồ họa máy tính.
cifz

1
@cifz đúng điều này sẽ phù hợp với GD.SE hơn. Nhưng đó không phải là lý do tại sao nó không thể ở đây.
joojaa

@citz Tôi nghĩ tôi hiểu ý bạn. Điều gì sẽ xảy ra nếu tôi đưa nó ra khỏi câu hỏi, và mở nó ra cho tikz và tiệm cận và không có gì.
luser droog

Tôi đang trả lời ở đây để chỉ ra rằng đây là một câu hỏi hơi khó hiểu và câu trả lời chắc chắn sẽ có. Có lẽ toàn bộ chủ đề này nên sống ở Meta của chúng tôi, như thế này hiện trên GD.SE . Mọi suy nghĩ, @cifz
joojaa

Câu trả lời:


13

Tôi sử dụng nhiều công cụ tùy thuộc vào nhu cầu cụ thể của thời điểm này. Tôi thiên vị với các công cụ miễn phí, vì tôi không có quyền truy cập vào những thứ như Illustrator hoặc Mathematica.

Đối với mục đích nghệ thuật vector nói chung, tôi sử dụng Inkscape miễn phí . Nó hoạt động trên các tệp .svg và cũng có thể hiển thị chúng dưới dạng .pngs chất lượng cao hoặc các định dạng bitmap khác. Ví dụ: đây là sơ đồ tôi tạo trong Inkscape để giải thích ánh xạ UV :

Đối với đồ thị chức năng 2D, tôi thường sử dụng máy tính đồ họa trực tuyến Desmos , có khả năng tiện dụng cho phép bạn chia sẻ biểu đồ trực tuyến để người khác có thể xem và sửa đổi chúng. Bạn cũng có thể tạo các thanh trượt có thể thay đổi để chơi với các tham số đường cong trong thời gian thực. Ví dụ, đây là một chức năng làm sắc nét cấu hình .

Đối với các tác vụ đồ thị phức tạp hơn liên quan đến một chút lập trình, tôi sử dụng Maxima , một hệ thống đại số máy tính miễn phí cũng có các tính năng vẽ đồ thị. Tôi đã sử dụng Maxima để tạo các biểu đồ trong câu trả lời này về làm mờ Gaussian :

Điều này là một chút quá phức tạp đối với Desmos, vì nó liên quan đến việc lập trình một phép tính gần đúng từng phần của một Gaussian.

Đối với các tác vụ đồ thị thực sự kỳ quặc mà không được xử lý tốt bởi bất kỳ điều gì khác, tôi đã sử dụng Python với gói svgwrite để lập trình sơ đồ thành các tệp .svg. Chúng sau đó có thể được đưa lên trong Inkscape nếu muốn và được hiển thị thành bitmap bằng Inkscape hoặc ImageMagick. Tôi đã sử dụng quy trình công việc đó để tạo ra các hình ảnh trong bài đăng trên blog này về độ chính xác chuyên sâu , như thế này:

Trong trường hợp này, tôi không chỉ muốn vẽ đồ thị một hàm, mà còn đặt các dấu tick theo chương trình và không đồng nhất dọc theo cả trục và đồ thị, để minh họa các giá trị bộ đệm độ sâu rời rạc.

Và cuối cùng, nếu không có gì khác đủ, tôi sẽ sử dụng Python với numpygối để hiển thị hình ảnh từng pixel. Đó là cách tôi tạo ra các hình ảnh nhiễu Perlin trong câu trả lời này (với sự trợ giúp của gói nhiễu , trong trường hợp này).


Nathan bạn là người đã viết rằng về độ chính xác sâu? Wow tuyệt vời ... tôi đã đọc điều đó và nó đã giúp rất nhiều! thế giới nhỏ bé: P
Alan Wolfe

12

Cá nhân tôi chọn chất độc là Adobe Illustrator. Các ứng dụng khác như inkscape, Corel Draw, Xara Designer cũng sẽ làm được. Trong một nhúm thậm chí PowerPoint sẽ hoạt động. Mặc dù cá nhân tôi không đề xuất PowerPoint do các vấn đề nghiêm trọng với mô hình dữ liệu của nó, thậm chí khó khăn có thể là ứng dụng vẽ được triển khai nhất trên thế giới.

Nó cũng có thể là một ý tưởng tốt để có một ứng dụng đồ thị trong tay. Cá nhân tôi sử dụng Mathicala cho việc này mặc dù nhiều ứng dụng khác cũng hoạt động. Hoặc nếu bạn muốn, bạn có thể sử dụng Wolfram alpha là phiên bản toán học trực tuyến miễn phí.

Tuyên bố từ chối trách nhiệm: Bởi vì các ví dụ là của tôi và sự chứng thực bản thân không biết xấu hổ với một nhúm muối.

Họa sĩ minh họa

Điều đầu tiên bạn nên làm trong bất kỳ ứng dụng vẽ vector nào là kích hoạt lưới chụp . Điều này làm giảm sự tẻ nhạt của các dòng đặt chính xác. Một trong những lý do lớn mà tôi không thích sử dụng Inkscape là cách nó kém hơn khi thực hiện việc chụp này. PowerPoint thực sự đi kèm với lưới chụp theo mặc định.

Tôi không thực sự hài lòng bởi Illustrator vì nó không đáp ứng tất cả các nhu cầu của tôi. Nhưng cho đến nay vẫn chưa có phần mềm nào (Maya sử dụng để lấp chỗ trống này nhưng sau đó autodesk đã xảy ra).

Lý do thứ hai tôi chọn Illustrator là nó hiểu bài viết nguyên bản. Vì vậy, nếu tôi cần lập trình một cái gì đó, tôi có thể thực hiện nhanh chóng và các tài liệu hiện có cập nhật khi mã của tôi đáo hạn Hình 3 được thực hiện theo cách này.

  • Tài nguyên hiển thị snap, postcript và java script truy cập vào Illustrator và liên kết chuyển tiếp.

Dưới đây là một số ví dụ về các bản vẽ mà tôi đã thực hiện trên mạng với Illustrator, chủ yếu bằng sức mạnh của lưới snap:

Diễu hành vòng tròn

Hình 1 : Một trong nhiều hình ảnh tôi vẽ trong họa sĩ minh họa trên trang web này. Lưu ý: Tôi là một Illustrator khá có kinh nghiệm (đôi khi thương mại) và điều này cực kỳ đơn giản theo tiêu chuẩn của tôi.

Hình ảnh diễu hành Circle khá đơn giản để thực hiện. Chỉ cần vẽ một hình dạng ngẫu nhiên bằng cách nhấp vào xung quanh. Sau này vô hiệu hóa snap và để cho các hướng dẫn thông minh làm công việc của bạn cho bạn. Vẽ các đường thẳng đến điểm gần nhất trên đường thẳng, tạo các vòng tròn cho đường thẳng và (tôi đã xóa các đường hướng dẫn sau khi hoàn thành). Rửa sạch và lặp lại. Tôi mất khoảng 3-5 phút để vẽ hình ảnh khi tôi bắt đầu không gian làm việc.

Sóng tiếp tục

Hình 2 : Sóng tiếp tục GD.SE .

Mặc dù hình ảnh này có vẻ khá phức tạp hơn, nhưng nó không hoạt động nhiều hơn hình ảnh đầu tiên. Đó là kỹ thuật nhiều hơn nên ngoài việc chụp lưới I và bây giờ sử dụng phím shift để giới hạn các đường tới góc 45 độ. Dễ dàng điền vào hatch chỉ được gán cho các khu vực với công cụ xây dựng hình dạng của họa sĩ minh họa. (ví dụ về trình tạo hình đang sử dụng , chụp màn hình)

hình ảnh tetra

Hình 3 : Đôi khi dễ dàng hơn để bắt đầu từ đầu trong phần tái bút. Hình ảnh được thêm vào để đăng trên ANH .

Cuối cùng, một hình ảnh thực sự dễ thực hiện hơn bằng cách nhập các giá trị trong phần tái bút. Nó là tương đối dễ dàng để làm trong postcript. Ive vẫn thực hiện các kiểu chữ trong họa sĩ minh họa. Mặc dù vẽ nó bằng tay không phải là một vấn đề lớn, tôi không muốn, nhưng tôi sẽ làm nó nếu tôi phải thực hiện cuộc gọi phán xét bằng mắt.

Toán học

Mathematica là tuyệt vời nếu bạn muốn khám phá mọi thứ nhiều hơn một chút. Hạn chế duy nhất đối với Mathematica là nó KHÔNG rẻ. Nhưng nó có thể làm gần như mọi thứ một cách nhanh chóng. Ive đã sử dụng Mathicala cho một số hình ảnh của tôi trên cơ sở Nurbs .

Một trong những năng lực cốt lõi của Mathicalas là dễ dàng phát triển các bức ảnh khá phức tạp mà không gặp nhiều rắc rối. Nó cũng có thể dễ dàng làm động hình ảnh đơn giản của bạn trong trình chỉnh sửa của bạn .

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

Kết quả trong cùng một bức tranh như những người khác có. Gói nó bên trong một bảng theo kết quả trong:

nhập mô tả hình ảnh ở đây

Hình 4 : Hoạt hình rất đơn giản để thực hiện bên trong trình chỉnh sửa mã bằng Mathicala.


4

PostScript + ps2eps + mogrify

Đối với câu trả lời Biến đổi affine , tôi đã viết một chương trình postcript rất nhỏ và sau đó lưu một vài bản dưới các tên khác nhau và chỉnh sửa từng bản để thực hiện từng nhiệm vụ khác nhau: chia tỷ lệ, dịch, xoay. Ví dụ, đây là cái cơ bản, ident.pskhông có gì thay đổi tọa độ giữa bản vẽ màu đỏ và bản vẽ màu đen. Tôi đã làm cho các đường màu đỏ lớn hơn một chút và luôn vẽ nó trước, vì vậy cả hai hiển thị chồng lên nhau và có thể nhìn thấy (IMO). Tôi đã xem trước với ghostscript bằng lệnh vi (ex) :!gs %. ( tất cả các tệp nguồn )

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

Sau đó, tôi đã sử dụng ps2epslệnh từ psutilsđể tính toán các hộp giới hạn tự động

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

Và cuối cùng được sử dụng của fantemagick convert lệnh để tạo ra các ảnh png đã cắt. (Tôi không nghĩ ra một cách nhanh chóng để tự động hóa phần này. Chỉnh sửa: như đã nhận xét, điều này có thể được thực hiện với mogrify -format png *.eps. Cảm ơn, 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

Mà tạo ra PNG, sẵn sàng để tải lên.

$ 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


Tôi không thực sự thấy điểm tạo ra đóng gói với ps2eps bạn không thể chỉ cần gõ tiêu đề eps trong mẫu của bạn. Nó làm cho trình hướng dẫn sạch hơn (và người dùng cần ít phụ thuộc hơn). Thay vì chuyển đổi từng tệp riêng biệtmogrify -format png *.eps
joojaa

Mát mẻ. Tôi không biết về mogrify. Về ps2epsphần mình, nó sẽ tự động tính toán (và thêm) thông tin hộp giới hạn. Bỏ qua phần đó, convertsẽ tạo ra hình ảnh có kích thước toàn trang
luser droog

4

Tôi chỉ sử dụng Powerpoint để tạo các sơ đồ như vậy và nó hoạt động rất tốt ngay khi bạn cảm thấy thoải mái với các nguyên thủy cơ bản của nó. Nó hỗ trợ tất cả các hoạt động đơn giản như xoay, dịch, v.v. và các phiên bản gần đây cũng có các biến đổi cắt và 3D. Ví dụ:

nhập mô tả hình ảnh ở đây

nhập mô tả hình ảnh ở đây

Dưới đây là một ví dụ về sơ đồ Powerpoint tôi đã thực hiện để trả lời.

Đối với các sơ đồ phức tạp hơn, đặc biệt là trong 3D, đôi khi tôi sử dụng Blender với các vật liệu không bóng. Tôi có thể xây dựng và hiển thị các ví dụ nếu nó có liên quan đến câu hỏi của bạn.

Hình như jsfiddle cũng phổ biến ở đây.


Tôi đồng ý --- câu trả lời của tôi có thể không còn giá trị nữa vì tôi chưa sử dụng sơ đồ trong bất kỳ câu trả lời nào cho đến nay. Nhưng tôi hy vọng điều đó sẽ xảy ra sớm. Vì vậy, nếu câu trả lời này ổn trong vài ngày, tôi chắc chắn mình sẽ có thể tìm được câu trả lời.
ap_

Làm xong! Câu trả lời của tôi nên có giá trị ngay bây giờ.
ap_

Thông minh. Xóa những bình luận trước đó của tôi.
luser droog

4

Không phải hộp công cụ dứt khoát mà bạn có thể đang tìm kiếm, mà chỉ là một công cụ bổ sung mà tôi tự sử dụng: đối với đồ họa 3d, Blender có thể có ích. Đặc biệt là nếu bạn sử dụng plugin Export_SVG (có sẵn từ http://dl.dropbox.com/u/16486113/Blender/archivos/temp/SVG/export_svg.pyhttp://blenderartists.org/forum/showthread.php? 282824-SVG-đầu ra-script )

Điều này cho phép bạn lấy các đối tượng 3D Blenders dưới dạng đồ họa vector trong Illustrator hoặc Inkscape. Tôi thấy nó mang lại cho tôi một khởi đầu nhanh chóng tốt đẹp để tạo ra đơn giản hình minh họa 3d .

Cho phép tôi dán một ví dụ. (Trong ví dụ này tôi sử dụng rất nhiều màu sắc, nhưng dĩ nhiên, tất cả có thể được tạo thành màu đen và đỏ trên nền trắng)

nhập mô tả hình ảnh ở đây


chắc chắn bạn có nghĩa là họa sĩ minh họa và inkscape (thay vì họa sĩ minh họa và họa sĩ minh họa)
joojaa

Tôi chắc chắn làm được! Tnx!
Ideogram

1

Tôi sử dụng Powerpoint và các gói CAD khác nhau (đắt tiền). Tôi đã viết các macro Powerpoint (mã VBA) để thực hiện một số điều đặc biệt như vẽ đa giác điều khiển của các đường cong Bezier. Sau đó, tôi sử dụng Windows Snipping Tool để chụp ảnh màn hình. Dưới đây là một số ví dụ:

nhập mô tả hình ảnh ở đây

nhập mô tả hình ảnh ở đây

nhập mô tả hình ảnh ở đây

nhập mô tả hình ảnh ở đây

Và một số ví dụ khác từ Math.SE

Một
hai
ba
bốn
năm


Powerpoint thực sự khá tốn kém khi xem xét mọi thứ. Nó ổn, sau khi tất cả các kỹ năng vẽ đến từ bạn. Nhưng ít nhất tikz, inkscape, blrnder và postcript đều rẻ hơn powerpoint.
joojaa

Tôi đã già, nên thời gian đối với tôi quan trọng hơn tiền bạc. Inkscape là tốt, nhưng không có cách nào tôi dành thời gian để viết mã tikz hoặc Postcript để tạo ra hình ảnh.
bong bóng
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.