การสร้างเลย์เอาต์ของเมืองในกริด


9

ฉันต้องการสร้างเลย์เอาต์ของเมืองในตารางสี่เหลี่ยมจัตุรัส

  • บ้าน 2x2
  • ถนนกว้าง 1 หน่วย
  • คลองกว้าง 1 หน่วย

เค้าโครงตัวอย่าง:

เค้าโครงตัวอย่าง

  • ฉันมีบ้านจำนวนหนึ่งเสมอถนนและคลองหลายสายเท่าที่จำเป็นเพื่อเชื่อมต่อพวกเขาทั้งหมด
  • บ้านต้องมีถนนสองชิ้นอยู่ด้านหน้าประตูหน้าบ้าน (ซึ่งชี้ไปทางขวาเสมอ)
  • มันคงจะดีถ้ามีทุ่งหญ้า (ว่างเปล่า) อยู่ข้างใน

มีอัลกอริทึมสำเร็จรูปสำหรับสิ่งนี้หรือไม่? ถ้าไม่ฉันควรจะนำไปใช้ในทิศทางใด

คำตอบ:


8

มีหลายวิธีขึ้นอยู่กับว่าคุณต้องการ นี่เป็นโครงร่างคร่าวๆของวิธีหนึ่งซึ่งฉันคิดว่าจะเหมาะกับคำอธิบายของคุณ:

ก่อนอื่นสร้างคลอง จากนั้นเริ่มวางบ้านแบบสุ่มสำหรับบ้านแต่ละหลังที่คุณวางให้วางถนนไว้ข้างหน้าและลากถนนจากชิ้นส่วนนั้นไปยังเครือข่ายถนนที่มีอยู่หากไม่สามารถทำได้หรือวางถนนข้างหน้าด้วยบล็อก 2x2 น่าเกลียดของ ถนนปรับตำแหน่งบ้าน ตรวจหาจุดถนนบางแห่งที่อยู่ติดกัน แต่อยู่ห่างจากถนนที่มีอยู่และพยายามสร้างทางลัดให้กับถนนเหล่านั้น

ประเภทนี้ส่วนใหญ่ใช้การทดลองและประสบการณ์ บ่อยครั้งที่คุณจะได้รับผลลัพธ์ที่ดีจากการทำรายละเอียดแบบสุ่มพิจารณาว่าเป็นไปตามเกณฑ์และยกเลิกและลองอีกครั้งหากไม่เป็นเช่นนั้น

สำหรับงานที่แน่นอนนี้คุณจะต้องมีความเข้าใจที่ดีของการค้นเส้นทางขั้นพื้นฐานนอกจากคุณจะเป็นผู้เชี่ยวชาญอยู่แล้วให้อ่านในหัวข้อ และจำไว้ว่าการหาเส้นทางไม่จำเป็นต้องเป็นเพียงเส้นทางที่สั้นที่สุดสำหรับส่วนสุดท้ายของคำอธิบายของฉันคุณอาจต้องการให้น้ำหนักกับเส้นทางที่นำมาใช้ใหม่ที่มีอยู่แล้ว

นี่ไม่ใช่เรื่องง่ายเลยหากคุณติดขัดกลับมาอีกครั้งและแสดงรหัสของคุณและตัวอย่างผลลัพธ์และอธิบายในรายละเอียดว่าคุณต้องการให้มันแตกต่างกันอย่างไร

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.