หากเวกเตอร์ 3D แสดงถึงจุดนั้นจะมีความยาวได้อย่างไร?


27

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

นั่นหมายความว่าขนาดเป็นเพียงระยะทางจากจุดกำเนิด (0, 0, 0)? หรือว่าฉันขาดอะไรไป?


14
พิจารณาสเกลาร์หรือที่รู้จักในชื่อตัวเลข มันอาจหมายถึงค่าสัมบูรณ์ความแตกต่างเปอร์เซ็นต์ ฯลฯ
ปีเตอร์

1
Normalizedในบริบทหมายถึงเวกเตอร์ใหม่ที่รักษาDirectionแต่มีMagnitude1 นั่นคือ Normalizedเวกเตอร์ถูกสร้างขึ้นโดยการปรับขนาดเวกเตอร์ดั้งเดิม
ธีระโรจน์

@heraot ขอบคุณมากประโยคนั้นช่วยฉันได้มาก!
Mohammed Noureldin

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

1
@ ปีเตอร์ฉันเกรงว่าฉันจะไม่เห็นด้วยกับคุณ นิยามเชิงพีชคณิตมาตรฐานของเวกเตอร์ค่อนข้างมากหมายความว่าไม่ใช่จุด มันมักจะมีประโยชน์ในการพิจารณาเช่นนี้เนื่องจากเวกเตอร์ตำแหน่งสามารถใช้เพื่อเป็นตัวแทนของคะแนนได้ แต่มันไม่ได้เป็นคะแนน "5 เมตร" มักจะเป็นระยะทาง (หรือความยาว) มันจะไม่เป็นเวลาหรือสี บ่อยครั้งที่มีประโยชน์ในการใช้สัญลักษณ์ต่าง ๆ - โดยส่วนตัวแล้วฉันจะไม่ใช้ (5, 5, 5) เพื่อแสดงถึงเวกเตอร์ฉันมักจะใช้ (5, 5, 5) ^ T (T สำหรับการย้าย) หรือใช้การแสดงคอลัมน์ที่เหมาะสม ในกรณีที่ได้รับการสนับสนุน เพราะการบอกว่าเวกเตอร์เป็นจุดที่แนะนำความไม่ถูกต้อง
Polygnome

คำตอบ:


20

นั่นหมายความว่าขนาดเป็นเพียงระยะทางจากจุดกำเนิด (0, 0, 0)

TL; DRคำตอบอาจจะเป็น: ใช่คุณสามารถจินตนาการมันเหมือนว่า

แต่ฉันไม่แน่ใจว่าสิ่งนี้อาจไม่นำไปสู่ความเข้าใจที่ผิด


เวกเตอร์ไม่ใช่จุดและมีความแตกต่างที่สำคัญระหว่างสองสิ่งนี้!

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

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

ความแตกต่างคือพูดคร่าว ๆ ว่าเวกเตอร์ไม่ได้แปลในขณะที่จุดคือ ลองนึกภาพเมทริกซ์ 4x4 ต่อไปนี้:

1.0   0.0   0.0   1.0
0.0   1.0   0.0   2.0
0.0   0.0   1.0   3.0
0.0   0.0   0.0   1.0

มันอธิบายการแปลเกี่ยวกับ (1,2,3) ตอนนี้เมื่อคุณมีรหัสเทียมต่อไปนี้

Vector3 tp = matrix.MultiplyPoint (new Vector3(2,3,4));
Vector3 tv = matrix.MultiplyVector(new Vector3(2,3,4));

จากนั้นtpจะเป็น (3,4,5) wheras tvจะยังคงอยู่ (2,3,4) การแปลเวกเตอร์ไม่เปลี่ยน (เพราะดังที่ได้กล่าวไปแล้วมันเป็นชุดของลูกศรทั้งหมดที่มีขนาดและทิศทางเท่ากัน)


ความจริงที่ว่า Unity ใช้Vector3คลาสสำหรับทั้งเวกเตอร์และคะแนนนั้นถูกต้องตามกฎหมาย แต่อาจทำให้สับสน ห้องสมุดอื่น ๆ dedicatedly ความแตกต่างระหว่างPoint3Dและบางครั้งก็มีฐานที่เหมือนกันเช่นVector3DTuple3D


