คำถามติดแท็ก graph

6
ทำไมจุดกำเนิดในพิกัดคอมพิวเตอร์กราฟิกที่ด้านบนซ้าย?
จากสิ่งที่ฉันได้เห็นเกือบทุกอย่างใช้พิกัดโดยที่ (0, 0) อยู่ที่มุมบนซ้ายและแกน Y บวกไปในทิศทางลงของหน้าจอของคุณ ทำไมถึงเป็นเช่นนี้ ทำไมแกน Y เชิงบวกแบบบวกไม่เพิ่มขึ้นอย่างที่แสดงในกราฟในคลาสคณิตศาสตร์อย่างง่าย

6
อัลกอริทึมที่มีประสิทธิภาพสำหรับขอบเขตของชุดของกระเบื้อง
ต้องการปรับปรุงโพสต์นี้หรือไม่? ให้คำตอบโดยละเอียดสำหรับคำถามนี้รวมถึงการอ้างอิงและคำอธิบายว่าทำไมคำตอบของคุณถึงถูกต้อง คำตอบที่ไม่มีรายละเอียดเพียงพออาจแก้ไขหรือลบออกได้ ฉันมีตารางเรียงต่อกันของขนาด จำกัด ที่ทราบซึ่งก่อตัวเป็นแผนที่ แผ่นบางแผ่นที่อยู่ในแผนที่จะถูกวางลงในชุดที่รู้จักกันในชื่ออาณาเขต ดินแดนนี้เชื่อมต่อกัน แต่ไม่มีใครรู้เกี่ยวกับรูปร่างของมัน ส่วนใหญ่มันจะเป็นหยดปกติ แต่อาจยืดออกไปได้ในทิศทางเดียวและอาจมีรูได้ ฉันสนใจที่จะค้นหาชายแดน (ด้านนอก) ของอาณาเขต นั่นคือฉันต้องการรายการของกระเบื้องทั้งหมดที่แตะหนึ่งในกระเบื้องในดินแดนโดยที่ตัวเองไม่ได้อยู่ในดินแดน วิธีที่มีประสิทธิภาพในการค้นหาสิ่งนี้คืออะไร? สำหรับความยากเป็นพิเศษมันเกิดขึ้นที่ไทล์ของฉันเป็น hexes แต่ฉันคิดว่ามันไม่ได้สร้างความแตกต่างมากนักแต่ละไทล์ยังคงมีพิกัด x และ y เป็นจำนวนเต็มและถ้ามีไทล์ฉันสามารถหาเพื่อนบ้านได้อย่างง่ายดาย ด้านล่างเป็นตัวอย่างบางส่วน: สีดำคืออาณาเขตและเส้นขอบสีน้ำเงินที่ฉันต้องการค้นหา สิ่งนี้ในตัวของมันเองไม่ใช่ปัญหาที่ยากเลยอัลกอริธึมง่ายๆสำหรับสิ่งนี้ใน pseudo-python คือ: def find_border_of_territory(territory): border = [] for tile in territory: for neighbor in tile.neighbors(): if neighbor not in territory and neighbor not in …

