(伪)点到直线的距离 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。通过。

欢迎批评指正!

(完)

  • 6
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值