3
คุณแน่ใจหรือไม่ว่า“ เวกเตอร์เป็นชุดของลูกศรทั้งหมดที่มีความยาวและทิศทางเท่ากัน” นั้นสมเหตุสมผลตามหลักคณิตศาสตร์ใช่ไหม ดูเหมือนว่าคุณกำลังพูดถึงคลาสที่เทียบเท่า แต่การเว้นวรรคเวกเตอร์ไม่ใช่สิ่งที่ฉันเคยอ่านว่าเป็นคลาสที่เทียบเท่า - ไม่ว่าคุณจะยกอะไรสำคัญ ... อะแฮ่มชี้ด้วยความแตกต่างระหว่างปริภูมิเวกเตอร์กับการเลียนแบบสเปซซึ่งเป็นชื่อทางคณิตศาสตร์สำหรับประเภทเวกเตอร์ทั้งหมด / ของคะแนนทั้งหมดตามลำดับ
leftaroundabout

3
A vector is, in fact, not a single arrowคุณพูดถูก Vector3 เป็นลูกศรเดียวนั้นทำให้ฉันสับสน +1 สำหรับพูดถึงประโยควิจารณ์นี้
Mohammed Noureldin

@leftaroundabout มีคำจำกัดความที่เป็นไปได้ที่แตกต่างกันสำหรับเวกเตอร์ (นอกเหนือจาก "บาง n-tuple ... " หรือมากกว่านั้น) ในพีชคณิตเชิงเส้นให้จินตนาการชุดของลูกศรทั้งหมดและความสัมพันธ์ (การเทียบเท่า! -) "มีความยาวและทิศทางเท่ากัน" การแยกกลุ่มของลูกศรทั้งหมดด้วยความสัมพันธ์นี้จะทำให้คลาสที่เทียบเท่า ฉันไม่ต้องการที่จะพูดถึงเรื่อง detials ทางคณิตศาสตร์ (ฉันไม่ใช่นักคณิตศาสตร์ด้วย) แต่หวังว่าจะได้ชัดว่าเวกเตอร์ไม่ใช่ "ลูกศรที่เริ่มต้นที่ (0,0,0)" จุด (... ) คือ: เวกเตอร์ไม่มี "ตำแหน่ง"
Marco13

2
มันซับซ้อนยิ่งขึ้นไปอีกโดยการใช้วิทยาศาสตร์คอมพิวเตอร์ของคำvectorว่าหมายถึงอาร์เรย์หรือหลาย! ใน C ++ คุณสามารถมีstd::vector<Vector3>ตัวอย่างได้ vectorของVectors
user1118321

