摘自:http://blog.sina.com.cn/s/blog_4cddcaa3010008u7.html

已知三角形三点坐标, 求三角形的面积


发表时间:2004-8-10
作者:未知[获得此文档时候没有作者记录,深感抱歉,本文档全为转载]

先介绍一下三维中的两点之间距离之式,和二维的几乎一样:d = sqrt((x0-x1)^2 + (y0-y1)^2 + (z0-z1)^2)

再介绍叉乘,中心内容!叉乘在定义上有:两个向量进行叉乘得到的是一个向量,方向垂直于这两个向量构成的平面,大小等于这两个向量组成的平行四边形的面积。

在直角座标系[O;i,j,k]中,i、j、k分别为X轴、Y轴、Z轴上向量的单位向量。设P0(0,0,0),P1(x1,y1,z1),P2(x2,y2,z2)。因为是从原点出发,所以向量P0P1可简记为P1,向量P0P2可简记为P2。依定义有:

     |i  j  k |
P1×P2 = |x1 y1 z1|
     |x2 y2 z2|

展开,得到:

上式 = iy1z2 + jz1x2 + kx1y2 - ky1x2 - jx1z2 - iz1y2

   = (y1z2 - y2z1)i + (x2z1 - x1z2)j + (x1y2 - x2y1)k

按规定,有:单位向量的模为1。可得叉积的模为:

|P1×P2| = y1z2 - y2z1 + x2z1 - x1z2 + x1y2 - x2y1

     = (y1z2 + x2z1 + x1y2) - (y2z1 + x1z2 + x2y1)

开始正式内容。我们设三角形的三个顶点为A(x0,y0,z0),B(x1,y1,z1),C(x2,y2,z2)。我们将三角形的两条边AB和AC看成是向量。然后,我们以A为原点,进行坐标平移,得到向量B(x1-x0,y1-y0,z1-z0),向量C(x2-x0,y2-y0,z2-z0)。

①在三维的情况下,直接代入公式,可得向量B和向量C叉乘结果的模为:

|B×C| = ((y1-y0)*(z2-z0) + (z1-z0)*(x2-x0) + (x1-x0)*(y2-y0)) -
     ((y2-y0)*(z1-z0) + (z2-z0)*(x1-x0) + (x2-x0)*(y1-y0))

     |  1     1     1  |
    = |x1-x0 y1-y0 z1-z0|
     |x2-x0 y2-y0 z2-z0|

它的一半即为所要求的三角形面积S。

还有一种比较简单的写法。将向量AB和AC平移至原点后,设向量B为(x1,y1,z1),向量C为(x2,y2,z2),则他们的叉乘所得向量P为(x,y,z),其中:

|y1 z1|     |z1 x1|     |x1 y1|
x = |     | y = |     | z = |     |
    |y2 z2|     |z2 x2|     |x2 y2|

然后用三维中的两点之间距离公式,求出(x,y,z)与(0,0,0)的距离,即为向量P的模,它的一半就是所要求的面积了。

以上公式都很好记:x分量由y,z分量组成,y分量由z,x分量组成,z分量由x,y分量组成,恰好是循环的。坐标平移一下就好了。

②在二维的情况下,我们可以取z = 0这个平面,即令z1 = z2 = 0,且

|P1×P2| = x1y2 - x2y1

      |x1 y1| 
     = |     |
      |x2 y2|

所以:
      
|B×C| = (x1-x0)*(y2-y0)-(x2-x0)*(y1-y0)

     |x1-x0 y1-y0|
    = |           |
     |x2-x0 y2-y0|

它的一半即为所要求的三角形的面积S。

注意,用行列式求出来的面积是带符号的。如果A,B,C是按顺时针方向给出,则S为负;按逆时针方向给出,则S为正。

以二维的情况为例,三维亦同:

A(0,0) B(0,1) C(1,0) (A,B,C按顺时针方向给出)

S = ((x1-x0)*(y2-y0)-(x2-x0)*(y1-y0))/2;
  = ((0 - 0)*(0 - 0)-(1 - 0)*(1 - 0))/2
  = -0.5

A(1,0) B(0,1) C(0,0) (A,B,C按逆时针方向给出)

S = ((x1-x0)*(y2-y0)-(x2-x0)*(y1-y0))/2;
  = ((0 - 1)*(0 - 0)-(0 - 1)*(1 - 0))/2
  = 0.5

如果你不需要符号的话,再求一下绝对值就好了。这样也不用去管给出的点的顺序了。

以上是利用叉乘。其实还有一招,那就是海伦公式:

利用两点之间距离公式,求出三角形的三边长a,b,c后,令p = (a+b+c)/2。再套入以下公式就可以求出三角形的面积S :

S = sqrt(p*(p-a)*(p-b)*(p-c))

看起来好像比上面的都要简单…… -.-b 各位看客不要打我!

推荐:在二维的时候使用叉乘公式,三维的时候使用海伦公式~~~不过如果是需要符号的情况时,就只能使用行列式的计算公式了。

