天天看點

三角形的面積 矢量法

原文網址:http://vanlee820816.blog.163.com/blog/static/17981351200826112814770/

//三角形面積即矢量叉乘的1/2 #define SQR(x) ((x) * (x))   //二維的情況,假設三個頂點坐标分别為(x[i], y[i]), (x[j], y[j]), (x[k], y[k]) double areaTri_2dimension(int i, int j, int k) {  double x1 = x[j] - x[i];  double y1 = y[j] - y[i];  double x2 = x[k] - x[i];  double y2 = y[k] - y[i];  return 0.5 * fabs(x1 * y2 - y1 * x2); }   //三維的情況,假設三個頂點坐标分别為(x[i], y[i], z[i]), (x[j], y[j], z[j]), (x[k], y[k], z[k]) double areaTri_2dimension(int i, int j, int k) {  double x1 = x[j] - x[i];  double y1 = y[j] - y[i];  double z1 = z[j] - z[i];  double x2 = x[k] - x[i];  double y2 = y[k] - y[i];  double z2 = z[k] - z[i];  return 0.5 * sqrt(SQR(y1 * z2 - z1 * y2) + SQR(x1 * z2 - z1 * x2) + SQR(x1 * y2 - y1 * z2)); }