2011-01-30 66 views
6

Tôi đã tự hỏi nếu có ai biết một thư viện tốt cho tessellating một máy bay hyperbolic với đa giác (quan tâm chính của tôi nằm trong {8,3} tessellation). Tôi tìm thấy một số applet ở đây và ở đó, nhưng tách logic từ xem là khủng khiếp trong tất cả chúng. Nó sẽ là hoàn hảo nếu có một thư viện mà không xử lý đồ họa ở tất cả (vì tôi KHÔNG lập kế hoạch sử dụng Swing hoặc tạo applet của riêng tôi), chỉ cần tham số: {p, q} và số lượng lớp, sau đó trả về một mảng các dòng hoặc các điểm (hoặc các đối tượng đa giác). Nếu tồi tệ nhất đến tồi tệ nhất, tôi sẽ phải thực hiện thư viện của riêng tôi, vì vậy nó cũng có thể hữu ích nếu ai đó biết về một số giấy mô tả chi tiết thuật toán cho tessellation.Tessellation hyperbolic thư viện Java

EDIT

Bằng cách này, tôi nên đã nói rằng tôi tìm thấy một mát-looking hyperbolic tessellations applet bởi Don Hatch và bị kích thích lúc đầu. Sau đó, tôi nhìn vào những gì ông tuyên bố là source code. Bên trong JAR, tôi đã phát hiện ra các tệp có phần mở rộng là .prejava và hoàn toàn không có ý tưởng về những gì tôi đang xem - nó dường như là một sự kết hợp khủng khiếp của mã Java và C. Khi cố gắng kiểm tra chặt chẽ hơn, tôi đã ngay lập tức được khen thưởng với một cơn đau đầu. Rõ ràng anh ta đang cố gắng tối ưu hóa trình biên dịch Java ... hoặc ít nhất đó là những gì tôi thu thập được từ việc xem xét nội dung của javacpp. Không cần phải nói, tôi cực kỳ do dự để dành thời gian của tôi theo hướng dẫn của mình để tạo các tệp nguồn Java bằng trình biên dịch C, ...

+1

Đầu tiên, cảm ơn câu hỏi này - Tôi có nhu cầu tương tự. Ngoài ra, tôi biết bài viết này là cũ, nhưng tôi muốn chỉ ra cho độc giả trong tương lai mà nhận được mã nguồn của Don Hatch để biên dịch không phải là khó khăn. 'javacpp' chỉ là một tập lệnh perl chạy bộ tiền xử lý C trên các tệp .prejava để tạo các tệp .java bình thường. Tất cả những gì anh ta làm là cho phép sử dụng C#defines, #ifdefs, v.v., đó là những tính năng tốt đẹp để có. (Không có gì để làm với tối ưu hóa.) Nếu bạn có 'make',' perl', và 'cpp', bạn chỉ cần chạy' make' và tất cả đều biên dịch liền mạch. – LarsH

+0

Tuy nhiên tôi sẽ thêm rằng sự tách biệt giữa logic và xem có thể không tương ứng với những gì bạn cần. Hatch thực hiện tất cả mọi thứ về các phân đoạn đường thẳng, đó là nửa cạnh của các đa giác được lát gạch. Các phân đoạn đường này không được nhóm thành các đa giác hoặc thậm chí thành các cạnh đa giác. Vì vậy, nếu bạn cần phải làm những điều về đa giác, hoặc nhân rộng "họa tiết" (ví dụ như cá Escher), bạn có thể thấy khó có thể lấy từ mã của Hatch đến những gì bạn cần. Tuy nhiên, mã của anh ấy có vẻ hiệu quả nhất. – LarsH

Trả lời

2

nó có thể là một chút tắt chủ đề, tôi cũng đang tìm kiếm một sạch, lỏng lẻo kết hợp thực hiện của tessel hyperbolic. tôi tìm thấy thi này thẳng về phía trước của mô hình đĩa Poincaré http://haishibai.blogspot.com/2010/07/draw-hyperbolic-geometry-poincare-disc.html

Tôi cũng tìm thấy bài viết này có một số mã giả http://www.d.umn.edu/cs/thesis/ajit_datar_ms.pdf

họ nói về mã nguồn có sẵn: hyperart http://sourceforge.net/projects/hyperart/ nhưng đó là một exe biên soạn không có nguồn.

+0

Duuuuude! Tuyệt vời! Tôi sẽ phải xem xét kỹ hơn nhưng có vẻ như nó sẽ vô cùng hữu ích! – Andrey

+0

Tại sao bạn nói hyperart không có nguồn? Đây là: http://hyperart.cvs.sourceforge.net/viewvc/hyperart/ Muốn tất cả trong một kho lưu trữ? Nhấp vào "Tải xuống GNU tarball". – LarsH

+0

erf xấu của tôi, xin lỗi về điều đó và cảm ơn cho liên kết :) – nicoptere

3

Có một applet tại http://aleph0.clarku.edu/~djoyce/poincare/PoincareApplet.html. Có lẽ bạn có thể đọc mã.

+1

Tôi thấy cái này và có nguồn cho nó. Nhưng vì nó không phải là một thư viện và thiếu sử dụng ví dụ và tài liệu hướng dẫn tôi không hoàn toàn muốn đi sâu vào bên trong của nó làm việc chỉ được nêu ra.Kế hoạch của tôi là bắt đầu xem xét nguồn gốc của applet này chỉ khi tôi không tìm thấy một giải pháp thay thế tốt hơn. – Andrey

+0

Các hoạt động bên trong của mã applet này là khá rõ ràng ... dễ dàng hơn nhiều để làm việc với, IMO, hơn của Hatch. – LarsH

0

Ngoài ra, hãy xem ứng dụng Tyler mà Don và tôi đã viết. Nhấp vào hộp kiểm "Hyperbolic", sau đó nhập "8,8,8" vào trường "Độ cong dựa trên". Bạn cũng sẽ muốn chọn nút radio '8' ở bên phải để mỗi lần nhấp sẽ thêm một hình bát giác vào cạnh gần con trỏ chuột của bạn nhất. Bạn cũng có thể nhấp vào một phím số để chèn đa giác với số cạnh đó. Đọc hướng dẫn và bạn sẽ nhanh chóng có thể xây dựng chỉ là về bất kỳ loại ốp lát bạn có thể tưởng tượng. Đây có thể là tất cả những gì bạn cần, nhưng nguồn đầy đủ cũng có sẵn trên trang đó và không có công cụ xử lý trước.