已知三角形三点坐标, 求三角形的面积相关推荐

  1. 已知三角形三边长求面积java_已知三角形三点坐标求三角形面积.java

    已知三角形三点坐标求三角形面积 主程序代码如下: import java.util.*; public class Tringle { public static void main(String[] ...

  2. 已知平面三点坐标求其中两条边之间的夹脚

    回首这篇两年前写的博客,算是自己觉得比较有意思的一篇了,那时候刚拿毕业证也就一年左右吧,在一家小公司写代码,然后一同事也是前辈向我讨教这个问题,问我有没有招编程解决这个问题.抱着试试看的态度立马就研究 ...

  3. python求平行四边形面积_python 已知平行四边形三个点,求第四个点的案例

    我就废话不多说了,大家还是直接看代码吧! import numpy as np #已知平行四边形三个点,求第四个点 #计算两点之间的距离 def CalcEuclideanDistance(point ...

  4. python写的平行四边形_python 已知平行四边形三个点,求第四个点的案例

    我就废话不多说了,大家还是直接看代码吧! import numpy as np #已知平行四边形三个点,求第四个点 #计算两点之间的距离 def CalcEuclideanDistance(point ...

  5. 利用三角形三条边求三角形面积

    利用三角形三条边求三角形面积 #include <iostream> #include <cmath> using namespace std;//输入三角形的三条边长,计算三 ...

  6. 【C语言】练习:给出三角形三边长,求三角形面积

    [C语言]练习:给出三角形三边长,求三角形面积 题目:给出三角形三边长,求三角形面积 思路: 1.任意给出三边,能构成三角形的条件:任意两边之和大于第三边. 2.三角形面积计算公式(海伦公式) 设三角 ...

  7. 输入半径r求圆的面积java_已知圆的半径r,求圆的面积S_学小易找答案

    [简答题]编写一个程序实现交换两个变量的数值. [简答题]编制密码器,实现给友军发送加密电报,报文由字母a~n组成,每输入一个字母,输出与其相邻的字母. [简答题]任意输入两个数,完成加法.减法.乘法 ...

  8. 已知三角形三点坐标求角度_2019高考数学:解三角形——正弦定理和余弦定理的解题技巧和模型...

    正弦定理.余弦定理的每一个等式中都包含三角形的四个元素(三角形有三个角和三条边,三角形的边与角称为三角形的元素),如果其中三个元素是已知的(至少要有一个元素是边),那么这个三角形一定可解.关于斜三角形 ...

  9. 已知三角形三点坐标求角度_高中数学:椭圆相关角度的最值问题

    圆锥曲线中的最值问题主要包括长度最值.角度最值及面积最值等. 例题:如图1,已知椭圆的中心在坐标原点,焦点在x轴上,长轴 的长为4,左准线与x轴的交点为M, . (1)求椭圆的方程: (2)若直线 , ...

最新文章

  1. Python 函数初识 (1)
  2. 用WDM开发USB驱动程序
  3. SSL压力测试工具THC-SSL-DOS
  4. php左右滑动翻页代码,C#_NGUI实现滑动翻页效果实例代码,废话不多说了,直接给大家上 - phpStudy...
  5. 一个用BitMap类完成的网页随机码图片生成类
  6. python3.6.5安装教程-Centos7 安装Python3.6.5
  7. springfox源码_Spring boot整合Springfox在线生成restful的api doc
  8. php定时任务管理,Zebra-Crontab
  9. SQL调优技巧:统计信息(文末福利)
  10. STM32程序的烧录方式 与 ISP一键下载
  11. matlab求解极限问题(limit函数的用法)
  12. 人民日报申论范文:如何写“担当”“责任”
  13. 断网重启路由器就好_电脑断网重启路由器就好了怎么回事
  14. gitbook:node_modules\npm\node_modules\graceful-fs\polyfills.js:287
  15. 计算机网络可靠性的重要指标,浅谈如何提高计算机网络的可靠性
  16. redis入门(三)
  17. PXE实现系统批量自动安装
  18. 难逾3000元门槛大关——国产手机的无奈困局
  19. SnowField目标效果2-6:斜面移动2更真实的斜坡
  20. 【考研复试】面试问答

热门文章

  1. linux dns 泛域名,linux配置从dns服务器泛域名解析负载均衡【实验】
  2. 从头开始做一个Material Design风格的App(3)
  3. python 实现ps色阶算法
  4. 自考计算机英语答题技巧,2017年自考《英语》各题型答题技巧总结
  5. Differentiable Learning of Logical Rules for Knowledge Base Reasoning
  6. Linux操作系统 root密码重置
  7. 使用ConvNets进行集成识别,定位和检测
  8. 【comsol学习3】-基本操作之同时打开多个文件
  9. PHP祛斑,激光祛斑后悔死了
  10. 无提示关闭IE窗口,目前适用于IE所有版本(目前最新为IE7.0)