C语言下三角形面积的求法及点到直线的距离。

例题:已知三角形的三点 A(x,y,z)、B(x1,y1,z1)、C(x2,y2,z2),求三角形的面积及以A为顶点的高。

我们知道三角形的面积可以通过2个向量的叉积求出。通过3个点我们可以得到2个向量P(BA)、P1(BC);

三角形ABC的面积S:

S=P×P1={[(y2-y1)*(z-z1)-(z2-z1)*(y-y1)]^2+[(z2-z1)*(x-x1)-(x2-x1)*(z-z1)]^2+[(x2-x1)*(y-y1)-(y2-y1)*(x-x1)]^2}^0.5÷2。

三角形以A为顶点的高及点A到直线BC的距离H:

H=2S/BC=2*S/[(x2-x1)^2+(y2-y1)^2+(z2-z1)^2]^0.5。

使用C语言我们可以以下代码实现:

//三维坐标系三角形面积及点到直线距离的求法
#define POW(x) (x)*(x)
#include <stdio.h>
#include <math.h>
int main(int argc,char *argv[])
{
    double x = 100.0, y = 100.0, z = 100.0;
    double x1 = 100.0, y1 = 220.0, z1 = 50.0;
    double x2 = 500.0, y2 = 130.0, z2 = 150.0;
    double Area,H;
    Area= sqrt(POW((y2-y1)*(z-z1)-(z2-z1)*(y-y1))
              +POW((z2-z1)*(x-x1)-(x2-x1)*(z-z1))
              +POW((x2-x1)*(y-y1)-(y2-y1)*(x-x1)))/2;
    H= sqrt((POW((y2-y1)*(z-z1)-(z2-z1)*(y-y1))
            +POW((z2-z1)*(x-x1)-(x2-x1)*(z-z1))
            +POW((x2-x1)*(y-y1)-(y2-y1)*(x-x1)))
            /(POW(x2-x1)+POW(y2-y1)+POW(z2-z1)));
    printf("三角的面积= %8.3f",Area);
    printf("三角形的高(点A到直线BC的距离)= %8.3f",H);
    return 0;
}

当三角形位于二维坐标系时,我们可以看做z=0,该方法同样可以计算,但我们可以更加简化公式,将z=z1=z2=0带入得到新
的计算公式:
三角形ABC的面积S:

S=P×P1={[(x2-x1)*(y-y1)-(y2-y1)*(x-x1)]^2}^0.5÷2。

三角形以A为顶点的高及点A到直线BC的距离H:

H=2S/BC=2*S/[(x2-x1)^2+(y2-y1)^2]^0.5。
使用C语言我们可以以下代码实现:

//二维坐标系三角形面积及点到直线距离的求法
#define POW(x) (x)*(x)
#include <stdio.h>
#include <math.h>
int main(int argc,char *argv[])
{
    double x = 100.0, y = 100.0;
    double x1 = 100.0, y1 = 220.0;
    double x2 = 500.0, y2 = 130.0;
    double Area,H;
    Area= sqrt(POW((x2-x1)*(y-y1)-(y2-y1)*(x-x1)))/2;
    H= sqrt(POW((x2-x1)*(y-y1)-(y2-y1)*(x-x1))
            /(POW(x2-x1)+POW(y2-y1)));
    printf("三角的面积= %8.3f",Area);
    printf("三角形的高(点A到直线BC的距离)= %8.3f",H);
    return 0;
}


 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值