サンプルコード
#include <iostream>
#include <complex>
using namespace std;
typedef complex<double> P;
#define X real()
#define Y imag()
// 内積 |a||b|cos(theta)
double dot(P a, P b) {
return a.X * b.X + a.Y * b.Y;
}
// 外積 |a||b|sin(theta)
double cross(P a, P b) {
return a.X * b.Y - a.Y * b.X;
}
int main() {
// 複素数 (座標)
// (1, 1)
// |
// (0,0) --- (1, 0)
P p1(0, 0);
P p2(1, 1);
P p3(1, 0);
// 線分の長さ
cout << abs(p1 - p2) << endl; //=> 1.414...
// 内積
cout << dot(p2 - p1, p3 - p1) << endl; //=> 1
// 外積 (平行四辺形の面積)
cout << abs(cross(p2 - p1, p3 - p1)) << endl; //=> 1
return 0;
}