Mengira Sudut Mengikut Jam Antara Vektor: Melangkaui Pendekatan Klasik
Kaedah klasik untuk mengira sudut antara dua vektor bergantung pada hasil darab titik, yang hanya menyediakan sudut dalam (0-180 darjah). Untuk mendapatkan sudut mengikut arah jam yang dikehendaki secara langsung, kami meneroka pendekatan alternatif yang memanfaatkan penentu.
Vektor 2D
Dalam domain 2D, penentu mewakili nilai yang berkadar dengan sinus sudut. Oleh itu, kita boleh mengira sudut menggunakan:
dot = x1*x2 + y1*y2 det = x1*y2 - y1*x2 angle = atan2(det, dot)
Sudut yang terhasil sejajar dengan orientasi sistem koordinat, menghasilkan nilai positif untuk putaran mengikut arah jam. Menukar vektor input membalikkan tanda.
Vektor 3D
Untuk vektor 3D, di mana paksi putaran kekal tidak ditentukan, kami biasanya memilih sudut positif. Produk titik ternormal memberikan ukuran yang sesuai:
dot = x1*x2 + y1*y2 + z1*z2 lenSq1 = x1*x1 + y1*y1 + z1*z1 lenSq2 = x2*x2 + y2*y2 + z2*z2 angle = acos(dot/sqrt(lenSq1 * lenSq2))
Satah Terbenam dalam 3D
Jika vektor terletak dalam satah dengan vektor normal yang diketahui n, kita boleh manfaatkan maklumat ini untuk memperhalusi pengiraan:
dot = x1*x2 + y1*y2 + z1*z2 det = x1*y2*zn + x2*yn*z1 + xn*y1*z2 - z1*y2*xn - z2*yn*x1 - zn*y1*x2 angle = atan2(det, dot)
Julat 0 – 360°
Pelaksanaan atan2 biasa mengembalikan sudut dalam julat [-π, π] radian. Untuk mendapatkan sudut dalam julat [0, 2π] radian yang dikehendaki, tambahkan 2π kepada keputusan negatif. Sebagai alternatif, gunakan atan2(-det, -dot) π tanpa syarat.
Atas ialah kandungan terperinci Bagaimana untuk Mengira Sudut Arah Jam Antara Dua Vektor: Melangkaui Produk Titik?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!