求一个C语言算法:已知三角形的三个顶点的坐标,求三角形面积

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了求一个C语言算法:已知三角形的三个顶点的坐标,求三角形面积相关的知识,希望对你有一定的参考价值。

C语言

//三个顶点坐标是6个参数。。。

#include <stdio.h>
#include <math.h>

double S_triangle(double ax,double ay,double bx,double by,double cx,double cy)

double mx=cx-ax,my=cy-ay,nx=bx-ax,ny=by-ay;
double Lm= sqrt(mx*mx+my*my),Ln= sqrt(nx*nx+ny*ny),cosA=(mx*nx+my*ny)/Lm/Ln;
double sinA=sqrt(1-cosA*cosA);
double S_tri=0.5*Lm*Ln*sinA;
if(S_tri>=0)return S_tri;
else return (-1*S_tri);


void main()

double S_tri,ax,ay,bx,by,cx,cy;
ax=1;
ay=1;//第一个点的横纵坐标
bx=2;
by=2;//第二个点的横纵坐标
cx=1;
cy=2;//第三个点的横纵坐标
S_tri=S_triangle(ax,ay,bx,by,cx,cy);
printf("S_triangle=%lf",S_tri);
参考技术A #include<stdio.h>
#include<math.h>
void main()

double a,b,c,s,arer;
printf("Input a b and c:\n");
scanf("%lf,%lf,%lf",&a,&b,&c);
printf("%f,%f,%f\n",a,b,c);
if(a+b>c&&a+c>b&&b+c>a)

s=(a+b+c)/2;
arer=sqrt(s*(s-a)*(s-b)*(s-c));
printf("arer=%6.2f\n",arer);

else
printf("a、b、c不能组成三角形。\n");

注意在输入三角形的三边时要在数字中间加上“,”
参考技术B 求出 三条边 和 x轴 夹的梯形的面积。

顶点在两端的边的 梯形 面积 设为 c,
另外两个梯形面积 为 a b

梯形c 在三角形的 下端时 三角形面积 为 a+b -c
梯形c 覆盖了 三角形时 , 三角形的面积为 c- a-b

PS: 梯形在 x 轴下的面积为负数
参考技术C 数学算法是:
由两点的距离公式,先算得三边长;
再由海伦公式求出三角形的面积即可!
参考技术D C++行不。

已知多面体(全是三角形)的顶点坐标,如何判断空间一点是不是在多面体内?

参考技术A 你的问题,是不是可以这样理解,已知各面都是三角形的N面体,和空间内一点,判断这点是否在形内的方法?
如果是的话,你可以用这个方法,
分别
以这个点为顶点
这个N面体的N个面为底面
组成N个小四面体

计算这个N面体的体积V1
计算这N个小4面体的体积之和V2

比较V1和V2

如果V1=V2,就说明这点在多面体内(包括在多面体的面上),
如果V1>V2,则算错了,
如果V1<V2,则说明这个点在多面体外追问

如果是凹多面体呢

追答

可以把这个凹多面体分割成若干个凸多面体组合而成的图形,
然后依次判断,这个点是否包含于若干个凸多面体之中
如果这个点包含于其中某个凸多面体中,
那么这个点,就在所要判断的凹多面体内;
如果这个店,不包含于任何一个凸多面体内,
那么这个点,就不在所要判断的凹多面体内;

追问

求具体算法。

以上是关于求一个C语言算法:已知三角形的三个顶点的坐标,求三角形面积的主要内容,如果未能解决你的问题,请参考以下文章

C语言中,根据用户输入的三个顶点坐标计算三角形的面积。急求:点的坐标如何表示?!

C#编程 已知三个点求组成三角形的周长和面积

C#编程 已知三个点求组成三角形的周长和面积

关于C语言程序 三角形知顶点求内角

已知多面体(全是三角形)的顶点坐标,如何判断空间一点是不是在多面体内?

已知一个多边形的所有顶点坐标,如果确定一点是不是在这个多边形内?