อะไรคือความแตกต่าง / ซับซ้อน / มีประโยชน์เกี่ยวกับเวกเตอร์


21

ยกโทษให้ฉันถ้านี่ไม่ใช่คำถามจริง แต่เป็นสิ่งที่ฉันสับสนอย่างแท้จริง

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

ดังนั้นในที่สุดฉันก็ดูVectorบน Wikipedia และฉันก็ประหลาดใจ เว้นแต่ว่าฉันเข้าใจผิดเวกเตอร์ (เพื่อความเรียบง่ายบอกว่ามันเป็น 2D) เป็นเพียงพิกัด x และ y หากฉันเข้าใจผิดโปรดแก้ไขให้ถูกต้อง

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

นี่คือสิ่งที่ฉันสามารถใช้คำอธิบายบางอย่างใน ความช่วยเหลือใด ๆ ที่ชื่นชม


5
เวกเตอร์ค่อนข้างเรียบง่ายจนกระทั่งคุณเริ่มทำการหมุนเวียนในแบบ 3 มิติ ... จากนั้นคุณต้องมีควอเทอร์นชันและสิ่งเหล่านั้นจะทำให้คุณทึ่ง
Alistair Buxton

แนวคิดของเวกเตอร์ทำให้สับสนจริงๆ ฉันถามในวิชาคณิตศาสตร์, math.stackexchange.com/questions/429363 , math.stackexchange.com/questions/384927แต่ไม่มีการตอบสนองที่ชัดเจน มันเป็นความขุ่นมัวบริสุทธิ์ อาจเป็นคุณสามารถเพิ่ม
Val

1
ด้วยการเปรียบเทียบที่ไม่ดีทั้งหมดในคำตอบเหล่านี้จึงไม่น่าแปลกใจที่ผู้คนจะสับสน
Alistair Buxton

คำตอบ:


29

อย่าปล่อยให้วิชาคณิตศาสตร์ที่สำคัญได้ยินคุณเรียกจุดหรือพิกัดของเวกเตอร์!

2 มิติเวกเตอร์มี x และ y องค์ประกอบไม่ประสานงาน เวกเตอร์ไม่ได้กำหนดตำแหน่ง แต่จะกำหนดทิศทางและขนาด

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

เวกเตอร์และพิกัดไม่เหมือนกัน พวกมันดูคล้ายกัน แต่วิธีที่พวกเขาใช้มันแตกต่างกันมาก

พิกัดกำหนดตำแหน่งในโลก เวกเตอร์กำหนดทิศทางและขนาด พวกเขาทั้งสองมักจะใช้ร่วมกัน ตัวอย่างเช่น:

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

หรือในตัวอย่างนี้:

ป้อนคำอธิบายรูปภาพที่นี่

ตัวละครทั้งสองมีตำแหน่งและยิงเลเซอร์เป็นเวกเตอร์ เวกเตอร์ระหว่างสองตำแหน่งคือ (3,1) นั่นหมายความว่ามันเดินทาง +3 ตามแนวแกน X และ +1 ตามแนวแกน Y ตำแหน่งที่สามารถพบขนาดได้ด้วย Sqrt ((X X) + (Y Y))

ภาพรวมที่ดีของคณิตศาสตร์เวกเตอร์สามารถพบได้ในบล็อก Wolfire


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

2
+1 แต่ถ้าฉันจะหยิบ, ความเร็วเป็นเวกเตอร์และความเร็วคือขนาดของเวกเตอร์นั้น
Ergwun

2
@Val: ฉันจะไม่บอกว่ามันไร้สาระ มันระบุถึงความเข้าใจผิดของคำถามที่เวกเตอร์เป็นเพียงแค่พิกัด x และ y- การทำให้คำตอบเป็นทางการหรือถูกต้องมากขึ้นโดยการกล่าวถึง 'องค์ประกอบของเวกเตอร์สเปซ' จะไม่ทำสิ่งใดที่ดียกเว้นช่วยอธิบายว่าทำไมผู้คนถึงค้นพบพีชคณิตเวกเตอร์ที่น่ากลัว
Marcks โทมัส

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

