ฉันจะรักษารูปแบบสี่เหลี่ยมเมื่อเพิ่มหรือลบหน่วยได้อย่างไร


18

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

ความคิดบางอย่าง:

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

  • เมื่อบอทถูกลบออกให้ย้ายบอทที่อยู่ด้านหลังเข้าไปในที่ของมันและทำต่อไปจนกว่าจะถึงจุดสิ้นสุดของการก่อตัว จากนั้นให้ทำการจัดอันดับย้อนหลังให้มากที่สุดเท่าที่จะทำได้โดยการสับบอทในอันดับหลัง

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

UPDATE : ดังนั้นเมื่อพิจารณาถึงคำตอบของซาร่าห์ฉันจึงมีฟังก์ชั่นทั่วไปที่ดีซึ่งให้มิติที่ดี

แรกฉันแก้ไขสมการด้านล่างพร้อมกันสำหรับความกว้างและความสูงแล้วปัดคำตอบ

width/height=aspect ratio of your choice
width*height=number of bots

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

UPDATE

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

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


จำนวนสูงสุดของบอทในหน่วยคือเท่าใด? หากมันมีขนาดค่อนข้างเล็กคุณสามารถ hardcode จำนวนแถวและคอลัมน์ที่ขบวนมีสำหรับบอทจำนวนหนึ่ง
Exilyth

3
คุณสามารถโพสต์ภาพของการก่อตัวที่ถูกต้องกับการไม่ถูกต้องหรือไม่? ฉันมีปัญหาเล็กน้อยในการเข้าใจสิ่งที่คุณหลังจาก อนุญาตแถว / คอลัมน์ที่ไม่สมบูรณ์หรือไม่
MichaelHouse

3
คุณรู้หรือไม่ว่าวิธีนี้ใช้ไม่ได้กับหมายเลขเฉพาะ? เช่นกับบอต 7 ตัวคุณต้องสร้างหน่วย 3x2 ด้วยบอทเดี่ยวที่ด้านหลัง
Exilyth

1
อย่างนี้น่าอาย ฉันลืมหมายเลขเฉพาะอย่างสมบูรณ์ จากนั้นอาจเป็นสิ่งที่ดีที่สุดถัดไปที่จะอนุญาตเฉพาะแถวและคอลัมน์ที่เต็มไปเกือบ Bot หนึ่งตัวต่อแถวดูไม่ถูกต้อง แต่ Bot น้อยหนึ่งแถวไม่น่าดู
Tiby312

3
จำนวนเฉพาะไม่ใช่คนเดียวที่จะทำให้เกิดปัญหา - การเลือกขนาดของการก่อตัวโดยแฟคตอริ่งอาจทำให้คุณมีรูปร่างที่ยาวและผอมได้อย่างไม่มีเหตุผล เช่นถ้าคุณมี 14 บอทรูปแบบสี่เหลี่ยมที่สมบูรณ์แบบเพียงอย่างเดียวคือ 7x2 ในขณะที่มันอาจดูดีกว่าถ้ามีรูปแบบ 3x4 กับแถวพิเศษ 2 บอท
นาธานรีด

คำตอบ:


16

อีกเทคนิคหนึ่งคือการเลียนแบบที่ใช้โดยกองพันนโปเลียน (และอาจจะย้อนกลับไปไกลถึง phalanxes ในภาษากรีกหากไม่ได้เพิ่มเติม)

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

ด้านหน้าจะลดลงก็ต่อเมื่ออันดับหลังลดลงต่ำกว่าความหนาแน่นที่กำหนดไว้ล่วงหน้า ในทำนองเดียวกันเมื่ออันดับด้านหลังมากเกินไปความพิเศษเริ่มแรกเติมในอันดับเพิ่มเติมจากทั้งสองข้างและจากนั้นด้านหน้าจะเพิ่มขึ้น

เมื่อเปลี่ยน frontage ฉันแนะนำให้ให้บอทของคุณยื่นออกมาจาก back back ไปยัง flanks ทั้งสองเมื่อเพิ่ม frontage และยื่นจากด้านข้างทั้งสองไปที่ rank back เมื่อลด frontage

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

อัปเดต :
วิธีง่ายๆในการจัดการแถวหลังคือการแบ่งหน่วยแถวหลังออกเป็นสามกลุ่ม: หนึ่งในแต่ละด้านและหนึ่งในศูนย์ ขึ้นอยู่กับว่า frontage นั้นเป็นเลขคี่หรือคู่และจำนวนยูนิตแถวหลังสอดคล้องกับ 0,1 หรือ 2 mod 3 มีการจัดการหกกรณี

