目录
以下正文>>>
背景
最近做到一道题。作为一个初中生,对于“点到直线的距离”以及其公式:
第一眼,压根搞不懂是什么意思-。-(很认真的!)
去搜了一下一些课件。现在给一些不懂的同学以我的理解讲一下。
公式是什么鬼?!
上方的 是直线的表达(解析)式;
在浙教版八年级上册讲的一次函数图象里,所熟悉的直线表达式是:
这里将式子变了一下形,根本上是一样的。A,B,C是三个常数(为什么用大写字母呢?)。
推导
题目的输入是三组坐标:
其中,A,B在该直线上,求P到AB的距离。
就酱紫。
当然,要编程按一般的解方程做肯定是很麻烦的。
抱着试试看(是否可以把A,B,C约掉?)的心态,我在草稿上化简了一下。
果然,最后(然而并不是最简但是挺好看的)的结果并没有出现A,B,C。
编译
C++程序如下(结果保留了3位小数)。
#include <iostream>
#include <cstdio>
#include <cmath>
using namespace std;
int main()
{
double x1,x2,x0,y1,y2,y0,res,a,b,c;//以双精度保存变量
cin>>x1>>y1>>x2>>y2>>x0>>y0;//输入三组数据
a=(x0-x1)*(y2-y1);//分子的左半部分
b=(y0-y1)*(x1-x2);//分子的右半部分
c=a+b;//二者相加
c*=c;//平方(pow(c,2)貌似在这里更加麻烦)
a=pow(y2-y1,2);//分母左半部分
b=pow(x1-x2,2);//分母右半部分
c/=(a+b);//分子分母相除
res=sqrt(c);//开方
printf("%.3lf",res);//输出
}
提交。
10 AC。通过。
欢迎批评指正!
(完)