编写程序,输入A,B,C,D四个点的坐标,假设A,B,C三点可以构成一个三角形,判断D点是否落在三角形内。
#include<stdio.h>
#include<math.h>
float distance(float coordinate1[2],float coordinate2[2])
//计算两点之间的距离
{
float dist,dist_x,dist_y;
dist_x = (coordinate1[0]-coordinate2[0])*(coordinate1[0]-coordinate2[0]);
dist_y = (coordinate1[1]-coordinate2[1])*(coordinate1[1]-coordinate2[1]);
dist=sqrt(dist_x+dist_y);
return dist;
}
float k(float coordinate[][2],float coordinate[][2])
//求斜率
{
float slope;
slope=(coordinate2[1]-coordinate1[1])/(coordinate2[0]-coordinate1[0]);
return slope;
}
int main ()
{
int i=0;
float num,coordinate[5][2],slope_ad,slope_bc,dist_ad,diat_a_bc,
e_x,e_y;
printf("input coordinates of four points:\n")
for(;i<4;i++){
printf("input the coordinate of point %d",i+1);
scanf("%f %f",&coordinate[i][0],&coordinate[i][1]);
}
slope_ad=k(coordinate[0][],coordinate[3][]);
slope_bc=k(coordinate[1][],coordinate[2][]);
e_x=(-coordinate[1][0]+coordinate[1][1]/slope_bc+
slope_ad/slope_bc*coordinate[0][0]-coordinate[0][1])/(slope_ad/slope_bc-1);
e_y=slope_ad*(e_x-coordinate[0][0])+coordinate[0][1];
coordinate[4][0]=e_x;
coordinate[4][1]=e_y;
dist_ad=distance(coordinate[0][],coordinate[3][]);
dist_a_bc=distance(coordinate[0][],coordinate[4][]);
if(diat_ad>diat_a_bc)
printf("d is outside the triangle\n");
else
printf("d is not outside the triangle\n");
return 0;
}