Apa yang berbeda / rumit / berguna tentang vektor?

21

Maafkan saya jika ini tidak dianggap sebagai pertanyaan nyata, tetapi itu adalah sesuatu yang saya benar-benar bingung.

Saya terus-menerus mendengar pengembang game lain berbicara tentang bagaimana menggunakan vektor sangat berguna, tetapi juga bagaimana semua orang diintimidasi oleh matematika vektor dan vektor bisa tampak menakutkan. Saya tidak pernah sempat belajar tentang mereka.

Jadi, akhirnya saya melihat Vector di Wikipedia, dan saya terkejut. Kecuali saya entah bagaimana salah, vektor (demi kesederhanaan, katakan itu 2D), hanya koordinat x dan y. Jika saya salah paham, tolong perbaiki saya.

Jadi, inilah pertanyaan saya: bukankah itu berarti bahwa representasi dua (atau tiga) koordinat dimensi adalah vektor? Jika demikian, maka vektor dan koordinat adalah hal yang sama. Dan sangat tidak mungkin membuat game tanpa menggunakan koordinat, jadi bagaimana vektor membingungkan atau baru bagi seseorang yang telah melakukan sejumlah pemrograman game?

Ini adalah sesuatu yang bisa saya gunakan klarifikasi. Bantuan apa pun dihargai.

starscape
sumber
5
Vektor cukup sederhana hingga Anda mulai melakukan rotasi dalam 3D ... maka Anda perlu angka empat dan itu akan membuat Anda berpikir.
Alistair Buxton
Gagasan vektor benar-benar membingungkan. Saya telah bertanya dalam matematika, math.stackexchange.com/questions/429363 , math.stackexchange.com/questions/384927 tetapi tidak mendapat respons yang jelas. Itu murni frustrasi. Mungkin Anda bisa menambahkannya.
Val
1
Dengan semua analogi buruk dalam jawaban ini, tidak heran orang menjadi bingung.
Alistair Buxton

Jawaban:

29

Jangan biarkan mata pelajaran matematika mendengar Anda memanggil titik atau koordinat Vektor!

Vektor A 2D memiliki x dan y komponen , tidak berkoordinasi. Vektor tidak menentukan posisi, mereka menentukan arah dan besarnya.

Saya tidak dapat memberi tahu Anda mengapa orang diintimidasi oleh mereka, kemungkinan alasan yang sama orang diintimidasi oleh matematika secara umum, karena semua orang mengatakan itu sulit sebelum mereka tahu apa-apa tentang itu!

Vektor dan koordinat bukan hal yang sama. Mereka memang terlihat mirip, tetapi cara mereka digunakan sangat berbeda.

Koordinat menentukan posisi di dunia. Vektor menentukan arah dan besarnya. Keduanya sering digunakan bersama. Sebagai contoh:

Seorang karakter memiliki posisi dan kecepatan. Posisi adalah koordinat dan kecepatannya adalah vektor. Menambahkan kecepatan ke posisi akan memindahkan karakter ke arah vektor pada jarak yang ditentukan oleh besarnya vektor (perhatikan bahwa besarnya vektor adalah kecepatan, jadi ini memberi kita arah dan kecepatan).

Atau dalam contoh ini:

masukkan deskripsi gambar di sini

Dua karakter memiliki posisi dan tembakan laser adalah vektor. Vektor antara dua posisi adalah (3,1). Itu artinya bergerak +3 sepanjang sumbu X dan +1 sepanjang sumbu Y. Di mana besarnya dapat ditemukan dengan Sqrt ((X X) + (Y Y)).

Gambaran umum vektor matematika yang baik dapat ditemukan di blog Wolfire