Ah ดังนั้นสิ่งที่คุณหมายถึงคือเริ่มต้นจากเลียนแบบพื้นที่X , คุณกำหนดสำหรับการใด ๆ สองจุด ( P , Q ) ลูกศรs ∈ ( X ) เป็นเส้นทางที่สั้นที่สุด (เช่นอนุพันธ์ฟังก์ชั่นที่มีน้อยที่สุดอนุพันธ์แน่นอนบูรณาการ) s : [0,1] → Xดังกล่าวว่าs (0) = Pและs (1) = Q แล้วพื้นที่ของเวกเตอร์คือชุดชั้นเรียนเท่าเทียม( X ) / ~ ที่s ~ σถ้า∂ s / ∂ T = ∂ σ/ ∂ เสื้อสำหรับทุกเสื้อ ∈] 0,1 [? มันสมเหตุสมผลแล้ว แต่ฉันไม่คิดว่าคุณจะใช้มันเป็นนิยามของเวกเตอร์ได้เพราะความแตกต่างนั้นขึ้นอยู่กับพวกมัน
leftaroundabout

36

นั่นหมายความว่าขนาดเป็นเพียงระยะทางจากจุดกำเนิด (0, 0, 0)

นั่นคือสิ่งที่แน่นอน

เหนือสิ่งอื่นใดเวกเตอร์สามารถแสดงจุด (ตำแหน่ง) ทิศทางและ / หรือความเร็วขึ้นอยู่กับบริบท

หากคุณมีตัวแปรนี้:

Vector3 mPosition;

โดยทั่วไปจะแสดงเฉพาะตำแหน่งเช่นที่ตั้งอยู่ในพื้นที่ 3 มิติ

หากคุณมีตัวแปรนี้:

Vector3 mDirection;

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

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

หากคุณต้องการเวกเตอร์ปกติสำหรับการคำนวณเดี่ยวคุณสามารถใช้myVec3.normalizedมันจะไม่ส่งผลกระทบmyVec3และถ้าคุณตั้งใจจะใช้เวกเตอร์ที่ทำให้ปกตินั้นบ่อยครั้งคุณควรสร้างตัวแปร:

Vector3 myVec3Normalized = myVec3.normalized;

เพื่อหลีกเลี่ยงการเรียกซ้ำไปยังnormalizedเมธอด

และถ้าคุณเห็นตัวแปร:

Vector3 mVelocity;

โดยทั่วไปจะแสดงถึงแรง / ความเร็ว: เวกเตอร์เหล่านี้แสดงทิศทางและขนาด (ความยาว) เป็นสิ่งสำคัญ พวกเขาอาจจะมีการแสดงด้วยและVector3 mDirection;float mSpeed;

สิ่งเหล่านี้ถูกใช้โดยคำนึงถึงที่มาของท้องถิ่นซึ่งอาจเป็น (0, 0, 0) หรืออาจเป็นตำแหน่งอื่นได้


4
มันทำลายส่วนหนึ่งของข้อมูลที่มีอยู่ในเวกเตอร์และข้อมูลนั้นก็คือขนาด ทิศทางยังคงเหมือนเดิม

6
@Eldy มันแม่นยำมากกว่าที่จะทราบว่าmyVec3.normalizedส่งคืนVector3 ใหม่โดยมีทิศทางเดียวกัน แต่ขนาดที่ 1 myVec3ไม่เปลี่ยนแปลง
Caleth

4
@ NPSF3000 เหล่านั้นจะเป็นกระตุกและjounceมีมติเกี่ยวกับชื่อไม่เกินกว่าที่ พวกเราทุกคนดีใจที่ไม่ชอบคนทั่วไป
ธีระโรจน์

1
@ NPSF3000 บางคนแนะนำว่าอนุพันธ์อันดับที่ 4, 5 และ 6 ของตำแหน่งควรเป็น snap, crackle และ pop! :-D en.wikipedia.org/wiki/Snap,_Crackle_and_Pop#Physics
gbmhunter

1
อาจจะเปลี่ยนthese vector are unit vectorsไปdirection vectors are unit vectorsหรืออะไรบางอย่าง? เพราะมันเป็นความคิดในขณะนี้ผู้อ่านอาจจะสับสนว่าtheseหมายถึงตัวอย่างทั้งก่อนและmPosition mDirection(นั่นเป็นวิธีที่ฉันอ่านมันเป็นครั้งแรกที่.)
Supr

8

นั่นหมายความว่าขนาดเป็นเพียงระยะทางจากจุดกำเนิด (0, 0, 0)

คุณสามารถเห็นมันเป็นอย่างนั้น แต่เพียงเห็นด้วยวิธีนั้นอาจนำไปสู่ความเข้าใจที่ผิด


ก่อนอื่นเวกเตอร์ไม่ใช่จุดและจุดไม่ใช่เวกเตอร์

ความแตกต่างระหว่างเวกเตอร์และจุดเป็นเช่นเดียวกับระหว่างระยะเวลาและช่วงเวลาของวัน อดีตคือช่วงเวลา, หลังเป็นจุดเดียวในเวลา เห็นได้ชัดว่า 6 ชั่วโมงไม่เหมือนกันกับ 6 โมง คุณจะไม่พูดว่า "การแข่งขันจะใช้เวลา 1 นาฬิกา" และคุณจะไม่พูดว่า "มาพบกันที่ 13 ชั่วโมง" การแข่งขันเป็นเวลาหนึ่งชั่วโมง - ช่วงเวลา - และคุณพบกันที่ 13 โมง - จุดเฉพาะในเวลา

เช่นเดียวกับเวกเตอร์และจุด เวกเตอร์เป็น intervall - การกระจัดถ้าคุณจะ มันชี้ไปในทิศทางที่แน่นอนและใช่มันมีความยาว

คะแนนและเวกเตอร์จึงสัมพันธ์กันเช่นเดียวกับระยะเวลาและเวลาของวัน การแข่งขันเริ่มต้นที่ 13 โมงเช้าและสิ้นสุดที่ 15 โมง ทั้งสองเป็นจุดในเวลา แต่ 15 โมง - 13 โมง = 2 ชั่วโมงระยะเวลา การแข่งขันใช้เวลาสองชั่วโมงไม่ใช่ 2 โมงเช้า

เช่นเดียวกับคะแนน ความแตกต่างระหว่างจุด A และ B จะแสดงเป็น⃗v = B - A โดยที่⃗vหมายถึงเวกเตอร์และ A และ B หมายถึงจุด

ขณะนี้มีสิ่งที่เรียกว่าเวกเตอร์ตำแหน่ง คุณสามารถพิจารณาเวกเตอร์หนึ่งตัวชี้ไปที่ระดับหนึ่งเมื่อคุณพูดว่าเวกเตอร์นั้นชี้จากจุดกำเนิดไปยังจุดอื่น กล่าวอีกนัยหนึ่ง: หากเพื่อนของคุณทุกคนรู้ว่าคุณโทรหาช่วงเวลาของวันเป็นระยะเวลาตั้งแต่เที่ยงคืน (0 โมงเช้า) คุณสามารถพูดว่า "เราพบกัน 6 ชั่วโมง" พวกเขาจะรู้ว่า 0 โมงเช้า + 6 ชั่วโมง = 6 โมงเช้าดังนั้นเมื่อไรที่คุณ นี่คือความจริงที่ว่าเวลาของกองทัพเรือทำอะไร "เราพบกันตอนหกโมงครึ่ง" หมายถึง 6 โมงเช้า

เวกเตอร์ <1,2,3> ชี้ไปที่จุด (1,2,3) ถ้าคุณพิจารณาจุดกำเนิดจุดยึดและใช่ความยาวของเวกเตอร์นี้คือระยะทางของจุดนั้นจากจุดกำเนิด

แต่เวกเตอร์ <1,2,3> ยังจุดจาก (1,1,1) ถึง (2,3,4) และในกรณีที่ความยาวของมันหมายถึงระยะห่างระหว่างผู้สองจุด


อย่างที่คุณเห็นเวกเตอร์มีความยาวเพราะมันไม่ใช่จุด แต่เป็นช่วงเวลา - การกระจัด


การอ่านที่เกี่ยวข้อง: Torsors
Buster

5

เวกเตอร์สามารถแสดงเส้นแบ่งระหว่างสองจุดในพื้นที่ 3 มิติ (ทิศทางและระยะทาง) หรือตำแหน่งในพื้นที่ 3 มิติ (ความยาวคือระยะทางจากจุดกำเนิด)

หากคุณมีจุด A และจุด B ดังนั้น BA = AB = ทิศทางและระยะทางที่คุณต้องเดินทางจาก A ถึง B


ขอบคุณ แต่แล้วการใช้ Vector3 หมายความว่าอะไร เอกสารบอกว่า: Returns this vector with a magnitude of 1ดังนั้นจะไม่ทำลายข้อมูลที่บันทึกไว้ในเวกเตอร์หรือไม่ จริงที่MagnitudeและNormalizedเป็นสิ่งที่ทำให้ฉันสับสน
Mohammed Noureldin

ไม่ว่าจะเป็นจุดในอวกาศหรือลูกศรที่แสดงความเร็วนั้นอยู่ในหัวของคุณ ข้อมูลเดียวกันหมายถึงทั้งสอง
Omnifarious

@MohammedNoureldin เวกเตอร์ที่ได้มาตรฐานเป็นหนึ่งในความยาวของหน่วย (นั่นคือ 1) ใช่ถ้าคุณทำให้เวกเตอร์เป็นปกติคุณจะสูญเสียความยาวหรือขนาดข้อมูล หากคุณต้องการทั้งสองอย่าง (มีประโยชน์ในหลาย ๆ ครั้ง) คุณจะได้ความยาวของเวกเตอร์แล้วทำให้เป็นมาตรฐาน
Ian Young

1

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

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

ลูกศรและความยาว

การเคลื่อนที่ข้ามช่องว่างของคะแนนมักถูกตีความว่าเป็นลูกศรทั้งหมดจากแหล่งที่มา / ก่อนที่จะชี้ไปที่เป้าหมาย

ฟังก์ชั่นของทั้งสองมีปากเสียงสามารถนำไปใช้อาร์กิวเมนต์หนึ่งในการผลิตการทำงานของอาร์กิวเมนต์หนึ่ง - เราสามารถพูดของx + ฟังก์ชั่นที่ใช้เวลาเวกเตอร์แต่ละปีจะเวกเตอร์x + y ที่ นี่คือการแปลที่เกี่ยวข้อง w / เพิ่มx ลูกศรที่เกี่ยวข้องทำงานจากจุดYไปยังจุดx + y ที่ ดู: การประยุกต์ใช้บางส่วน , ความดีความชอบ

ดังนั้นทำไมเราจะใช้ลูกศรหนึ่ง ? ลูกศรจากจุดกำเนิดชี้ไปที่เวกเตอร์ที่ระบุxในx + - ต้นกำเนิดคือตัวตนของการบวกเวกเตอร์ ดังนั้นเราสามารถกู้คืนการแปลx + จากความคุ้มค่าคุ้มx 0 = x

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

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

ความหมายของจุดและเวกเตอร์

ในบางกรณีในการทำเรขาคณิตของเกมจุดว่างของคุณไม่ใช่เวกเตอร์สเปซ พื้นที่เลียนแบบของมิติn สามารถฝังตัวอยู่ในช่องว่างของมิติ projective n เลียนแบบแผนที่ลดเป็นโครงการ Projectivities ยังช่วยให้คุณทำ FOV, w / c ฉันคิดว่าไม่เลียนแบบ Projectivities มีประโยชน์:

projective n- space เหนือสนามสามารถสร้างได้จากเชิงเส้น ( n +1) -space (ปริภูมิเวกเตอร์) โดยการรักษาจุดของพื้นที่ projective เป็นเส้นผ่านต้นกำเนิดของพื้นที่เชิงเส้น เครื่องบินผ่านจุดกำเนิดในทางกลับกันให้เส้น projective การคูณเวกเตอร์ด้วยเมทริกซ์คงที่คือแผนที่เชิงเส้นนี่คือการคูณเมทริกซ์สำหรับ แผนที่เชิงเส้นรักษาต้นกำเนิดและเข้ากันได้กับอุบัติการณ์ โดยเฉพาะถ้าfเป็นเชิงเส้นออโตฟิซึม ( ตรงกับเมทริกซ์กลับด้าน ( n +1) x ( n +1) เมทริกซ์) และสองบรรทัดL, Mผ่านจุดกำเนิดจะกระจายระนาบAจากนั้นf L, f Mเป็นเส้นผ่านต้นกำเนิดซึ่งประกอบไปด้วยf Aดังนั้นfจะรักษาอุบัติการณ์ในพื้นที่ฉายภาพได้เช่นกัน - เมทริกซ์กลับด้านมีการฉายภาพที่เกี่ยวข้อง การคูณเมทริกซ์เข้ารหัสองค์ประกอบของแผนที่เชิงเส้นและด้วยเหตุนี้โครงการ

การลบจุดกำเนิดออกจากพื้นที่เชิงเส้นจุดทั้งหมดในบรรทัดที่กำหนดผ่านจุดกำเนิดคือทวีคูณสเกลาร์ของอีกจุดหนึ่ง การใช้ประโยชน์จากความเป็นจริงนี้เป็นเนื้อเดียวกันหยิบประเด็นเชิงเส้นที่จะยืนอยู่ในแต่ละจุด projective และเมทริกซ์ผกผันจะยืนอยู่ในแต่ละการเปลี่ยนแปลง projective (ในขณะนี้2D -> 2D เลียนแบบแผนที่เป็น 3 มิติ -> 3D เชิงเส้นแผนที่วิดีโอ ) ในดังกล่าว วิธีการที่ตัวแทนจะปิดภายใต้ผลิตภัณฑ์เมทริกซ์เมทริกซ์และเมทริกซ์เวกเตอร์และให้และได้รับจากสิ่ง projective ที่ไม่ซ้ำกัน คำอธิบายของการสร้างระนาบโปรเจคจากระนาบเชิงเส้นเชื่อมโยงบางสิ่งเข้าด้วยกัน

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


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

@ ปีเตอร์ฉันพบว่ามันยากที่จะจัดการทุกอย่าง ฉันต้องการทำให้เข้าถึงได้มากขึ้น แต่ไม่รู้ว่าจะทำอย่างไรโดยไม่ทำอย่างละเอียด อย่างไรก็ตามเมื่อฉันทำงานกับ OpenGL ครั้งแรกฉันสงสัยเกี่ยวกับความหมายของเมทริกซ์ที่เป็นเนื้อเดียวกันเมทริกซ์เปอร์สเปคทีฟและวิธีการค้นพบเมทริกซ์การแปลเป็นทางเลือกในการแปลโดยการสรุปรวมดังนั้นจึงเป็นไปได้ พิธีการเป็นภาษาและการใช้ถ้อยคำที่ถูกต้องฉันคิดว่าจะพูดถึงแนวคิดอย่างไรจะเจอ อย่างไรก็ตามมันเป็นเรื่องง่ายที่จะรัดกุมดังนั้นนี่จึงเป็นเหมือนรายการอ่านของ Wiki
นาฬิกา Loki

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

ดี สมควรได้รับการโหวตมากขึ้น
ปีเตอร์

-1

ความยาว (หรือขนาด) square root of (x*x+y*y+z*z)ของเวกเตอร์คือ เวกเตอร์ถือเป็นรังสีผ่านจากจุดกำเนิด<0,0,0> ถึงจุดที่อธิบายไว้ในเวกเตอร์<x,y,z>

เอกสารความสามัคคีในนี้จะพบที่นี่


ขออภัยมีข้อผิดพลาดอย่างสมบูรณ์ ถ้าฉันมีสองจุด A และ B ดังนั้น v = BA คือเวกเตอร์ที่ไปจาก A ถึง B. v ไม่ผ่านจุดกำเนิดเลยในกรณีนี้ เวกเตอร์ไม่ใช่จุด มันสามารถใช้เพื่อแสดงจุด (เป็นเวกเตอร์ตำแหน่ง) แต่มันเป็นสิ่งที่แตกต่าง โปรดรับข้อมูลเบื้องต้นเกี่ยวกับพีชคณิตโดยตรง
Polygnome

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

หากคุณอ่านเอกสารอย่างเป็นเอกภาพคุณจะสังเกตเห็นว่ามันไม่เคยกล่าวถึงต้นกำเนิดเพราะต้นกำเนิดไม่มีส่วนเกี่ยวข้องกับความยาวของเวกเตอร์อย่างไรก็ตาม เวกเตอร์ระหว่าง (1,1,1) และ (2,3,4) คือ <1,2,3> และมีความยาวของ sqrt (1 ^ 2 + 2 ^ 2 + 3 ^ 3) = ~ 3.9 ซึ่ง คือระยะห่างระหว่างจุดสองจุดนั้น มันไม่เคยได้สัมผัสกับต้นกำเนิดที่ทั้งหมด ฉันสับสนวิธีการที่คุณอาจจะคิดว่าคำตอบของฉันเห็นด้วยกับคุณเพราะมันไม่ได้ที่ทุกคน
Polygnome
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.