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

4
วิธีจัดการกับความแตกต่างระหว่างพิกัดหน้าจอ 2D และพิกัดคาร์ทีเซียน
ระบบพิกัดหน้าจอ / บิตแมป 2D ส่วนใหญ่มีแกน Y บวกที่ชี้ลง (โดยมีจุดเริ่มต้นที่มุมซ้ายบน) นี่เป็นสิ่งที่ตรงกันข้ามกับที่คนส่วนใหญ่คิดเชิงเรขาคณิตโดยมีแกน Y บวกชี้ขึ้น (โดยมีจุดกำเนิดอยู่ตรงกลาง) เกมส่วนใหญ่จัดการระบบพิกัด 2D สองระบบที่ต่างกันได้อย่างไร มีสองประเภทหลักของพิกัด (หน้าจอเทียบกับคาร์ทีเซียน) แต่อาจมีช่องว่างพิกัดที่แตกต่างกันมาก: พื้นที่สไปรท์พื้นที่โลกพื้นที่ดูพื้นที่หน้าจอ ฯลฯ ... พื้นหลัง: เดิมทีฉันสร้างพิกัดโลกในเกมของฉันให้ตรงกับแบบแผนการประสานงานหน้าจอ 2 มิติ สิ่งนี้ทำให้เป็นเรื่องธรรมดามากที่จะใช้รูทีนการวาดภาพกราฟิก แต่ปัญหาที่ละเอียดอ่อนเกิดขึ้นเมื่อใช้ฟังก์ชันตรีโกณมิติเช่น atan2 () ผลลัพธ์ของการป้อนพิกัด atan2 () หน้าจอ 2D มีความสับสนอย่างมากเนื่องจาก atan2 () สมมติว่าแกน y บวกขึ้น ดังนั้นฉันจึงเปลี่ยนพิกัดโลกของฉันให้เป็นไปตามระบบพิกัดคาร์ทีเซียนแบบคลาสสิก (โดยมีจุดเริ่มต้นที่ด้านล่างซ้ายของหน้าจอ) การใช้เหตุผลกับ atan2 () นั้นตรงไปตรงมามากกว่า แต่ตอนนี้การทำเหตุผลประเภทอื่น ๆ ทำได้ยากขึ้น: หากฉันคลิกที่หน้าจอที่นี่สิ่งที่สไปรต์อยู่ด้านล่าง …
23 2d  screen  coordinates 

1
ฉันจะวาดลูกศรที่ขอบของหน้าจอที่ชี้ไปยังวัตถุที่อยู่นอกหน้าจอได้อย่างไร
ฉันต้องการทำสิ่งที่อธิบายไว้ในหัวข้อนี้: http://www.allegro.cc/forums/print-thread/283220 ฉันได้ลองวิธีการต่าง ๆ ที่กล่าวถึงที่นี่ ก่อนอื่นฉันพยายามใช้วิธีที่อธิบายโดย Carrus85: ลองหาอัตราส่วนของสามเหลี่ยมไฮโปเทนไนต์สามเหลี่ยมสองอัน (ไม่สำคัญว่าคุณจะใช้ triagle ตัวไหนสำหรับอันอื่นฉันขอแนะนำจุดที่ 1 และจุดที่ 2 ตามระยะทางที่คุณคำนวณ) นี่จะให้เปอร์เซ็นต์อัตราส่วนของสามเหลี่ยมที่มุมจากสามเหลี่ยมขนาดใหญ่ จากนั้นคุณก็คูณค่าลบด้วยค่านั้นเพื่อให้ได้ค่าพิกัด x พิกัดและเลื่อนตามค่านั้นเพื่อให้ได้ค่าชดเชยพิกัด y แต่ฉันไม่สามารถหาวิธีคำนวณว่าวัตถุอยู่ห่างจากขอบของหน้าจอมากแค่ไหน ฉันลองใช้การฉายรังสี (ซึ่งไม่เคยทำมาก่อน) แนะนำโดย 23yrold3yrold: ยิงรังสีออกจากกึ่งกลางของหน้าจอไปยังวัตถุที่อยู่นอกจอ คำนวณว่าจุดใดที่สี่เหลี่ยมผืนผ้าตัดกับแสง มีพิกัดของคุณ ฉันคำนวณด้านตรงข้ามมุมฉากของสามเหลี่ยมที่เกิดขึ้นจากความแตกต่างในตำแหน่ง x และ y ของจุดสองจุด ฉันใช้สิ่งนี้เพื่อสร้างเวกเตอร์หน่วยตามเส้นนั้น ฉันวนลูปผ่านเวกเตอร์นั้นจนกระทั่งพิกัด x หรือพิกัด y ไม่อยู่บนหน้าจอ ค่า x และ y สองค่าปัจจุบันจากนั้นสร้างค่า x และ y ของลูกศร นี่คือรหัสสำหรับวิธีการฉายรังสีของฉัน (เขียนใน …

