首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> 關於C++

HDU 2080: 夾角有多大 II - 向量夾角計算

     編輯:關於C++

問題描述

給定兩向量 (x1,y1), (x2,y2),求它們之間的夾角(0°~180°),輸出保留兩位小數。

數學公式

cosθ = (x1*x2 + y1*y2) / (√(x1²+y1²) * √(x2²+y2²))
用 atan2 求各向量極角,相減取絕對值,若 > 180° 則用 360° 減之。
angle = atan2(y,x) * 180/π 自動處理象限。

代碼

#include <bits/stdc++.h>
using namespace std;
int main() {
    int T; cin >> T;
    const double PI = acos(-1);
    while (T--) {
        double x1,y1,x2,y2; cin >> x1 >> y1 >> x2 >> y2;
        double a1 = atan2(y1, x1) * 180 / PI;
        double a2 = atan2(y2, x2) * 180 / PI;
        double diff = fabs(a1 - a2);
        if (diff > 180) diff = 360 - diff;
        printf("%.2f\n", diff);
    }
    return 0;
}
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved