นี่คือคำถามที่ติดตามเพื่อคนอื่น ๆ นี้
ฉันต้องการทราบว่ามีรูปแบบทั่วไป / ทั่วไป / ดีที่สุดในการขยายการเป็นตัวแทนของโลก (ปัจจุบัน 160Kmx160Km) เพื่อให้พอดีกับพื้นที่วาดรูป (ปัจจุบันคือ 800x600 พิกเซล)
ฉันสามารถคิดถึงวิธีที่แตกต่างกันอย่างน้อยสี่วิธี:
หนึ่งเดียว (วิธีที่ฉันทำจนถึงตอนนี้) ฉันใช้งานฟังก์ชั่นระดับโลกsc(vector)
ซึ่งจะคืนค่าสำเนาเวกเตอร์ที่ลดขนาดลงซึ่งแน่นอนว่าใช้ได้ผล แต่ฉันต้องเขียนโค้ดเช่น:
drawCircle(sc(radius), sc(position))
ฟังก์ชั่นการตัดคำ ฉันสามารถกำหนดฟังก์ชั่นได้หลายอย่างแต่ละอันห่อมิดเดิลแวร์ดั้งเดิมไว้ ตัวอย่างเช่นฉันสามารถกำหนดได้myDrawCircle
ว่าจะปรับขนาดอาร์กิวเมนต์ที่จำเป็นต้องปรับขนาดก่อนแล้วจึงเรียกdrawCircle
ใช้ตัวหลัง นี่อาจทำให้โค้ดของฉันอ่านง่ายขึ้นและง่ายต่อการบำรุงรักษา แต่ฉันควรเขียนฟังก์ชั่นการพันซึ่งฟังดูงี่เง่า
มัณฑนากรฟังก์ชั่น ฉันก็สามารถตกแต่งฟังก์ชั่นมิดเดิลแวร์ที่มีอยู่ให้ปรับอัตโนมัติสำหรับพารามิเตอร์ทั้งหมดที่เป็น instantiation ของชั้นVector3D
แต่ปัญหาก็คือว่าฟังก์ชั่นเหล่านั้นยังทำงานร่วมกับพารามิเตอร์เดียวกันเป็นlist
หรือVector2D
เกินไปและมัณฑนากรจะมีวิธีที่จะรู้ว่าไม่มี รายการใดที่ต้องปรับขนาด (รัศมีเช่น) และไม่ (ค่า RGB)
initialisation พื้นผิว เมื่อกำหนดพื้นผิวที่ฉันกำลังจะวาดฉันสามารถกำหนดปัจจัยการปรับ (เพื่อที่ฉันจะใช้เมตรและไม่พิกเซลเป็นพารามิเตอร์) สิ่งนี้จะทำงานได้อย่างโปร่งใสสำหรับฉันและจะเป็นทางเลือกของฉัน แต่แน่นอนว่าควรใช้ในมิดเดิลแวร์ดังนั้นจึงไม่ใช่ตัวเลือกที่แท้จริง
... แต่อย่างใด: เนื่องจากนี่เป็นปัญหาที่พบบ่อยมากฉันสงสัยว่ามีรูปแบบที่จัดตั้งขึ้นซึ่งแก้ปัญหาที่ฉันไม่สามารถหาได้อย่างสง่างาม
PS: สำหรับโครงการนี้ฉันใช้ python (กับpygame ) แต่ถึงแม้ว่าคำตอบเฉพาะของไพ ธ อน / pygame ก็ดีมากฉันสนใจในคำอธิบายทั่วไป / ระดับสูงของรูปแบบมากกว่าการนำไปปฏิบัติอย่างเป็นรูปธรรม
ขอบคุณล่วงหน้าสำหรับเวลาและความเชี่ยวชาญของคุณ