ในการปรับปรุงด้านบนให้พิจารณาการเว้นวรรคหน่วยสุดท้ายของแต่ละทีมแถวหลังเมื่อเติมลดลงต่ำกว่าเกณฑ์เช่นนี้:
xxx.x .... x.xxx.x .... x xxx
หรือนี่:
xx.xx ..x.xxx.x ... xxxx
ทำงานได้อีกเล็กน้อยเพื่อให้มีลักษณะที่ดียิ่งขึ้น

อัปเดต # 2 :
ความคิดเพิ่มเติมเกี่ยวกับความลึกของการสะสม ผลกระทบของการยิงวอลเลย์รวมกับดาบปลายปืนสมัยใหม่ทำให้ระดับความลึก 3 หรือ 4 เพียงพอในช่วงปลายศตวรรษที่ 18 และต้นศตวรรษที่ 19 (อังกฤษไม่ค่อยต่อสู้ใน 2 ระดับซึ่งตรงกันข้ามกับความเชื่อที่ได้รับความนิยมจนกระทั่งในช่วงท้ายของการสู้รบสำหรับหนึ่งมันทำให้สายของพวกเขายาวเกินกว่าที่จะสร้างสแควร์ได้อย่างรวดเร็ว) ก่อนหน้านั้นมันเป็นเรื่องธรรมดาที่จะมีความลึก หรือ 10 สำหรับพรรคกรีกที่ติดตั้ง Sarissa เลือกความลึกที่สร้างความประทับใจที่คุณต้องการ

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


ฟังดูเหมือนเป็นคำตอบที่สง่างามกว่ามาก ไม่จำเป็นต้องกังวลเกี่ยวกับจำนวนเฉพาะหรืออัตราส่วนภาพเลย แต่ก็ยังหลีกเลี่ยงแถวใด ๆ ที่มีจำนวนบอทต่ำผิดปกติและมีเงื่อนไขเดียวที่ต้องตรวจสอบคือแบ็คกราดเต็ม!
Tiby312

แต่ยึดมั่น สมมติว่าอันดับหลังมีเพียง 3 บอทเท่านั้นและอยู่ในคอลัมน์ 1, 2 และ 3 และฉันลบบางคนออกจากคอลัมน์ที่ 5 ซึ่งอยู่ใกล้กับด้านหน้า ฉันจะลงเอยด้วยจุดฟรีในแถวที่สองถึงแถวสุดท้ายในคอลัมน์ที่ 5 โดยที่ไม่มีบอทอยู่ข้างหลัง ใครควรเติมจุดนี้
Tiby312

บอทที่อยู่ใกล้ที่สุดในอันดับหลังสุด (เช่นหนึ่งในคอลัมน์ 3) ควรรันเพื่อเติมเต็ม หรือคุณสามารถประหยัดเวลาได้โดยให้บอทในคอลัมน์ที่ 3 และ 4 ของอันดับที่สองถึงสุดท้ายแต่ละขั้นตอนหนึ่งคอลัมน์ขึ้นไปย้ายช่องว่างไปยังคอลัมน์ 3 จากนั้นให้บอทที่คอลัมน์ 3 ก้าวไปข้างหน้าเพื่อเติม มัน. (IMO กลยุทธ์การค้นหาที่เป็น "ธรรมชาติ" ที่สุดน่าจะเป็นการผสมผสานระหว่างฮิวริสติกของทั้งสองซึ่งอาจมีการสุ่มเข้ามา)
Ilmari Karonen

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

1
@ Tiby312: ฉันเชื่อว่าคุณคิดมากเกินไป ลองดูโดยรู้ว่าคุณสามารถปรับได้ในภายหลัง
Pieter Geerkens

7

สมมติว่าหน่วยเป็นโครงสร้างข้อมูลเชิงเส้น (เช่นรายการ ) ของบอท

ก่อนอื่นคุณต้องเพิ่ม / ลบ bot ไปยัง / จากโครงสร้างข้อมูลและกำหนดจำนวนใหม่ของบอทในหน่วย

จากนั้นคุณต้องตรวจสอบจำนวนเงินใหม่ของแถวและคอลัมน์โดยใช้https://en.wikipedia.org/wiki/Integer_factorization

แน่นอนว่านี่อาจเป็นไปไม่ได้เนื่องจากจำนวนเฉพาะ เมื่อขนาดหน่วยใหม่เป็นจำนวนเฉพาะคุณต้องใช้ขนาดหน่วยที่ใหญ่กว่าถัดไปซึ่งไม่ใช่

