Mengira Sudut Mengikut Jam Secara Terus
Mengira sudut mengikut arah jam antara dua vektor selalunya ditangani menggunakan hasil darab titik, yang menentukan sudut dalam (0 -180 darjah). Walau bagaimanapun, jika anda lebih suka kaedah langsung, berikut ialah langkah yang perlu dipertimbangkan:
Kes 2D
Sama seperti produk titik mengukur kosinus sudut, penentu memberikan sinus sudut. Sudut mengikut arah jam boleh dikira sebagai:
dot = x1*x2 + y1*y2 # Dot product between [x1, y1] and [x2, y2] det = x1*y2 - y1*x2 # Determinant angle = atan2(det, dot) # atan2(y, x) or atan2(sin, cos)
Orientasi sudut sejajar dengan sistem koordinat, dengan tanda positif yang menunjukkan sudut mengikut arah jam. Menukar input menukar orientasi dan seterusnya tanda.
Kes 3D
Untuk vektor 3D, kedua-dua vektor mentakrifkan paksi putaran berserenjang dengan kedua-duanya. Oleh kerana paksi ini tidak mempunyai orientasi tetap, sudut arah putaran tidak boleh ditentukan secara unik. Konvensyen biasa melibatkan mengorientasikan paksi untuk menghasilkan sudut positif. Dalam senario ini, hasil darab titik bagi vektor ternormal sudah memadai:
dot = x1*x2 + y1*y2 + z1*z2 # Between [x1, y1, z1] and [x2, y2, z2] lenSq1 = x1*x1 + y1*y1 + z1*z1 lenSq2 = x2*x2 + y2*y2 + z2*z2 angle = acos(dot/sqrt(lenSq1 * lenSq2))
Satah dalam 3D
Jika vektor terletak dalam satah dengan vektor normal yang diketahui n, paksi putarannya terletak di sepanjang n. Menyesuaikan pengiraan 2D sambil menggabungkan n memberikan sudut mengikut arah jam:
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)
Pastikan n dinormalkan untuk pengiraan ini.
Julat 0-360 Darjah
Banyak pelaksanaan atan2 mengembalikan sudut dalam julat [-180°, 180°]. Untuk mendapatkan sudut positif dalam julat [0°, 360°], tambah 2π pada sebarang keputusan negatif.
Atas ialah kandungan terperinci Bagaimanakah anda mengira sudut mengikut arah jam antara dua vektor secara langsung?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!