题目大意:

  有一个光源位于(0,0)处,一个多边形的围墙。围墙是“全黑”的,不透光也不反射光。距光源r处的光强度为I0=k/r,k为常数。

  一块无穷窄高为h的墙上围墙受到的照度为dI=I0*|cosα|*dl*h,其中I0为该点光强,α为法线与该点到光源连线的夹角。

求总照度。(dI之和)

输入:第一行三个数,第一个数为给定的常数k,第二个数位围墙高h,第三个数为围墙顶点数。接下来每行为一个围墙的顶点,按遍历多边形的顺序给出。

输出:总的照度。


Sample Input

0.5 1.7 3
1.0 3.0
2.0 -1.0
-4.0 -1.0

Sample Output

5.34

如果有一点点计算机视觉的基础或者物理直觉好的话,会知道结果实际与距离和夹角都没有关系,只要求光源向360°辐射的范围内,有多大的角度被墙挡住了。于是转化为了求围墙相对于光源张角的问题。

求张角的过程大致如下:

遍历所有的边,求边相对于光源的张角(自行规定一个正方向)。记录下每次求和之后的最大值和最小值(即像一个方向延扫得最远时的角度),但要注意不应该大于360度。

#include<iomanip>
#include<iostream>
#include<cmath>
using namespace std;
const double pi=3.1415926;
double k,h,x[105],y[105]; double angle(double x0,double y0,double x,double y)
{
double a=atan2(y0,x0);//atan2(X2-X1,Y2-Y1)所表达的意思是坐标原点为起点,
指向(x,y)的射线在坐标平面上与x轴正方向之间的角的角度。
double b=atan2(y,x);//我试过x,y顺序可以翻过来
if(a-b>pi)b+=pi*2;
if(b-a>pi)a+=pi*2;
return a-b; }
int main()
{int n;
cin>>k>>h>>n;
for(int i=0;i<n;i++)
cin>>x[i]>>y[i];
x[n]=x[0],y[n]=y[0];
double s=0,max=0,min=0;
for(int i=0;i<n;i++)
{
s+=angle(x[i],y[i],x[i+1],y[i+1]);//0组与1组,1组与2组,2组在与0组分别求夹角;
                      夹角和为光源照到的区域; if(s<min)min=s;
if(s>max)max=s;
if(max-min>=2*pi)
{max=min+2*pi;
break;}
} cout<<fixed<<setprecision(2)<<h*k*(max-min)<<endl; return 0;
}

  

最新文章

  1. Spring MVC:在jsp中引入css
  2. Objective-C基础3
  3. Java设计模式11:外观模式
  4. Mybatis 高级结果映射 ResultMap Association Collection
  5. Qt Focus事件,FocusInEvent()与FocusOutEvent()
  6. nginx 日志分析
  7. spring引入实体类映射文件
  8. System.Data.OracleClient 需要 Oracle 客户端软件 version 8.1.7 或更高版本
  9. js模拟触发事件
  10. Oracle RAC学习笔记:基本概念及入门
  11. Java怎样高速构造JSON字符串
  12. 将表中null值替换成想要的值、查询某一列值为null
  13. 【高德地图API】从零开始学高德JS API(八)——地址解析与逆地址解析
  14. w3school之CSS学习笔记
  15. 201521123104 《Java程序设计》第6周学习总结
  16. Network Security final project---War Game
  17. ACM-ICPC 2018 徐州赛区网络预赛 J Maze Designer(最大生成树+LCA)
  18. 按住CTRL多选,按住shift连选的实现
  19. Augmented reality in natural scenes
  20. Oracle数据库对表基本的操作--增删查改

热门文章

  1. GOF23种设计模式精解
  2. PHP openssl函数库
  3. java注解之二
  4. List转换成JSON对象报错(一)
  5. (十六)java中的String
  6. TypeError: Error #1006: value 不是函数。
  7. HTML5图片居中的问题
  8. R语言学习 第七篇:列表
  9. VMware下载安装及CentOS7下载安装
  10. [HDU5799]This world need more Zhu