用C语言编写 在平面上,穿过两个点(x1,y1)和(x2,y2)的直线是由下面的方程定义的:
ax+by=c(其中,a=y2—y1,b=x1-x2,c=x1y2-y1x2)这样一条直线吧平面分成两个半平面:其中一个半平面的点都满足ax+by>c,另一个半平面的点都...
ax+by=c(其中,a=y2—y1,b=x1-x2,c=x1y2-y1x2)这样一条直线吧平面分成两个半平面:其中一个半平面的点都满足ax+by>c,另一个半平面的点都满足x+by<c.对于任意两个点p1和p2,判断p1和p2是否位于这条直线的同一边
展开
1个回答
展开全部
p1和p2的坐标代入直线方程中,得到:
c1=a*x1+b*y1;
c2=a*xx2+by2;
如果c1和c2都小于c 或者c1和c2都大于c说明两个点位于直线的同一侧。
主要是数学问题,高中数学。
c1=a*x1+b*y1;
c2=a*xx2+by2;
如果c1和c2都小于c 或者c1和c2都大于c说明两个点位于直线的同一侧。
主要是数学问题,高中数学。
追问
额。。。。。。。。。。。 亲 是C语言编程哦 谢谢
追答
这还不简单。。。
#include <stdio.h>
int main(int argc, char *argv[])
{
float x1,y1;//确定一条直线的第一个点
float x2,y2;//确定一条直线的第二个点
float p1x,p1y;//点p1
float p2x,p2y;//点p2
float a,b,c;//直线方程参数
float c1,c2;
printf("请输入确定一条直线的第一个点:");
scanf("%f%f",&x1,&y1);
printf("请输入确定一条直线的第二个点:");
scanf("%f%f",&x2,&y2);
//计算直线方程参数
a=y2-y1;
b=x1-x2;
c=x1*y2-y1*x2;
printf("直线方程为:%f*x+(%f)*y=%f\n",a,b,c);
//输入p1和p2
printf("请输入点p1的坐标:");
scanf("%f%f",&p1x,&p1y);
printf("请输入点p2的坐标:");
scanf("%f%f",&p2x,&p2y);
//将p1、p2坐标代入直线方程
c1=a*p1x+b*p1y;
c2=a*p2x+b*p2y;
//判断是否在一边
if(c1>c && c2>c)
printf("在同一边 (>c)\n");
else if(c1<c && c2<c)
printf("在同一边 (<c)\n");
else
printf("不在同一边 (<c)\n");
return 0;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询