2012-10-18 33 views
7

Chúc mừng mỗi và tất cả!Hệ thống L cho mạng lưới đường bộ được sửa đổi như thế nào?

Tôi hiện đang xem xét việc tạo thủ tục của mạng lưới đường và tình cờ gặp thuật toán L-system. Từ những gì tôi hiểu từ các bài báo khoa học khác nhau về chủ đề, và các bài viết khác về các chủ đề, thuật toán được thay đổi để sử dụng "mục tiêu toàn cầu và ràng buộc địa phương", trong đó đường dẫn được sửa đổi để phù hợp với các giá trị đầu vào như địa hình và mật độ dân số. Bây giờ phần tôi hiểu, hoặc ít nhất là khái niệm tổng thể, nhưng làm thế nào tôi có nghĩa vụ phải sửa đổi các thuật toán?

Ngay bây giờ tôi có một chuỗi được sửa đổi theo dấu thời gian theo một bộ quy tắc. Sau đó tôi phân tích chuỗi và di chuyển và biến khi tôi đi qua các ký tự, hiển thị kết quả và nhận các mẫu đẹp trên màn hình.

Bây giờ, để tạo một mạng lưới đường chính, tôi vẫn nên sử dụng tiên đề cơ bản với một ruleset và sau đó áp dụng các ràng buộc? Và nếu có, một tập hợp các giá trị và quy tắc tốt có thể là gì?

Hoặc tôi có nên thay thế quy tắc cơ bản bằng các ràng buộc và mục tiêu toàn cầu không? Và nếu có, phần còn lại của thuật toán L-system gốc là gì?

Bất kỳ trợ giúp nào được đánh giá cao, và đối với bản ghi tôi đang làm điều này trong C# và XNA, mặc dù tôi reccon này là nhiều hơn trên một mặt phẳng lý thuyết.

Cảm ơn thời gian của bạn,

Karl

Trả lời

7

Vì vậy, tôi đã googling, đọc và hiểu hơn những tuần trước và tôi đã tìm ra một giải pháp cho các vấn đề mà tôi nghĩ tôi có thể chia sẻ. tôi tìm thấy bài đăng blog rực rỡ mà về cơ bản thẳng tất cả mọi thứ ra cho tôi:

http://www.newton64.ca/blog/?p=747#7472

Đó bài dựa trên một bài đăng blog thành lập ở đây:

http://mollyrocket.com/forums/viewtopic.php?t=730&sid=a9a2628b059a727cbde67309757ed178

Bây giờ, như xa như L-hệ thống đi, tôi không hoàn toàn chắc chắn liệu phương pháp này thực sự là một hệ thống L nữa. Chắc chắn, có những điểm tương đồng liên quan đến quá trình lặp lại của việc xây dựng mạng. Trong các hệ thống L, chuỗi phát triển qua các vòng lặp và các nhánh được tạo ra bằng cách sử dụng "[" hoặc "]" (ít nhất là trong các trường hợp tôi đã thấy), và trong cách tiếp cận tôi đang dùng một vòng lặp while và một hàng đợi ưu tiên Khá nhiều điều tương tự.

Tôi cũng muốn chỉ ra rằng tôi không hiểu hết các giấy tờ "mô tả" cách sử dụng hệ thống L để tạo mạng lưới đường, vì vậy lý do của tôi có thể hơi lệch ở đây. Nhưng đặt tên thuật toán và các ràng buộc sang một bên, tôi đã tìm thấy một giải pháp phù hợp với tôi, điều này rất tốt cho bây giờ.

Mã hóa vui vẻ!

Karl

+0

Vui lòng xem câu hỏi L-system khác này: http://stackoverflow.com/questions/15151958/procedural-generation-of-city-streets – Liam

+1

Cả hai liên kết đáng buồn bây giờ không còn nữa, nhưng tôi đã có thể tìm thấy trước đây trên máy quay lại nếu đó là bất kỳ việc sử dụng nào cho người đọc trong tương lai: http://web.archive.org/web/20130827130016/http://www.newton64.ca/blog/?p=747 –

+0

Cập nhật - điều này có thể có khả năng là bài đăng tên lửa mất tích molly - http://nothings.org/gamedev/l_systems.html –

5

Tôi là tác giả của bài đăng trên blog - vui vì bạn thấy hữu ích! Tôi không bao giờ có được xung quanh để hoàn thành Phụ tùng - và nếu không có gì khác, tôi sẽ phải change the name - nhưng bạn đã cho tôi suy nghĩ về nó một lần nữa.

Chắc chắn, thuật toán tôi mô tả có lẽ không còn là một hệ thống L nữa; quan trọng, mặc dù, tôi nghĩ rằng nó khá nhiều chức năng tương đương.Tôi là một nhà tích cực khi nói đến lập trình, vì vậy nếu nó hoạt động, biên dịch nó!

EDIT: Tôi đã gỡ xuống trang web cũ của mình nhưng tôi đã tạo lại bài đăng here. Hy vọng nó vẫn hữu ích!

+0

Rất vui được nghe từ bạn. Trước hết, tôi cho rằng tôi nợ bạn một ly bia, và tôi sẽ sẵn sàng mua cho bạn một cái khi bài viết của bạn giải quyết được vấn đề của tôi. Thứ hai, bạn nên thực sự mất Phụ tùng (với tên khác), âm thanh thú vị. Tôi thực sự thích thái độ của bạn đối với việc viết mã. Tôi có xu hướng tự làm như vậy. Tôi đã đấu tranh với các mục tiêu toàn cầu và những hạn chế của địa phương để tạo ra một mạng lưới đường bộ gọn gàng, và mọi thứ đang tiến tới đó. Tôi thực sự thích làm thế nào một vấn đề phức tạp được chia thành các phần nhỏ của toán học đơn giản như thế này. Cảm ơn một lần nữa! –

Các vấn đề liên quan