Làm thế nào để chuyển đổi đối tượng điền vào dòng tốt?


7

Tôi đang cố gắng tìm cách chuyển đổi một đối tượng rắn điền vào hàng triệu (ít nhiều) dòng? ví dụ: Đối tượng điền vào dòng

Tôi ổn khi sử dụng bất kỳ công cụ nào nhưng lý tưởng nhất là tôi muốn đầu ra ở định dạng SVG (không cần thiết tho)

Chế độ xem phóng to: nhập mô tả hình ảnh ở đây

Câu trả lời:


10

Đây là một giải pháp một phần cho Inkscape. Một câu trả lời khác cho Illustrator cho thấy cách người ta có thể sử dụng hiệu ứng Scribble theo cách không ngẫu nhiên và có được đường zigzag đường thẳng mong muốn và kết quả chỉ cần một số sửa chữa thủ công nhỏ (= lấp đầy khoảng trống nếu hình dạng phức tạp)

Inkscape không có hiệu ứng như vậy. Nó có hiệu ứng Path tạo ra các ô nở thô, nhưng kết quả rất thô. Về lý thuyết, nó có thể giống như Scribble của Illustrator, nhưng đơn giản là nó không có khả năng điều chỉnh và độ chính xác cần thiết.

Người hỏi đã đưa ra một nhận xét một gợi ý: Có phần mở rộng bên thứ 3 của nhà sản xuất máy vẽ (= EggBot) có thể tạo ra một số mẫu điền tương tự. Tôi bỏ qua chúng vì tôi không có chúng. Tôi đã cố gắng để có được chúng, nhưng quá trình cài đặt đã dừng lại, vì Inkscape của tôi không được cài đặt theo cách tiêu chuẩn.

Nếu hình dạng của bạn đối xứng theo chiều dọc để nửa trên có thể được trình bày theo tọa độ XY là Y = f (x) trong đó f là một công thức được viết bằng các hàm toán tử và toán tử Python, bạn có thể vẽ biểu đồ zigzag với phần mở rộng Hàm vẽ đồ thị của Inkscape. Để làm ví dụ, chúng tôi kiểm tra vòng tròn của bạn.

Tôi phải gian lận một chút, bởi vì công thức chính xác cho một đường cong ngoằn ngoèo hình tam giác rất phức tạp. Nó cần modithologists phức tạp. Tôi không biết cách viết nó với các hàm của Python. Một lập trình viên có năng lực có thể có thể nói điều đó trong một giây.

Nhưng Python có một số công cụ toán học cơ bản thường được biết đến (= giống như trong Excel) như sin, pi và squareroot. Tôi sử dụng chúng, bởi vì đường cong kết quả có thể được chuyển đổi thành các đường thẳng sau này.

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

Chế độ xem thu phóng cao cho thấy đây thực sự là một đường cong mềm mại:

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

Để làm cho nó vẽ một hình vuông và goto Tiện ích mở rộng> Kết xuất> Trình vẽ chức năng. Tôi đã chọn hình vuông thể hiện x và y nằm trong phạm vi từ -1 đến +1.

Các chức năng được lấy từ thiết bị điện tử. Đó là sin điều biến biên độ (không có sóng mang!). Phần phong bì sqrt (1-x * x) là một nửa hình tròn. Số 40 cuối cùng xác định rằng có 40 chu kỳ đầy đủ của đường cong hình sin tức là 40 đỉnh trên cùng và dưới cùng. Nó đã được xác định để có tổng số 161 nút gần đúng. Có một nút trong mọi điểm giao nhau và cực đại.

Nếu bạn muốn nhiều hơn, giả sử 100 chu kỳ đầy đủ, bạn phải thay đổi 40 thành 100 và 161 thành 401.

Nếu một người chuyển đổi tất cả các nút thành các điểm góc, anh ta sẽ có dạng tam giác mà không cần tính toán. Đường dẫn sửa đổi mở rộng> Flatten Bezier thực hiện công việc. Đây là một ví dụ về làm phẳng:

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

Bạn nên áp dụng Flatten và sau đó chọn tất cả các nút dòng 0 trừ phần ngoài cùng bên trái và ngoài cùng bên phải với công cụ none và nhấn DEL. Sau đó làm phẳng lại và bạn đã hoàn tất - chỉ các đường thẳng, không có nút bổ sung:

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

Lưu nó dưới dạng SVG đơn giản để loại bỏ tất cả các phần riêng của Inkscape (không nên có vì kết quả là một đường dẫn, nó không có chức năng).

Tôi đoán phương pháp vẽ đồ thị hàm là không thực tế, vì vậy tôi thử một cái gì đó khác. Nếu các đường thẳng song song được chấp nhận điền (= không ngoằn ngoèo), người ta có thể xếp một loạt các đường và đặt mặt nạ cắt hoặc tách các đường phá hủy theo hình dạng

Inkscape có một số cách để tạo ra một loạt các đường thẳng

  • nhân bản lát gạch (phải được xem lại nếu muốn tách dòng)
  • Hiệu ứng đường dẫn Nội suy các đường dẫn
  • Tiện ích mở rộng tạo từ Đường dẫn> Nội suy

Phương pháp thứ 3 là đơn giản nhất. Nó tạo ra các dòng trung gian như một nhóm:

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

