HDU 2671 Can't be easier(数学题,点关于直线对称)
//数学题
//直线 y = k * x + b
//直线 ax+by+c=0; 点 (x0,y0); 点到直线距离 d = (ax0+by0+c)/sqrt(a^2+b^2)
/*
*****************************************************************
关于直线对称公式如下:
1。点(a,b)关于直线 y=kx+m (k=1或-1)的
对称点为:(b/k-m/k,ka+m),实际上是将表达式中的x,y的值互换,
因为直线方程 y=kx+m 中有 x=y/k-m/k 且 y=kx+m,这种方法只适用于 k=1或-1
的情况。还可以推广为 曲线 f(x,y)=0关于直线 y=kx+m 的 对称曲线 为
f(y/k-m/k,kx+m)=0。
2.当 k不等于1或-1时,点(a,b)关于直线 Ax+By+C=0 的对称点为
(a-(2A*(Aa+Bb+C))/(A*A+B*B),b-(2B*(Aa+Bb+C))/(A*A+B*B)),
同样可以扩展到曲线关于直线对称方面,有 f(x,y)=0关于
直线 Ax+By+C=0 的对称曲线为
f(x-(2A*(Ax+By+C))/(A*A+B*B),y-(2B*(Ax+By+C))/(A*A+B*B))=0.
以上包含了所有关于直线对称的情况。
顺便把点关于点对称的也写在这,方便大家使用。
点(x,y)关于 点(a,b)对称点是 (2a-x,2b-y);
曲线 f(x,y)=0 关于 点(a,b)对称曲线为 f(2a-x,2b-y)=0。
*****************************************************************
*********************************************
设直线方程为Ax+By+C=0,两点为(x1,y1),(x2,y2)
(Ax1+By1+C)(Ax2+By2+C)>0
同侧
(Ax1+By1+C)(Ax2+By2+C)<0
异侧
*********************************************
*/
#include<math.h>
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std; int main()
{
int m;
double k,ax,ay,bx,by,cx,cy;
scanf("%d",&m);
while(m--)
{
scanf("%lf",&k);
scanf("%lf%lf%lf%lf%lf%lf",&ax,&ay,&bx,&by,&cx,&cy);
double b1 = cy-k*cx;
double A = k, B = -, C = b1; //判断两点是否同侧
if((A * ax + B * ay + C) * ( A * bx + B * by + C) < )//同侧
{
printf("%.2lf\n",sqrt((ax - bx) * (ax - bx) + (ay - by) * (ay - by)));
} else
{
double xn = ax - ( * A * (A * ax + B * ay + C)) / (A * A + B * B);
double yn = ay - ( * B * (A * ax + B * ay + C)) / (A * A + B * B);
printf("%.2lf\n",sqrt((xn - bx) * (xn - bx) + (yn - by) * (yn - by)));
} } return ;
}
HDU 2671 Can't be easier(数学题,点关于直线对称)的更多相关文章
- HDU 2671 Can't be easier
简单的几何题目 点(a,b)关于直线Ax+By+C=1对称点的公式 #include<cstdio> #include<cstring> #include<cmath&g ...
- HDU 5974 A Simple Math Problem 数学题
http://acm.hdu.edu.cn/showproblem.php?pid=5974 遇到数学题真的跪.. 题目要求 X + Y = a lcm(X, Y) = b 设c = gcd(x, y ...
- hdu 4882 ZCC Loves Codefires(数学题+贪心)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4882 ------------------------------------------------ ...
- hdu 2225 The nearest fraction (数学题)
Problem - 2225 一道简单数学题,要求求出一个分母不超过m的最接近sqrt(n)的分数. 做法就是暴力枚举,注意中间过程不能用浮点数比较,误差要求比较高. 代码如下: #include & ...
- hdu 1012:u Calculate e(数学题,水题)
u Calculate e Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Tot ...
- hdu 2964 Prime Bases(简单数学题)
按照题意的要求逐渐求解: #include<stdio.h> #include<string.h> #include<algorithm> using namesp ...
- hdu 2058 The sum problem(数学题)
一个数学问题:copy了别人的博客 #include<cstdio> #include<cstdlib> #include<cmath> int main() { ...
- HDU 1717 小数化分数2 数学题
解题报告:输入一个小于1的小数,让你把这个数转化成分数,但注意,输入的数据还有无限循环的小数,循环节用一对括号包含起来. 之前还没有写过小数转分数的题,当然如果没有循环小数的话,应该比较简单,但是这题 ...
- hdu 2671 shǎ崽 OrOrOrOrz(排序)
题意:排序后按题目要求输出 思路:排序 #include<iostream> #include<stdio.h> #include<algorithm> using ...
随机推荐
- linux命令行下的ftp 多文件下载和目录下载(转)
目标ftp服务器是一个非标准端口的ftp 1.通过shell登录 #ftp //shell下输入ftp命令,进入到ftp提示符 >open IP PORT //IP ,PORT对 ...
- 同时执行2个存储过程,2个SP中分别有相同的临时表名,会有冲突吗?
同时执行2个存储过程,2个SP中分别有相同的临时表名,会有冲突吗?答案:不会 这就可以在以后写存储过程的时候统一临时表名了. alter procedure sp_01 as begin create ...
- GestureDetector.OnGestureListener
为了加强鼠标响应事件,Android提供了GestureDetector手势识别类.通过GestureDetector.OnGestureListener来获取当前被触发的操作手势(Single Ta ...
- IBM X3650 M4安装win 2008 Server操作指南
由于IBM服务器是IBM原有的Linux系统,所以需要在此硬件上安装Win 2008 Server系统(以下简称win8),中间遇到了很多坑,在下面的描述中会阐述.以下是安装的整个步骤: 一.所需工具 ...
- Ubuntu 修改用户密码与启动root账号
passwd sban 修改当前帐号 sudo passwd root 修改root帐号 修改/etc/ssh/sshd_config,改: PermitRootLogin without-passw ...
- 三星Galaxy Note 10.1 N8010 最后的救赎 Andorid 5.0.2 ROM
上市日期为2012年的三星Galaxy Note N8010 10.1采用10.1英寸TFT屏幕,分辨率为1280×800,支持10点触控,支持S pen手写笔功能.,拥有一颗1.4GHz Exyno ...
- TFS(Taobao File System)安装方法
文章目录: 一.TFS(Taobao File System)安装方法 二.TFS(Taobao File System)配置dataServer.分区.挂载数据盘 三.TFS(Taobao File ...
- Qt之SQL数据库
---------------------------- http://blog.csdn.net/reborntercel/article/details/6991147 http://blog.c ...
- python实现树莓派生成并识别二维码
python实现树莓派生成并识别二维码 参考来源:http://blog.csdn.net/Burgess_Liu/article/details/40397803 设备及环境 树莓派2代 官方系统R ...
- ubuntu 修改主机名
sudo gedit /etc/hostname sudo gedit /etc/hosts