两个向量构成的平行四边形面积的求解 ————简单技巧





当有两个向量p1,p2

如果两个向量能够构成平行四边形,其面积可表示为  area= |(x1*y2-X2*y1)|;


//向量值为整数
area=abs(x1*y2-x2*y1);
//如果向量值为小数
area=fabs(x1*y2-x2*y1);


 
  

以下转载详细解析

 原文链接:http://blog.csdn.net/zhangxaochen/article/details/8027003

1. 想了一下首先想到的是高中解析几何知识。因为如果把 (x2, y2) 看做parallelogram的底边,边长就是 sqrt(x2*x2+y2*y2)。然后,求点(x1, y1)到直线{(0,0), (x2, y2)} 的距离,d=|x1y2-x2y1|/sqrt(x2*x2+y2*y2)。然后底乘高就是 x1y2-x2y1了。

 

2. 但是上面的解法既不高明,又不简明。 irc 的 ##math channel 上得到好心人相助,给了个初中解答版,一目了然:

两个向量构成的平行四边形面积的求解 ————简单技巧_第1张图片

蓝色的平行四边形为待求面积,他的一半,可以用 粉色大直角三角形 减掉区域1,2,3 的面积得到,然后很快得到整个平行四边形面积

 

3. 本来主题应该是行列式和线性映射神马的。只是给忘干净了,又没拾起来。所以不会啦。

留个Cale的解说:

 If you know already that if the area of some set S is A, and T is a linear map, then T(S) = {T(v) : v in S} has area |det T| A, then you just note that the parallelogram spanned by (x1,y1) and (x2,y2) is the image of the unit square, i.e. the parallelogram spanned by (1,0) and (0,1) under the linear map whose matrix representation consists of those two vectors

 

想想效果,还真是,比如单位square,右上角(1,1),被向量(x1,y1) (x2,y2) 拉伸变形下就映射到了坐标 

你可能感兴趣的:(CC++,C/C++小技巧)