题意:给出三个点A,B,C做一个圆,问从A->B->C是顺时针还是逆时针。
比赛时口胡叉积(疫情期间网课不努力,现在看着数学流泪):当方向向内(平面)时结果是负的,否则是正的,观察发现如果输出结果是顺时针则叉积方向向内,当结果是逆时针时叉积方向向外。
于是比赛我就这样交了,然后过了,但我百度了一下没有找到叉积的大小和方向的关系,想来二者是没有什么关系了,不过翻文章时找到了这样一段话:
叉积的一个非常重要性质是可以通过它的符号判断两矢量相互之间的顺逆时针关系:
若 P × Q > 0 , 则P在Q的顺时针方向。
若 P × Q < 0 , 则P在Q的逆时针方向。
若 P × Q = 0 , 则P与Q共线,但可能同向也可能反向。
结论引用文章
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<queue>
#include<cstring>
#include<vector>
using namespace std;
struct Point {
double x;
double y;
}a,b,c;
int main() {
ios::sync_with_stdio(false);
int t;
cin >> t;
while (t--) {
cin >> a.x >> a.y >> b.x >> b.y >> c.x >> c.y;
double sign1 = b.x - a.x;//x1
double sign2 = b.y - a.y;//y1
double sign3 = c.x - a.x;//x2
double sign4 = c.y - a.y;//y2
double sign = sign1 * sign4 - sign2 * sign3;//x1*y2-x2*y1
if (sign < 0) cout << "Clockwise" << endl;
else cout << "Counterclockwise" << endl;
}
}