夹角有多大II

Problem Description

这次xhd面临的问题是这样的:在一个平面内有两个点,求两个点分别和原点的连线的夹角的大小。
注:夹角的范围[0,180],两个点不会在圆心出现。

Input

输入数据的第一行是一个数据T,表示有T组数据。
每组数据有四个实数x1,y1,x2,y2分别表示两个点的坐标,这些实数的范围是[-10000,10000]。

Output

对于每组输入数据,输出夹角的大小精确到小数点后两位。

Sample Input

2
1 1 2 2
1 1 1 0

Sample Output

0.00
45.00
 

题目是求 顶点为原点的角的角度;
既然顶点为原点 如图 :
夹角θ=θb-θa θa=atan(a.y/a.x)
而这题 需要解决问题是:
假如:一个点是(-2,-2),-2/-2=1,atan(1)=45° 而 pOx的夹角为180°+45° 所以类似我们需要分类讨论。
四个象限:
第一象限:(x>0,y>0): θ=atan(y/x)
第二象限:(x<0,y>0): θ=atan(y/x)+180
第三象限:(x<0,y>0): θ=atan(y/x)+180
第四象限:(x<0,y>0): θ=atan(y/x)+360
四个方向轴:
X轴正方向:(2,0)  atan(2/0)=0°
Y轴正方向:(0,2)  atan(0/2)=90°
X轴负方向:(-2,0)  atan(-2/0)=-0°  实际为180° 所以+180°
Y轴负方向:(0,-2)  atan(0/-2)=-90° 实际为270° 说以+360°
 
总结 一下就是函数 function_2 中的4中情况。

AC代码如下:
 #include <iostream>
#include <cmath>
#include <cstdio>
using namespace std;
const double pi=3.14159265;
struct Point
{
double x,y;
//Point(int X,int Y):x(X),y(Y){};
};
inline double function_1(double hd)
{
return /pi*hd;
}
inline double function_2(Point p)
{
if(p.x>=&&p.y>=)
return function_1(atan(p.y/p.x));
else if(p.x<&&p.y>=)
return function_1(atan(p.y/p.x))+;
else if(p.x<,p.y<=)
return function_1(atan(p.y/p.x))+;
else
return function_1(atan(p.y/p.x))+;
}
int main()
{
int n;
cin>>n;
while(n--)
{
Point p1,p2;
double o=;
cin>>p1.x>>p1.y>>p2.x>>p2.y;
//cout<<function_2(p1)<<" "<<function_2(p2)<<endl;
o=abs(function_2(p1)-function_2(p2));
//cout<<o<<endl;
printf("%.2lf\n",o); }
return ;
}

HDU 2080 夹角有多大II (数学) atan(y/x)分类求角度的更多相关文章

  1. HDU 2080 夹角有多大II

    夹角有多大II Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Sub ...

  2. 2080夹角有多大II

    寻人启事:2014级新生看过来! 夹角有多大II Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Ot ...

  3. HDU 2076 夹角有多大

    传送门: http://acm.hdu.edu.cn/showproblem.php?pid=2076 夹角有多大(题目已修改,注意读题) Time Limit: 1000/1000 MS (Java ...

  4. HDU 2076 夹角有多大(题目已修改,注意读题)

    Problem Description 时间过的好快,一个学期就这么的过去了,xhd在傻傻的看着表,出于对数据的渴望,突然他想知道这个表的时针和分针的夹角是多少.现在xhd知道的只有时间,请你帮他算出 ...

  5. HDU 2080(三角函数)

    传送门:http://acm.hdu.edu.cn/showproblem.php?pid=2080 夹角有多大II Time Limit: 1000/1000 MS (Java/Others)    ...

  6. HDU 5073 Galaxy (2014 Anshan D简单数学)

    HDU 5073 Galaxy (2014 Anshan D简单数学) 题目链接http://acm.hdu.edu.cn/showproblem.php?pid=5073 Description G ...

  7. HDOJ(HDU).2191. 悼念512汶川大地震遇难同胞――珍惜现在,感恩生活 (DP 多重背包+二进制优化)

    HDOJ(HDU).2191. 悼念512汶川大地震遇难同胞――珍惜现在,感恩生活 (DP 多重背包+二进制优化) 题意分析 首先C表示测试数据的组数,然后给出经费的金额和大米的种类.接着是每袋大米的 ...

  8. HDU 2191悼念512汶川大地震遇难同胞——珍惜如今,感恩生活(多重背包)

    HDU 2191悼念512汶川大地震遇难同胞--珍惜如今.感恩生活(多重背包) http://acm.hdu.edu.cn/showproblem.php?pid=2191 题意: 如果你有资金n元, ...

  9. hdu 1027 Ignatius and the Princess II(产生第m大的排列,next_permutation函数)

    题意:产生第m大的排列 思路:使用 next_permutation函数(头文件algorithm) #include<iostream> #include<stdio.h> ...