1
กราฟฉากหรือไม่กราฟฉาก?
ฉันดิ้นรนกับการตัดสินใจว่าจะใช้กราฟฉากในเกมของฉันหรือไม่ ฉันมีกรณีการใช้งานบางอย่างที่เรียกใช้เครื่องมือดังกล่าว แต่ฉันไม่สามารถรับรายละเอียดการใช้งานบางอย่างได้ พื้นหลังบางอย่าง: ฉันกำลังเขียนเกมประเภท Shooter อวกาศที่กำหนดเป้าหมายไว้ที่แพลตฟอร์มมือถือ (Android เป็นหลัก) และรหัสของฉันคือ C ++ เกือบทั้งหมด ฉันไม่ได้ใช้มิดเดิลแวร์ใด ๆ เครื่องยนต์เรนเดอร์และฟิสิกส์โดยเฉพาะเป็นการสร้างของฉันเอง เอนจิ้นฟิสิกส์ของฉันอัพเดทตำแหน่งของวัตถุตามแรงและแรงกระตุ้น ฉันยังไม่มีระบบแอนิเมชั่นในขณะนี้ แต่อาจไปที่จุดนี้ (ซึ่งอาจจะหรือไม่มีอะไรเกี่ยวข้องกับการสนทนานี้) ก่อนอื่นฉันจะอธิบายกรณีใช้งานที่ดี ฉันต้องการมีเจ้านายที่ประกอบด้วยชิ้นส่วนแยกกันหลายส่วนซึ่งแต่ละชิ้นสามารถเสียหาย / ถูกทำลายได้อย่างอิสระ ตัวอย่างเช่นฉันอาจมีหัวหน้าที่มีแขนที่สามารถได้รับความเสียหายโดยอิสระจากเอนทิตีที่เหลือ เมื่อแขนถูกทำลายเอฟเฟกต์อนุภาคไฟที่ไหล่ของผู้บังคับบัญชาอาจบ่งบอกว่าตอนนี้แขนถูกทำลายแล้ว เนื่องจากเป็นฉันได้ตัดสินใจลองแก้ไขปัญหาดังกล่าวด้วยข้อ จำกัด ในเครื่องมือฟิสิกส์ของฉันเพื่อให้วัตถุผสมดังกล่าวเข้าด้วยกัน ข้อ จำกัด หนึ่งข้อนั้นให้อิสระ 0 องศาและเป็นเมทริกซ์การแปลง นี่เป็นความพยายามที่จะหลีกเลี่ยงปัญหาที่ในที่สุดก็ปิดฉันออกจากฉากกราฟในสถานที่แรกที่อธิบายไว้ด้านล่าง เหตุผลหลักที่ฉันหันหลังให้กับการใช้กราฟฉากก็เพราะฉันไม่สามารถหาวิธีที่มีประสิทธิภาพในการเก็บวัตถุที่ซ้อนกัน (วัตถุที่สืบทอดการเปลี่ยนแปลงจากผู้ปกครองของพวกเขา) ทั้งในโลกฟิสิกส์และฉากเรนเดอร์ โลกฟิสิกส์ต้องการวัตถุในอวกาศ (หรืออย่างน้อยพื้นที่เดียวกัน) ในขณะที่ฉากเรนเดอร์ต้องการวัตถุในพื้นที่แม่ การติดตามตำแหน่งในพื้นที่ทั้งสองอาจช่วย (และหลีกเลี่ยงไม่ได้) แต่ทำให้เกิดความกังวลของตัวเองไม่ใช่อย่างน้อยก็เกี่ยวข้องกับประสิทธิภาพ อย่างไรก็ตามจากกรณีการใช้งานอย่างที่อธิบายไว้ข้างต้นฉันคิดว่าการสามารถ 'ทำงาน' ในพื้นที่ผู้ปกครองจะกลายเป็นเรื่องสำคัญมากและพยายามบังคับให้กลไกฟิสิกส์ของฉันรักษาความสัมพันธ์เหล่านี้ผ่านการใช้ข้อ จำกัด ที่จะเป็นปัญหา จากกรณีการใช้งานและสถานการณ์ที่อธิบายไว้ข้างต้นฉันควรใช้โครงสร้างกราฟเพื่อส่งผ่านการแปลงจากวัตถุหนึ่งไปอีกวัตถุหนึ่งหรือไม่ …