4
@Val: ดีใด ๆ เชิงเส้นบรรยายพีชคณิตจะเห็นด้วยกับ Byte56: เวกเตอร์ไม่ได้เช่นเดียวกับตำแหน่งในพื้นที่ มันสมเหตุสมผลแล้วที่จะเพิ่ม“ 3 ไมล์ทางเหนือและ 1 ไมล์ทางตะวันออก” เป็น“ 1 ไมล์ทางใต้”; แต่มันก็ไม่สมเหตุสมผลที่จะเพิ่ม“ ตำแหน่งของทำเนียบขาว” ลงใน“ ตำแหน่งของเพนตากอน” เมื่อคุณกำหนดจุดอ้างอิงเป็น (0,0) คุณสามารถใช้เวกเตอร์เพื่อกำหนดจุดและในทางกลับกันดังนั้นในการรับรองบางอย่างพวกเขาก็จะดูเหมือนกัน แต่พวกเขาแตกต่างกัน บทคัดย่อ: เปรียบเทียบเลียนแบบพื้นที่กับเวกเตอร์สเปซ
PLL

9

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

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


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

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

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


1
ความสับสนส่วนใหญ่ของฉันคือสาเหตุที่ผู้คนคิดว่าเวกเตอร์มีความซับซ้อนดังนั้นสิ่งนี้จึงช่วย บางทีฉันคิดว่ามันง่ายเพราะฉันใช้เรขาคณิตในการเขียนโปรแกรมก่อนที่ฉันจะเรียนเรขาคณิตในระดับมัธยม
Starscape

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

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

2
@AssairBuxton และไม่มีสิ่งเช่น "ตำแหน่งร้านค้าเป็นเวกเตอร์" เกมจัดเก็บทั้งตำแหน่งและเวกเตอร์เป็นรายการส่วนประกอบสเกลาร์ในระบบพิกัดเฉพาะ ไม่ได้ทำให้พวกเขาเหมือนกัน ในการทำการเปรียบเทียบ: ints และ float ถูกเก็บไว้เป็นรายการของบิตไบนารี่ แต่หมายถึงสิ่งต่าง ๆ และมีการดำเนินการที่แตกต่างกัน
นาธานรีด

1
@Val คุณปิดฐานเรียบร้อยแล้ว เวกเตอร์ไม่ใช่ [p-position, v-velocity] มันไม่มีทั้งจุดและความเร็วภายใน มันเป็นเพียง [x-velocity, y-velocity, z-velocity] (สำหรับเวกเตอร์ความเร็ว) ประเด็นก็คือมันเป็นสิ่งที่แตกต่างจาก [ตำแหน่ง x, ตำแหน่ง y, ตำแหน่ง z]
นาธานรีด

7

เวกเตอร์ไม่ได้เลวร้ายจริงๆ มีคณิตศาสตร์เพียงเล็กน้อยที่ผู้คนไม่คุ้นเคย

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

การกระจัด (การเคลื่อนไหว) เป็นเวกเตอร์ (เช่นเลื่อนสองหน่วยขึ้นไปและหนึ่งหน่วยขวา), ตำแหน่งไม่ได้

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

ตัวอย่างเช่นหากคุณคูณเวกเตอร์ด้วยเมทริกซ์พิเศษที่เรียกว่า 'เมทริกซ์การหมุน' ดังนั้นเวกเตอร์จะหมุนตามจำนวนที่ระบุโดยเมทริกซ์ นอกจากนี้บางคนมีปัญหากับการคูณเมทริกซ์ ค้นหามันหากคุณไม่คุ้นเคย

นอกจากนี้คุณสามารถ 'สแต็ค' เมทริกซ์เหล่านี้ (หรือการทำงาน) ร่วมกัน เช่นเดียวกับหมุน 90 องศารอบแกน X จากนั้นหมุน 90 องศารอบแกน Y ถ้าเราเรียกเมทริกซ์ตัวแรก M และเมทริกซ์ N ตัวที่สองการดำเนินการจะเป็น v * M * N อย่างไรก็ตามการคูณเมทริกซ์ไม่ได้สลับกันดังนั้นจึงไม่เหมือนกับ v * N * M

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

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.