เวกเตอร์คืออะไร?
เวกเตอร์เป็นชุดของพิกัดของมิติที่แตกต่างกัน แต่ละพิกัดในเวกเตอร์แสดงถึงตำแหน่งที่แน่นอนบางอย่างในทิศทางของพื้นที่ที่เวกเตอร์อยู่
- 1-D เวกเตอร์จะเป็น{1} ตัวอย่างเช่นนี่อาจเป็นตำแหน่งที่ X = 1 หรือเวลา t = 1
- 2-D เวกเตอร์จะเป็น{-4,3} ยกตัวอย่างเช่นนี่อาจเป็นตำแหน่งที่ -4 บนแกน X และ 3 บนแกน Y อาจเป็นอุณหภูมิ (3 องศา) ที่ตำแหน่ง (-4 เมตร) บนแกน X
- 3-D เวกเตอร์จะเป็น{1,2,3} นี่อาจเป็นตำแหน่งในพื้นที่ 1 ตามแนวแกน X, 2 หลังบนแกน Y และ 3 ขึ้นบนแกน Z หรืออาจเป็น 1 สีแดง 2 สีเขียวและสีน้ำเงิน 3 สี หรืออาจเป็นตำแหน่ง XY ( {1,2} ) ในบางครั้ง T ( {3} )
โปรดทราบว่าในทุกกรณีเราได้กำหนดความหมายให้กับเวกเตอร์สำหรับปัญหาของเรา แม้ว่าโดยทั่วไปคุณจะพบเวกเตอร์ที่ใช้สำหรับรูปทรงเรขาคณิตในเกม แต่ก็ไม่มีเหตุผลที่คุณจะไม่สามารถทำสิ่งอื่นกับพวกมันได้
เหตุใดฉันจึงใช้เวกเตอร์
ก่อนอื่นคุณไม่ต้องใช้เวกเตอร์ ตราบใดที่คุณติดตาม x และ y หรือพิกัดใด ๆ ที่คุณสนใจในบางวิธีคุณก็สบายดี
อย่างไรก็ตามข้อดีของการใช้เวกเตอร์คือการแสดงสิ่งต่าง ๆ อย่างเป็นระเบียบเช่นทิศทางและตำแหน่งและยังมีการดำเนินการทางคณิตศาสตร์หลายอย่างที่กำหนดไว้สำหรับพวกเขาที่ทำให้ชีวิตของคุณง่ายขึ้น
สำหรับตัวอย่างง่ายๆเหล่านี้พิจารณาสินค้า dot
สมมติว่าคุณมีระบบเรดาร์ในเกมสไตล์จากบนลงล่าง ศัตรูทุกตัวที่ปรากฏในส่วนของเรดาร์ (ลิ่มรูปวงกลมใน 2D) ควรได้รับจุดสีแดงเล็ก ๆ น้อย ๆ ในหน้าจอของคุณ ดังนั้นคุณต้องคิดออกว่าศัตรูอยู่ในส่วนเรดาร์ของคุณ
คุณสามารถทดสอบว่าศัตรูอยู่ในรูปสามเหลี่ยมหรือไม่ คุณสามารถทดสอบว่าศัตรูนั้นมีอยู่ในจุดตัดของทั้งสองพื้นที่ครึ่งหนึ่งของระนาบ / เส้นที่กำหนดทั้งสองด้านของภาคเรดาร์หรือไม่
หรือคุณอาจใช้ผลิตภัณฑ์ดอทเพื่อทำการตรวจสอบ นี่คือวิธี:
- สร้างเวกเตอร์จากศูนย์กลางของเรดาร์ออกไปทาง "ด้านหน้าของเรดาร์" ทำให้เป็นมาตรฐาน
- สร้างเวกเตอร์จากศูนย์กลางของเรดาร์ออกไปสู่วัตถุที่เราต้องการตรวจสอบการมองเห็นของเรดาร์ ทำให้เป็นมาตรฐาน
- รับผลคูณดอทของเวกเตอร์สองมาตรฐาน
- นำอาร์คโคไซน์ของผลิตภัณฑ์นั้นและตรวจสอบว่ามันน้อยกว่าครึ่งมุมของความกว้างของเรดาร์หรือไม่ ถ้าเป็นเช่นนั้นให้วาด blip
สิ่งนี้มีประโยชน์มากและตอนนี้ยังช่วยให้คุณมีเรดาร์ที่ชี้ไปในทิศทางที่ต่างกัน (เพียงแค่เปลี่ยนเวกเตอร์ไปข้างหน้า) และมีความกว้างที่ต่างกัน (เพียงแค่เปลี่ยนมุมความกว้างเรดาร์) - และคุณสามารถใช้รหัสเดียวกัน !
ทำไมฉันถึงใช้เวกเตอร์อีก?
หากคุณอยู่ใน 2D อาจเป็นวิธีที่ดีที่สุดในการบรรลุเอฟเฟกต์และการเคลื่อนไหวที่ซับซ้อน (การปั่นการปรับสเกล ฯลฯ ) คือการใช้กราฟฉาก ดาวเคราะห์มียานที่โคจรรอบตัวเรือมีโดรนที่โคจรอยู่ การคำนวณโดยไม่ใช้เวกเตอร์คณิตศาสตร์นั้นน่าเกลียดจริงๆ
ด้วยคณิตศาสตร์เวกเตอร์เราแทนแต่ละจุดและเมทริกซ์การแปลง 3x3 ดาวเคราะห์ใช้การแปลงของมันเรือใช้การแปลงและการแปลงของดาวเคราะห์และเสียงพึมพำใช้การแปลงและการแปลงของเรือและการเปลี่ยนแปลงของดาวเคราะห์
เมื่อดาวเคราะห์เคลื่อนที่คุณจะเปลี่ยนการแปลงของมันและเรือและเสียงพึมพำจะเข้าสู่ตำแหน่ง "ฟรี" โดยอัตโนมัติ รหัสทำความสะอาดมาก
ยังไม่มั่นใจ
เวกเตอร์ยังเป็นตัวแทนดั้งเดิมสำหรับตำแหน่งเรขาคณิตและการเคลื่อนไหวที่ใช้โดยไลบรารีกราฟิกเกือบทั้งหมด - และแน่นอน OpenGL และ DirectX คุณไม่น่าจะหนีไปได้โดยไม่ต้องใช้มัน
บทสรุป
Vectors เป็นเครื่องมือที่ทรงพลังสำหรับการเขียนโค้ดที่ชัดเจนซึ่งแก้ปัญหาเชิงเรขาคณิตได้อย่างหมดจดและสวยงาม