已知三角形三边a,b,c
1.海伦公式
p = (a+b+c)/2; (p是半周长)
面积S = sqrt(p*(p-a)+p*(p-b)+p*(p-c));
``
2.余弦公式
```cpp
cosc=(double)(a*a+b*b-c*c)/(2.0*a*b);
sinc=sqrt(1-d*d);
面积S=0.5*a*b*sinc;
已知二维空间内三角形三个顶点坐标为:(x1, y1 ),(x2,y2 ),( x3, y3)
三角形面积公式:
公式(1)S = abs(x1*(y2-y3) + x2*(y3-y1) + x3*(y1-y2))/2;
求两相交圆的面积
#include<iostream>
#include<cmath>
using namespace std;
#define pi acos(-1.0)
typedef struct node
{
int x;
int y;
}point;
double AREA(point a, double r1, point b, double r2)
{
double d = sqrt((a.x-b.x)*(a.x-b.x) + (a.y-b.y)*(a.y-b.y));
if (d >= r1+r2)
return 0;
if (r1>r2)
{
double tmp = r1;
r1 = r2;
r2 = tmp;
}
if(r2 - r1 >= d)
return pi*r1*r1;
double ang1=acos((r1*r1+d*d-r2*r2)/(2*r1*d));
double ang2=acos((r2*r2+d*d-r1*r1)/(2*r2*d));
return ang1*r1*r1 + ang2*r2*r2 - r1*d*sin(ang1);
}
int main()
{
point a, b;
a.x=2, a.y=2; //圆心坐标
b.x=7, b.y=2;
double result = AREA(a, ra, b,rb); //半径ra,rb
printf("%lf\n", result);
return 0;
}
求两点间距离
struct point {
double x,y;
}a,b;
double dist(point a,point b) //求两点间距离
{
return sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y));
}