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

Python014

关于C语言程序 三角形知顶点求内角,第1张

把你的代码贴上来吧,我看看能不能给你改一下!!

基本思路是使用余弦定理

cos B = (a^2 + c^2 -b^2) / (2*a*c)

首先可以算出三条边的长度,如果有两个之和等于第三个,那么就是三点共线,不是三角形。其他情况就是三角形了,调用余弦定理一个一个算就行了。

下面是代码

#include <stdio.h>

#include <math.h>

#define PI 3.14159265354

void main(void)

{

double a[3][2] /*用来保存三个点的横纵坐标*/

double len[3],b[3],c[2]

int i , n

for(i = 0 i<3i++)

scanf("%lf %lf",&a[i][0],&a[i][1])

len[0] = sqrt( pow(a[0][0]-a[1][0],2)+pow(a[0][1]-a[1][1],2) ) /*AB */

len[1] = sqrt( pow(a[2][0]-a[1][0],2)+pow(a[2][1]-a[1][1],2) ) /*BC */

len[2] = sqrt( pow(a[0][0]-a[2][0],2)+pow(a[0][1]-a[2][1],2) ) /*AC */

printf("边AB = %f\t边BC = %f\t边AC = %f\n",len[0],len[1],len[2])

b[0] = (pow(len[0],2) + pow(len[1],2) - pow(len[2],2)) / ( 2.0 *len[0]*len[1])

if(b[0] == 0)

printf("角B = %f\n",b[0] = 90.0)

else

{

b[0] = atan(sqrt(1-pow(b[0],2))/b[0])

b[0] = 180*b[0]/PI

printf("角B = %f\n",b[0])

}

b[1] = (pow(len[2],2) + pow(len[1],2) - pow(len[0],2)) / ( 2.0 *len[2]*len[1])

if(b[1]==0)

printf("角C = %f\n",b[1] = 90.0)

else

{

b[1] = atan(sqrt(1-pow(b[1],2))/b[1])

b[1] = 180*b[1]/PI

printf("角C = %f\n",b[1])

}

b[2] = 180 - b[0] - b[1]

printf("角A = %f\n",b[2])

}

向量吧。假设你知道多边形各点的输入顺序。

假设这个多边形有5个点 A( a1, a2, a3),B( b1, b2, b3),C( c1, c2, c3),D( d1, d2, d3),E( e1, e2, e3).

向量BA = ( b1 - a1, b2 - a2, b3 - a3). 将BA转化成标准向量 NBA = Normalize( BA)

向量BC = ( b1 - c1, b2 - c2, b3 - c3). 将BC转化成标准向量 NBC = Normalize( BC)

然后内角角度就为 arccos( NBA 点乘 NBC)