//第一问
//1.通过首位坐标获得直线方程形如Ax+Bx+C=0
//2.以点到直线距离公式涉及函数d=|Ax0+By0+C|/(A^2+B^2)^(1/2)
//获取直线方程
void get_line(double x1,double y1,double x2,double y2,double &A,double &B,double &C)
{
A=y2-y1;
B=x1-x2;
C=(x2-x1)*y1+(y1-y2)*x1;
}
//获取点到直线距离
void get_dist(double x,double y,double A,double B,double C,double &d)
{
return abs(A*x+B*y+C)/sqrt(A*A+B*B);
}
//设置一个全局变量,用于保存点到直线距离
double distant[maxSize];
//获取首位之间的点到直线距离:
void get_all_dist(double x[],double y[],int front,int rear){
double A,B,C;
getline(x[front],y[front],x[rear],y[rear],A,B,C);
int i=front+1;
for(i;i<rear;i++)
get_dist(x[i],y[i],A,B,C,distant[i]);
}
//第二问
//思想:
//1.设置两个指针front,rear,初始化front=0,rear=1
//2.rear逐个后移,直到遇到包含点到直线距离大于阈值的情况进入下一步
//3.将front指
南师GIS考研02方向2022考研真题最后一题
最新推荐文章于 2024-07-19 15:45:46 发布