随机推荐

  1. 把GIF背景变透明

    准备软件: 1.Ps cs4 2.QuickTime Player 7.74 开始: 1. 2.弹出文件选择框,但是发现不能选择GIF格式. 3.没关系,在文件名框输入*.*回车,就发现可以选择GIF ...

  2. apache 配置多个版本的 php

    注:这里说的是windows环境下的配置 我们在配置apache+php的时候,是在apache的配置文件httpd.conf里加载php的模块并指定php.ini路径 LoadModule php5 ...

  3. raise RuntimeError("autoconf error") RuntimeError: autoconf error

    pip 安装模块时遇到下错误,没有粘贴全,差不多都是这样.这个情况是 pip 安装模块 需要 gcc 及 python-devle 支持, ubuntu 是 python-dev ,使用Yum 安装即 ...

  4. 机器学习:形如抛物线的散点图在python和R中的非线性回归拟合方法

    对于样本数据的散点图形如函数y=ax2+bx+c的图像的数据, 在python中的拟合过程为: ##最小二乘法 import numpy as np import scipy as sp import ...

  5. DPDK QoS之分层调度器

    原创翻译,转载请注明出处. 分层调度器的时机主要体现在TX侧,正好在传递报文之前.它的主要目的是在每个网络节点按照服务级别协议来对不同的流量分类和对不同的用户的报文区分优先级并排序. 一.概述分层调度 ...

  6. C语言精神

    国际标准化组织与1990年发布了第一个ANSI/ISO C标准 在该委员会制定的指导原则中,最有趣的可能是:保持C的精神.委员会在表达这一精神时列出了一下几点: 信任程序员: 不要妨碍程序员做需要做的 ...

  7. 20155231 2016-2017-2 《Java程序设计》第5周学习总结

    # 20155231 2016-2017-2 <Java程序设计>第5周学习总结 教材学习内容总结 学习目标 理解异常架构 掌握try...catch...finally处理异常的方法 会 ...

  8. Luogu1074靶形数独【启发式搜索】

    Luogu1074靶形数独 题目描述 小城和小华都是热爱数学的好学生,最近,他们不约而同地迷上了数独游戏,好胜的他 们想用数独来一比高低.但普通的数独对他们来说都过于简单了,于是他们向 Z 博士请教, ...

  9. 老李推荐:第2章4节《MonkeyRunner源码剖析》了解你的测试对象: NotePad窗口Activity之菜单简介

    老李推荐:第2章4节<MonkeyRunner源码剖析>了解你的测试对象: NotePad窗口Activity之菜单简介   NotePad窗口Activity之菜单简介 这里我们总共用到 ...

  10. [编织消息框架][JAVA核心技术]动态代理应用4

    基础部份: 接下来讲编译JAVA时,生成自定义class 我们用 javax.annotation.processing.AbstractProcessor 来处理 public abstract c ...