จากนั้นเพียงวนซ้ำโครงสร้างข้อมูลกำหนดบอทเพื่อให้แถวและคอลัมน์

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

เพื่อให้หน่วยที่มีศูนย์กลางอยู่ที่มุมหนึ่งตำแหน่งของบอทจะถูกกำหนดโดย

หน่วยตำแหน่ง + ส่วนหัว * คอลัมน์จำนวน * bot แยกระยะทาง + ขวาเวกเตอร์ * แถวจำนวน * bot แยกระยะทาง

เพื่อให้หน่วยที่มีศูนย์กลางอยู่ตรงกลางตำแหน่งของบอทจะถูกกำหนดโดย

หน่วยตำแหน่ง + ส่วนหัว * (คอลัมน์จำนวน * หน่วยแยกระยะทาง - 0.5 * (จำนวนคอลัมน์ยุบ * ระยะห่างคั่น) ระยะทางขวา + ขวาจำนวนแถว * แถวจำนวน * แยกแยกระยะห่าง - 0.5 *

ที่ส่วนหัวเป็นชี้เวกเตอร์ในทิศทางที่หน่วยจะหันและrightVectorเป็นมุมฉากเวกเตอร์หัวข้อ

botSeparationDistance สามารถปรับแต่งเพื่อให้บอทยืนห่างกันหรือเข้าใกล้กันมากขึ้น

ถ้าคุณรู้สึกแฟนซีคุณสามารถชดเชยแถวสุดท้ายของบอทโดย rightVector * * * * * * * * 0.5 (numberOfColumns - actualNumberOfBotsInRow) ไปยังศูนย์ให้พวกเขาในการสร้าง


ใกล้กับสิ่งที่ฉันกำลังมองหา! การจองอย่างเดียวของฉันคือเมื่อกำหนดตำแหน่งใหม่บอทที่อยู่ทางขวาสุดของแถวหนึ่งอาจถูกกำหนดให้อยู่ที่ด้านซ้ายสุดของแถวถัดไปในสี่เหลี่ยมผืนผ้าใหม่ส่งผลให้บอตมีการเดินทางไกลและในกระบวนการ รับในทางของบอตอื่น ๆ พยายามเข้าถึงตำแหน่งที่ได้รับมอบหมายใหม่ของตนเอง ฉันกังวลว่าเมื่อบอทถูกเพิ่มหรือลบการก่อตัวทั้งหมดจะสับสนเพราะบอทเร่งรีบและวุ่นวายเพื่อไปยังปลายทางที่ห่างไกล
Tiby312

2
คุณสามารถคำนวณตำแหน่งใหม่ได้ตลอดเวลาจากนั้นย้ายบอทที่ใกล้ที่สุดไปยังตำแหน่งนั้นแทนการทำซ้ำเชิงเส้น
Exilyth

วิธีการทำเช่นนี้โดยไม่ต้องจบด้วยการคำนวณกำลังสอง? ฉันต้องค้นหาตำแหน่งที่ใกล้ที่สุดในอาเรย์ 2d จากตำแหน่งปัจจุบันของพวกเขาในอาเรย์ 2d สำหรับแต่ละบอทหากฉันเข้าใจสิ่งนี้อย่างถูกต้อง
Tiby312

ในแต่ละการวนซ้ำหนึ่งหน่วยจะถูกกำหนด (และไม่จำเป็นต้องพิจารณาในการวนซ้ำเพิ่มเติม) ดังนั้นรันไทม์จะเป็น O (n!) ซึ่งยังไม่ดีมาก จากนั้นอีกครั้งการสร้าง [โครงสร้างการเพิ่มประสิทธิภาพของตัวเลือก] และการทำแบบสอบถามแบบช่วง n นั้นไม่รวดเร็วเช่นกัน สิ่งเดียวที่ฉันนึกได้ตอนนี้คือการย้ายบอทสุดท้ายในแถวไปทางด้านหลังหรือเติมตำแหน่งสุดท้ายในแถวด้วยบอทจากด้านหลัง
Exilyth

เกี่ยวกับเรื่องนี้ สมมติว่ารูปแบบใหม่มีขนาดแถวที่เล็กกว่า จากนั้นในแต่ละแถวคุณจะได้บอทพิเศษ คุณกำหนดบอทนั้นลงหนึ่งอันและอีกอันอยู่ทางซ้าย จากนั้นในแถวถัดลงคุณมี Bots สองตัวโดยไม่มีที่ คุณกำหนดคนสองคนลงและอีกคนทางซ้าย จากนั้นคุณจะได้ 3 บอทโดยไม่มีที่ ดำเนินการต่อจนกว่าคุณจะมีแถวพิเศษที่ด้านล่าง ฉันแค่ถ่มน้ำลายที่นี่ ฉันไม่คิดว่ามันจะผ่านมาทั้งหมด แต่ดูเหมือนว่ามันจะทำงานได้อย่างรวดเร็ว
Tiby312

2

ฉันจะเก็บตำแหน่งที่เป็นไปได้ในกราฟที่มีค่ามากกว่าเป็นสี่เหลี่ยมเล็ก ๆ

[4][3][2][1]
[3][3][2][1]
[2][2][2][1]
[1][1][1][1]

ทุกครั้งที่หุ่นยนต์ถูกลบออกจะทำการค้นหาแม้ว่าจะมีหุ่นยนต์ตัวอื่น ๆ ทั้งหมดและค้นหามันในโหนดที่มีค่าน้อยที่สุด ใช้อัลกอริธึม A * หรือ BST เพื่อค้นหาพา ธ จากค่าที่น้อยที่สุดไปยังพื้นที่ว่าง หากไม่มีหุ่นยนต์ที่มีค่าน้อยกว่าหุ่นยนต์ที่ถูกลบจะไม่ทำอะไรเลย

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

[4.9][3.8][2.7][1.0]
[4.8][3.7][2.6][1.0]
[3.9][3.6][2.5][1.0]
[3.5][3.4][2.4][1.0]
[2.9][2.8][2.3][1.0]
[2.0][2.1][2.2][1.0]
[1.9][1.8][1.7][1.0]
[1.6][1.5][1.4][1.0]

ที่นี่ที่ 3.8 ถูกลบออกดังนั้นที่ 2.5 มาและเติมสถานที่

[o][x][o][ ]
[o][o][o][ ]
[o][o][r][ ]
[o][o][ ][ ]
[o][o][ ][ ]
[ ][ ][ ][ ]
[ ][ ][ ][ ]
[ ][ ][ ][ ]

ตัวอย่างอื่น. ที่นี่ 2.8 จะถูกลบเพื่อให้โหนดที่เล็กที่สุด 2.2 มาแทนที่ตำแหน่งของมัน

[o][o][o][ ]
[o][o][o][ ]
[o][o][o][ ]
[o][o][o][ ]
[o][x][r][ ]
[ ][ ][ ][ ]
[ ][ ][ ][ ]
[ ][ ][ ][ ]

คุณอาจต้องการวงแหวนของโหนดที่มีค่า 0 ซึ่งคุณไม่เคยใส่รอบนอกสำหรับอัลกอริทึมการค้นหาเส้นทางของคุณเพื่อค้นหารูด้วย

[0.0][0.0][0.0][0.0][0.0][0.0]
[0.0][4.9][3.8][2.7][1.0][0.0]
[0.0][4.8][3.7][2.6][1.0][0.0]
[0.0][3.9][3.6][2.5][1.0][0.0]
[0.0][3.5][3.4][2.4][1.0][0.0]
[0.0][2.9][2.8][2.3][1.0][0.0]
[0.0][2.0][2.1][2.2][1.0][0.0]
[0.0][1.9][1.8][1.7][1.0][0.0]
[0.0][1.6][1.5][1.4][1.0][0.0]
[0.0][0.0][0.0][0.0][0.0][0.0]

กวดวิชาที่ดีใน A * สามารถพบได้ที่นี่


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

@ Tiby312 คุณวางแผนที่จะสร้างสี่เหลี่ยมที่สมบูรณ์แบบอย่างไรกับ ... หุ่นยนต์ 7 ตัว?
ClassicThunder

ไม่เคยลืมฉันเกี่ยวกับตัวเลขสำคัญ ขอโทษ แต่ฉันยังคงคิดว่าการปรับจำนวนแถวและคอลัมน์สามารถหลีกเลี่ยงแถวหรือคอลัมน์ที่มีจำนวนบอตต่ำผิดปกติ
Tiby312

@ Tiby312 ฉันคิดว่าคุณดีกว่าที่จะตั้งอัตราส่วนภาพให้สอดคล้องกัน (เช่น 4: 3 หรือ 8: 5) มากกว่าการพยายามทำให้มันเป็นสี่เหลี่ยมที่สมบูรณ์แบบเสมอ
corsiKa
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.