MichaelHouse
sumber
7
Bukan hanya matematikawan yang kesal ketika seseorang menyebut vektor titik atau koordinat. Kami, fisikawan juga akan mengacaukan Anda.
TASagent
2
+1 Tetapi jika saya memilih nit, kecepatan adalah vektor dan kecepatan adalah besarnya vektor itu.
Ergwun
2
@ Val: Saya tidak akan mengatakan itu omong kosong. Ini membahas kesalahpahaman pertanyaan bahwa vektor hanya koordinat x dan y. Menjadikan jawaban lebih formal atau akurat dengan menyebutkan 'elemen ruang vektor' tidak akan ada gunanya selain membantu menjelaskan mengapa orang menemukan aljabar vektor mengintimidasi.
Marcks Thomas
3
Vektor hanya posisi di mana mereka memberi tahu Anda di mana Anda akan berada jika Anda menerapkannya ke (0,0). Vektor dapat memodifikasi posisi, tetapi tidak mengandung informasi posisi itu sendiri. Saya mengerti apa yang Anda katakan. Saya pikir perbedaan yang kita bicarakan tidak signifikan untuk pertanyaan ini. Ini adalah cara vektor digunakan dalam pengembangan game. Terima kasih atas masukan Anda.
MichaelHouse
4
@ Val: setiap kuliah aljabar linier yang baik akan setuju dengan Byte56: vektor tidak sama dengan posisi di ruang angkasa . Masuk akal untuk menambahkan "3 mil ke utara dan 1 mil ke timur" ke "1 mil ke selatan"; tetapi tidak masuk akal untuk menambahkan "posisi Gedung Putih" ke "posisi Pentagon". Setelah Anda menetapkan titik referensi sebagai (0,0), Anda dapat menggunakan vektor untuk menentukan titik, dan sebaliknya, sehingga dalam beberapa representasi, mereka terlihat serupa; tapi mereka berbeda. Secara abstrak: bandingkan ruang affine vs. ruang vektor .
PLL
9

Saya pikir faktor intimidasi mungkin muncul ketika Anda mulai berurusan dengan operasi yang lebih rumit seperti normalisasi, titik dan lintas produk, dan menggunakan beberapa sistem koordinat dengan matriks untuk mentransformasikannya. Ini tidak selalu mudah dipahami pada awalnya, bahkan jika Anda memiliki latar belakang geometri dan aljabar yang kuat.

Juga, setidaknya di AS, orang-orang yang telah melalui urutan matematika SMA yang biasa terbiasa berpikir tentang geometri dalam hal garis, lereng, sudut, dll. Mereka harus melupakan hal-hal itu sampai batas tertentu, dan belajar untuk pikirkanlah dalam hal vektor dan matriks. Bukannya konsep aljabar linier begitu meluas, tetapi bahwa konsep-konsep itu agak berbeda dari konsep yang digunakan dalam geometri klasik, yang kemungkinan besar orang telah pelajari di sekolah.


BTW, perbedaan antara vektor dan titik terletak pada operasi yang dapat Anda lakukan pada mereka. Meskipun keduanya diwakili (dalam sistem koordinat tertentu) oleh daftar komponen, dan karena itu terlihat "sama", operasi yang diizinkan tidak sama. Misalnya, Anda dapat menambahkan dua vektor, atau mengalikan vektor dengan skalar. Anda tidak dapat melakukannya dengan poin - atau setidaknya, tidak masuk akal untuk melakukannya. Tetapi Anda dapat mengurangi dua titik, dan hasilnya adalah vektor dari satu titik ke titik lainnya. Anda juga dapat menambahkan titik ke vektor untuk mendapatkan titik baru.

Poin dan vektor juga berperilaku berbeda sehubungan dengan transformasi. Yaitu, poin dapat diterjemahkan, sedangkan vektor tidak. Perhatikan contoh objek yang bergerak dengan posisi (titik) dan kecepatan (vektor); jika Anda menerjemahkan objek ke tempat yang berbeda, Anda mengubah posisinya, tetapi bukan kecepatannya.

Bahkan, lebih lanjut dari garis penalaran ini, tidak hanya vektor; ada entitas lain seperti covectors dan bivectors , yang juga dapat "terlihat seperti" vektor dalam hal memiliki daftar komponen dalam sistem koordinat, tetapi yang berperilaku berbeda dalam hal operasi yang tersedia dan cara mereka bereaksi terhadap transformasi. Ini semua milik bidang matematika yang disebut aljabar Grassmann . Di luar itu, seseorang dapat menjadi lebih umum dan mempertimbangkan aljabar tensor . Ini adalah hal yang canggih sekalipun.

