直线点乘为0则正交,直线叉乘为0则平行。
题目:CGL_2_A
代码:
#include <iostream>
using namespace std;
class Point
{
public:
double x, y;
Point()
{
}
Point(double x, double y)
{
(*this).x = x;
(*this).y = y;
}
double operator^(const Point &p) const //叉乘
{
return x * p.y - y * p.x;
}
double operator*(const Point &p) const //点乘
{
return x * p.x + y * p.y;
}
Point operator-(const Point &p) const
{
return Point(x - p.x, y - p.y);
}
};
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
int q;
cin >> q;
Point p[4];
double x, y;
while (q--)
{
for (int i = 0; i < 4; ++i)
{
cin >> x >> y;
p[i] = Point(x, y);
}
if (!((p[1] - p[0]) * (p[3] - p[2])))
cout << 1 << endl;
else if (!((p[1] - p[0]) ^ (p[3] - p[2])))
cout << 2 << endl;
else
cout << 0 << endl;
}
}
转载请注明来源:https://www.longjin666.top/?p=775
欢迎关注我的公众号“灯珑”,让我们一起了解更多的事物~