(伪)点到直线的距离 C++

目录

背景

公式是什么鬼?!

推导

编译

以下正文>>>



背景

最近做到一道题。作为一个初中生,对于“点到直线的距离”以及其公式:

formula

第一眼,压根搞不懂是什么意思-。-(很认真的!)

去搜了一下一些课件。现在给一些不懂的同学以我的理解讲一下。

公式是什么鬼?!

上方的  是直线的表达(解析)式;

在浙教版八年级上册讲的一次函数图象里,所熟悉的直线表达式是:

这里将式子变了一下形,根本上是一样的。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。通过。

欢迎批评指正!

(完)

猜你喜欢

转载自blog.csdn.net/Commander_WingT/article/details/86087613
今日推荐