Nathan Reed
sumber
1
Sebagian besar kebingungan saya adalah mengapa orang berpikir vektor sangat rumit, jadi ini membantu. Mungkin saya menemukan mereka sederhana karena saya sebenarnya menggunakan geometri dalam pemrograman sebelum saya pernah mengambil geometri sekolah menengah.
starscape
1
Contoh posisi vs kecepatan yang digunakan dalam beberapa jawaban rusak ketika Anda memiliki posisi (titik), kecepatan (vektor), dan percepatan (vektor). Jika Anda mengubah kecepatan, akselerasi tidak berubah, namun keduanya adalah vektor. Perbedaan antara vektor dan titik, meskipun benar, adalah gangguan - dalam praktiknya semua game menyimpan posisi sebagai vektor yang secara implisit relatif terhadap titik asal (mungkin secara tidak langsung jika menggunakan grafik adegan).
Alistair Buxton
1
@ AlairairBuxton Saya tidak mengikuti maksud Anda - jika Anda menerjemahkan sistem koordinat Anda, kecepatan benda atau percepatan tidak berubah, tetapi jika Anda memutar koordinat, maka baik kecepatan dan percepatan akan diputar. Jadi saya tidak melihat di mana sesuatu "rusak".
Nathan Reed
2
@AlistairBuxton Dan tidak ada yang namanya "menyimpan posisi sebagai vektor". Permainan menyimpan baik posisi dan vektor sebagai daftar komponen skalar dalam sistem koordinat tertentu. Itu tidak membuat mereka menjadi hal yang sama. Untuk membuat analogi: int dan float keduanya disimpan sebagai daftar bit biner, namun memiliki arti yang berbeda dan memiliki operasi yang berbeda.
Nathan Reed
1
@ Val Anda benar-benar tidak berdasar. Vektor bukanlah [posisi-p, kecepatan-v]. Itu tidak memiliki titik dan kecepatan di dalamnya. Itu hanya [x-velocity, y-velocity, z-velocity] (untuk vektor kecepatan). Intinya adalah bahwa ini adalah jenis hal yang berbeda dari [posisi-x, posisi-y, posisi-z].
Nathan Reed
7

Vektor sebenarnya tidak terlalu buruk. Hanya ada sedikit matematika yang orang tidak terbiasa dengannya.

Pertama dan terpenting, sebuah Vector tidak mewakili posisi dalam ruang. Ini secara konseptual sangat penting. Vektor mewakili arah, seperti 'Utara', dan besarnya. Pada peta dengan koordinat Matematika XY normal, 'Utara' akan menjadi vektor (0,1) (di atas sumbu Y). Ini tidak harus bingung dengan posisi (0,1), yang merupakan satu unit di atas di mana pun Anda meletakkan asal. Vektor adalah arah dan besarnya .

Perpindahan (gerakan) adalah vektor (seperti memindahkan dua unit ke atas dan satu unit ke kanan), Posisi tidak.

Vektor, dalam dan dari diri mereka sendiri, bukanlah masalah yang dihadapi orang. Biasanya matriks dan operasi pada vektor.

Misalnya, jika Anda mengalikan vektor dengan matriks khusus yang disebut 'Matriks Rotasi', maka vektor tersebut diputar dengan jumlah yang ditentukan oleh matriks. Selain itu, beberapa orang memiliki masalah dengan perkalian Matrix. Lihatlah jika Anda tidak terbiasa dengannya.

Selanjutnya, Anda dapat 'menumpuk' matriks ini (atau operasi) bersama-sama. Seperti Putar 90 derajat di sekitar sumbu X, lalu Putar 90 derajat di sekitar sumbu Y. Jika kita memanggil yang pertama Matriks M dan yang kedua matriks N, maka operasi akan menjadi v * M * N. Namun, perkalian Matriks tidak bersifat komutatif, sehingga tidak sama dengan v * N * M.

Dalam pemrograman Grafik, Anda melakukan operasi yang jauh lebih rumit pada vektor dan matriks lainnya secara teratur. Transformasi untuk FoV dan untuk menempatkan koordinat Anda di ruang layar, dll. Ini sebenarnya tidak terlalu buruk, tetapi dapat mengintimidasi orang baru.

Agen TAS
sumber