3
ตรวจสอบว่าชุดของกระเบื้องในตารางเป็นรูปร่างที่ล้อมรอบ
รับชุดไพ่ในตารางฉันต้องการตรวจสอบ: หากกระเบื้องทำให้รูปที่ล้อมรอบ หากกระเบื้องทำให้ตัวเลขที่ถูกปิดล้อมเมื่อคุณนับด้านข้างของกระดานเป็นขอบของรูป หากหนึ่งในสองคำสั่งก่อนหน้านี้เป็นจริงกระเบื้องใดเพิ่มเติมที่อยู่ภายในรูปที่ปิดล้อมรูปแบบไทล์เริ่มต้น ผู้เล่นจะเริ่มต้นด้วยการกดลงบนกระเบื้องหนึ่งแล้วลากนิ้วของพวกเขาไปยังกระเบื้องอื่น ๆ เพื่อสร้างห่วงโซ่ของกระเบื้องสีเดียวกัน ฉันจะตรวจสอบตามที่ฉันไปเพื่อดูว่าไทล์ถัดไปนั้นใช้ได้หรือไม่ อดีต หากผู้เล่นจะเริ่มต้นในกระเบื้องสีแดง, ย้ายที่ถูกต้องต่อไปของพวกเขาเพียงอย่างเดียวคือไปยังกระเบื้องสีแดงที่อยู่ติดกัน (เส้นทแยงมุมไม่นับ) เมื่อผู้ใช้ยกนิ้วฉันต้องสามารถตรวจสอบ 3 รายการข้างต้น ดังนั้นความคิดเริ่มต้นของฉันก็คือตั้งแต่ฉันตรวจสอบความถูกต้องของโซ่ทุกครั้งที่ฉันไปเมื่อผู้เล่นยกนิ้วของฉันฉันสามารถตรวจสอบว่ากระเบื้องตัวแรกและตัวสุดท้ายติดกันหรือไม่ (ฉันรู้อยู่แล้วว่าพวกมันมีสีเดียวกัน) หากพวกเขาอยู่ติดกันฉันมีลางสังหรณ์ว่าฉันได้ทำร่างที่ปิดล้อมและฉันจะมาที่นี่เพื่อลองดูว่าฉันพลาดอะไรที่ยิ่งใหญ่หรือไม่ การพิสูจน์ตรรกะ / คณิตศาสตร์บางอย่างที่ว่าลางสังหรณ์ของฉันถูกต้อง (หรือตัวอย่างที่พิสูจน์ว่าไม่ถูกต้อง) แต่นั่นคือเมื่อฉันคิดว่ารายการหมายเลข 2: ฉันยังต้องคำนึงถึงโซ่ที่ใช้ขอบของกระดานเป็นด้านข้างของรูปที่แนบมา ในกรณีนั้นรายการแรกและชิ้นสุดท้ายในห่วงโซ่จะไม่ติดกัน แต่ฉันก็ยังคงมีรูปที่ล้อมรอบ ดังนั้นตอนนี้ฉันกลับไปที่จตุรัสหนึ่งหน่อย ฉันจะทำอย่างไรกับพิกัดกริดของโซ่นี้เพื่อหาว่าพวกมันสร้างรูปที่ล้อมรอบหรือไม่? และเมื่อฉันจะรู้ว่าฉันมีตัวเลขที่ล้อมรอบสิ่งที่เป็นวิธีที่ดีที่สุดที่จะได้รับรายชื่อที่เพิ่มขึ้นของกระเบื้องทั้งหมดที่ตกอยู่ภายในขอบเขตของตนหรือไม่ ด้านบนฉันวาดภาพสิ่งที่ฉันคาดหวังว่าผลลัพธ์ที่เป็นไปได้ 4 ข้อของการทดสอบนี้คือ โซ่ไม่ได้ทำรูปที่ถูกปิดล้อม โซ่ทำรูปที่ปิดล้อม หากคุณนับด้านข้างของกระดานเป็นขอบ (หรือมากกว่าหนึ่งขอบ) ของรูปภาพโซ่จะสร้างรูปที่ล้อมรอบ ห่วงโซ่จะสร้างรูปที่ถูกปิดล้อม แต่มีจุดข้อมูลเพิ่มเติม (ผู้ใช้เลือกอย่างถูกต้องเป็นส่วนหนึ่งของห่วงโซ่) ซึ่งไม่ได้เป็นส่วนหนึ่งของรูปที่สร้างขึ้น กรณีที่ 4 นั้นยากที่สุดเพราะคุณต้องแยกลิงก์โซ่ "พิเศษ" เพื่อค้นหารูปที่แนบมาและชิ้นส่วนที่อยู่ข้างใน (แต่ไม่ต้องอยู่รอบ ๆ พื้นที่ …
10 algorithm  grid  graph 
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.