らての精進日記

修行をします

aoj0020:Parallelism

解法

1番目の点から2番目の点へ、3番目の点から4番目の点へとベクトルを伸ばす。そして外積の大きさを計算する。その値が0に限りなく近いならば2つのベクトルの成す角は0°か180°であるので平行だと分かる。

コード

#include<bits/stdc++.h>
using namespace std;
const double EPS=1e-10;
double x[4],y[4];
int main(){
    int n;
    cin>>n;
    while(n--){
        for(int i=0;i<4;i++)cin>>x[i]>>y[i];
        for(int i=0;i<4;i+=2){
            x[i]-=x[i+1];y[i]-=y[i+1];
        }
        if(fabs(x[0]*y[2]-x[2]*y[0])<EPS)cout<<"YES"<<endl;
        else cout<<"NO"<<endl;
    }
    return 0;
}