Các dòng nên được tách nhóm và kết hợp (Đường dẫn> Kết hợp) để giữ cho chúng chắc chắn là một đối tượng. Các nhóm dễ bị hỏng vì các thành viên của họ vẫn có thể được chọn độc lập. Ngoài ra, nhiều hoạt động đường dẫn không hoạt động với các nhóm, chúng cần một đường dẫn đơn hoặc đường dẫn kết hợp.

Hình ảnh tiếp theo hiển thị kết quả khi một hình được đặt trên các dòng và Object> Clip> Set được áp dụng:

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

Việc cắt có thể được lấy lại bất cứ lúc nào, các phần ban đầu vẫn còn nguyên vẹn, chỉ bị ẩn một phần. Không có cách nào để đưa bất cứ điều gì đến cuối dòng rõ ràng, bởi vì không có nút. Đối với điều này, các dòng phải được phân chia triệt để hoặc không nên cắt. Chụp vào giao lộ đường dẫn hoạt động rất tốt trong Inkscape.

Chúng ta có thể sử dụng ảnh chụp nhanh bằng cách vẽ hình zigzag hình tam giác bằng bút:

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

Đường ngoằn ngoèo màu xanh được thực hiện bằng bút bằng cách chỉ nhấp, một lần nhấp cho mỗi điểm giao nhau. Mất khoảng một phút. Đường ngoằn ngoèo màu xanh là một con đường độc lập.

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

Nếu điều đó làm phiền rằng một nửa các đoạn đường thẳng đứng và nửa còn lại bị nghiêng, thì nó đã được sửa bằng cách xoay các đường trước khi vẽ đường ngoằn ngoèo.

Một câu hỏi được đặt ra "Nếu một người chia các dòng cho ví dụ với Đường dẫn> Đường dẫn cắt, các mảnh có thể được kết hợp một cách tự động, không phải từng cái một, thành một đường ngoằn ngoèo. Theo lý thuyết CÓ. Nhưng có những khó khăn khiến kết quả không chắc chắn.

Lúc đầu, chúng tôi chia các dòng với cùng một đường cong màu đen. Một hình dạng trên cùng thực sự phân tách các dòng bên dưới nếu chúng được kết hợp (Đường dẫn> Kết hợp). Phần còn lại có thể được chọn và loại bỏ dễ dàng bằng cách sử dụng công cụ chọn bình thường trong "select if touch" -mode (= Alt + Drag):

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

Sau đó, chúng ta có thể chọn các nút cuối cùng của tất cả các dòng và thử chức năng nút Tham gia các nút được chọn. Kết quả thật đáng tiếc:

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

Tất cả các nút tham gia kết thúc hoạt động kết nối, khi được bó, chọn thứ tự không thể đoán trước. Các kết nối phải được thực hiện từng cái một. Dễ dàng hơn nhiều để vẽ zigzag bằng Bút như hình trên.


Thật hoàn hảo, tôi làm công việc như một ví dụ và chỉ là đầu ra hoàn hảo mà tôi muốn, chỉ một vấn đề là nếu hình dạng đầu ra cần là hình chữ nhật hoặc hình dạng bất thường!
MV

Bạn có thể sử dụng hiệu ứng viết nguệch ngoạc trong họa sĩ minh họa, nó thực hiện công việc tốt hơn bạn mô tả
joojaa

@ user287001 Cảm ơn hàng triệu người đã quan tâm và ủng hộ bạn. Nó làm công việc! Tuy nhiên, chỉ cần thêm một mẹo khác EggBot >> Hatch Fill cũng có thể được sử dụng nhưng nó cần nối các đường để tạo các đường ngoằn ngoèo.
MV

@joojaa Cảm ơn bạn đã phản hồi, nhưng hiệu ứng viết nguệch ngoạc là ngẫu nhiên và không có đường dẫn duy nhất cần thiết.
MV

@MV bạn có thể chỉnh sửa các cài đặt để loại bỏ tính ngẫu nhiên. Và sau đó bạn có thể tham gia vào những khoảng trống sai lầm.
joojaa

5

Hiệu ứng vẽ nguệch ngoạc minh họa làm nhiều việc bạn đang yêu cầu

Chỉ cần áp dụng viết nguệch ngoạc vào đường dẫn điền. Sau đó điều chỉnh cài đặt viết nguệch ngoạc để có 0 biến thể.

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

Sau đó, vì đây là hiệu ứng trực tiếp, bạn cần mở rộng nó với Object → Mở rộng Hình thức

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

Bây giờ Scribble không đo khoảng cách giữa các điểm giống khác một chút so với ví dụ của bạn. Điều này có thể hoặc không thể là một vấn đề, nó không được mô tả chính xác trong cài đặt vấn đề.


Ồ, chỉ bây giờ tôi mới biết về cài đặt viết nguệch ngoạc, một lời cảm ơn lớn :-)
MV

0

Nếu bạn có thể tìm cách mô tả toán học đường bao của hình dạng của mình, bạn có thể nhân hàm số sinvới một khoảng thời gian ngắn. Đối với ví dụ về đĩa, sin(100*x) * sqrt(1 - x**2)dường như hoạt động tốt:

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

Đây là một ví dụ trực tiếp , trong đó bạn có thể thay đổi các tham số bằng thanh trượt.

Có thể vẽ một hàm như SVG từ gnuplot , matplotlib hoặc trang web này .

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.