3
ปรับเกม Android ให้เหมาะกับขนาดหน้าจอที่แตกต่างกัน
ฉันกำลังสร้างเกม Android ที่อยู่ในแนวหน้าจอแนวตั้งเท่านั้น มันใช้งานได้ดีเมื่อฉันเรียกใช้บนโทรศัพท์ แต่เมื่อฉันเรียกใช้บนแท็บเล็ตแม้ว่าขนาดหน้าจอจะใหญ่กว่าบิตแมปทั้งหมดจะมีขนาดเท่ากัน มีวิธีใดที่จะทำให้บิตแมปอยู่ในสัดส่วนเดียวกันแม้บนหน้าจอขนาดต่างกันหรือไม่?
11 java  android  screen 

1
พื้นที่หน้าจอสู่อวกาศโลก
ฉันกำลังเขียนเกม 2D ที่โลกของเกมของฉันมีแกนxวิ่งจากซ้ายไปขวาแกนyวิ่งจากบนลงล่างและแกนzออกจากหน้าจอ: ในขณะที่โลกของเกมของฉันอยู่บนลงล่างเกมจะแสดงผลในลักษณะเอียงเล็กน้อย: ฉันกำลังทำงานในการฉายจากอวกาศโลกไปยังพื้นที่หน้าจอและในทางกลับกัน ฉันมีงานเดิมดังนี้: var viewport = new Viewport(0, 0, this.ScreenWidth, this.ScreenHeight); var screenPoint = viewport.Project(worldPoint.NegateY(), this.ProjectionMatrix, this.ViewMatrix, this.WorldMatrix); NegateY()วิธีขยายไม่ตรงกับสิ่งที่ดูเหมือนตั้งแต่ XNA ของYแกนวิ่งล่างขึ้นบนแทนบนลงล่าง ภาพหน้าจอด้านบนแสดงว่าสิ่งนี้ทำงานได้ทั้งหมด โดยทั่วไปฉันมีหลายจุดในพื้นที่ 3 มิติที่ฉันแสดงในพื้นที่หน้าจอ ฉันสามารถแก้ไขคุณสมบัติกล้องแบบเรียลไทม์และดูว่ามันเคลื่อนไหวไปยังตำแหน่งใหม่ได้อย่างไร เห็นได้ชัดว่าเกมจริงของฉันจะใช้สไปรท์แทนที่จะเป็นจุดและตำแหน่งกล้องจะได้รับการแก้ไข แต่ฉันแค่พยายามทำให้คณิตศาสตร์ทั้งหมดเข้าที่ก่อนที่จะถึงสิ่งนั้น ตอนนี้ฉันพยายามที่จะแปลงกลับในทางอื่น นั่นคือกำหนดxและyในพื้นที่หน้าจอด้านบนกำหนดจุดที่สอดคล้องกันในพื้นที่โลก ดังนั้นถ้าฉันชี้เคอร์เซอร์ไปที่มุมล่างซ้ายของรูปสี่เหลี่ยมคางหมูสีเขียวฉันต้องการอ่านพื้นที่โลก (0, 480) Zประสานงานที่ไม่เกี่ยวข้อง หรือค่อนข้างพิกัดzจะเป็นศูนย์เสมอเมื่อทำแผนที่กลับสู่อวกาศโลก เป็นหลักฉันต้องการใช้ลายเซ็นวิธีการนี้: public Vector2 ScreenPointToWorld(Vector2 point) ฉันพยายามหลายสิ่งหลายอย่างเพื่อให้การทำงานนี้ แต่ฉันไม่มีโชค ความคิดล่าสุดของฉันคือฉันต้องโทรหาViewport.Unprojectสองครั้งด้วยค่าที่ใกล้เคียง / ไกลzคำนวณผลลัพธ์Ray, ทำให้เป็นมาตรฐานแล้วคำนวณจุดตัดของเครื่องหมายRayด้วยPlaneที่แสดงถึงระดับพื้นดินของโลก อย่างไรก็ตามฉันติดอยู่ในขั้นตอนสุดท้ายและไม่แน่ใจว่าฉันทำสิ่งที่ซับซ้อนเกินไปหรือไม่ …
10 xna  c#  matrix  projection  screen 
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.