编写程序,输入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; }