题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3598

题目大意:给出一个球体上的三点,三点的坐标以经纬度的形式给出,求曲面三角形的内角和。

即:给出ABC三个点的经纬度,求出 角A+ 角B+角C的值。

利用公式即可求得 cosa=cosb*cosc+sinb*sinc*cosA
其中小写a,b,c表示球面三角形边长所对应的圆心角 大写A表示三角形内角。

下面的难度就是求出abc角的大小即可。

网上看了一个写法看了好久看不太懂:T.T

<span style="font-size:14px;">//计算圆心角lat表示纬度,-90<=w<=90,lng表示经度
//返回两点所在大圆劣弧对应圆心角,0<=angle<=pidouble angle(double lng1, double lat1, double lng2, double lat2)
{double dlng = fabs(lng1 - lng2) * Pi / 180;while (dlng + eps > Pi + Pi)dlng -= Pi + Pi;if (dlng > Pi)dlng = Pi + Pi - dlng;lat1 *= Pi / 180, lat2 *= Pi / 180;return acos(cos(lat1) * cos(lat2) * cos(dlng) + sin(lat1) * sin(lat2));
}</span>

太水了,后来找到了一个能接受的写法:

我们先把经纬度换为xyz坐标。(默认了R是1)

比如已知一点A的坐标为(x1,y1,z1),B的坐标是(x2,y2,z2)
下面就是求角度AOB,向量OA为(x1,y1,z1),向量OB为(x2,y2,z2)。

OA*OB=|OA|*|OB|*cos(角AOB)=x1*x2+y1*y2+z1*z2

则就可以求出角AOB了。

具体算法看代码:

#include <iostream>
#include <cstdio>
#include <cmath>
#include <cstring>
#include <algorithm>
const double PI = 2.0 * asin(1.0);
using namespace std;
struct po
{double x,y,z;
};void m_change(double ll, double la, po& p)
{p.x = cos(la * PI / 180) * cos(ll * PI / 180);p.y = cos(la * PI / 180) * sin(ll * PI / 180);p.z = sin(la * PI / 180);
}double xlj(po p, po q)
{return (p.x * q.x) + (p.y * q.y) + (p.z * q.z);
}int main()
{int n;cin>>n;while(n--){po A,B,C;cin>>A.x>>A.y>>B.x>>B.y>>C.x>>C.y;m_change(A.x,A.y,A);m_change(B.x,B.y,B);m_change(C.x,C.y,C);double a = acos(xlj(C,B));double b = acos(xlj(A,C));double c = acos(xlj(A,B));
//        printf("a:%lf b:%lf c:%lf\n",a,b,c);double da,db,dc;da = acos((cos(a) - cos(b) * cos(c)) / (sin(b) * sin(c)));db = acos((cos(b) - cos(c) * cos(a)) / (sin(c) * sin(a)));dc = acos((cos(c) - cos(a) * cos(b)) / (sin(a) * sin(b)));
//        printf("da:%lf db:%lf dc:%lf\n",da,db,dc);double ans = da + db + dc;printf("%.2lf\n",ans * (180 / PI));}
}

Zoj 3598 Spherical Triangle 【计算几何】【曲面三角形】相关推荐

  1. ZOJ 3598 Spherical Triangle(计算几何 球面三角形内角和)

    题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=4682 As everybody knows, the sum of ...

  2. ZOJ 1598 Spherical Triangle

    题意:给出经纬度,求球面三角形的三角和. 看了一下午的维基百科才知道他到底说了什么,英语是真烂啊... 晚上A码的时候也特别慢,看来自己修炼之路还很长,最后还是在师哥的协助下A掉 公式:(其中a,b, ...

  3. POJ 1673 EXOCENTER OF A TRIANGLE(证明+求三角形垂心)

    POJ 1673 EXOCENTER OF A TRIANGLE(证明+求三角形垂心) http://poj.org/problem?id=1673 题意: ZOJ 1821 有一个三角形ABC,扩展 ...

  4. 定义一个Triangle类表示三角形,测试这个三角形类的所有方法

    定义一个Triangle类表示三角形,其中三个double型变量a.b.c表示三条边长.为该类定义两个构造方法:默认构造方法设置三角形的三条边长都为0.0; 带三个参数的构造方法通过传递三个参数创建三 ...

  5. 【计算几何】【极角序】【二分】bzoj1914 [Usaco2010 OPen]Triangle Counting 数三角形

    极角排序后枚举每个点,计算其与原点连线的左侧的半平面内的点与其组成的三角形数(二分/尺取),这些都不是黄金三角形. 补集转化,用平面内所有三角形的个数(C(n,3))减去这些即可. 精度很宽松,几乎不 ...

  6. LeetCode 118 Pascal's Triangle(帕斯卡三角形)(vector)

    翻译 给定一个行数字,生成它的帕斯卡三角形.例如,给定numRows = 5, 返回: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1] ] 原文 Given numR ...

  7. E. Draw a triangle(计算几何+EXGCD)

    之前学的EXGCD太过于浅显了,很多性质都不是很清楚,正好vp被卡这题了,我们来做一下. E. Draw a triangle 题意:给定两个点的坐标,请你求第三个点的标,保证三个点构成的三角形面积最 ...

  8. POJ 1673 EXOCENTER OF A TRIANGLE(求三角形的垂心)

    博客原文地址:http://blog.csdn.net/xuechelingxiao/article/details/40654421 EXOCENTER OF A TRIANGLE 题目大意:一个三 ...

  9. Leetcode812.Largest Triangle Area最大三角形面积

    给定包含多个点的集合,从其中取三个点组成三角形,返回能组成的最大三角形的面积. 示例: 输入: points = [[0,0],[0,1],[1,0],[0,2],[2,0]] 输出: 2 解释: 这 ...

最新文章

  1. 对比Memcached和Redis,谁才是适合你的缓存?
  2. python opencv 凸包
  3. WordPress添加固定位置的百度分享按钮
  4. 使用h5py操作hdf5文件
  5. 通过telnet自动下载cfg配置文件
  6. linux中的strip命令简介------给文件脱衣服
  7. 华为 EC169 3G上网卡在MacPro中的使用
  8. Android内存泄漏分析心得
  9. 台式计算机颜色如何矫正,显示器颜色校正,详细教您怎么校准显示器颜色
  10. 003-Java技术体系
  11. Why the MonthCalendar.MinDate is 01/01/1753?
  12. 基于 Robot Framework 实现网络自动化测试
  13. SNS、FaceBook、导航设计等等
  14. 【DFS练习】水洼数
  15. 火遍日本 IT 界的深度学习入门书,你读完了吗?
  16. 程序员必备的软技能-金字塔原理拆解(上)
  17. 解析单总线协议(1-wire)
  18. MySQL之账号管理、建库以及四大引擎
  19. 8.ASP.NET Core中的Kestrel Web服务器
  20. 常见的三种Web应用程序:SWA, PWA 和Jamstack

热门文章

  1. 优启通制作系统u盘_优启通U盘启动盘制作工具BIOS+UEFI版v3.3.2019.0605
  2. 电脑主板测试卡代码说明大全
  3. Vue中MarvinJS(化学结构式)
  4. Android 打印组件,Android打印自定义文档
  5. .NET Core发送HTTP Post和Get
  6. 超神学院之量子计算机进展,异能等级、武器等级、文明等级及天使等级划分
  7. 安装会声会影2018时出现Error1935错误的解决方法
  8. jdk安装,配置环境变量
  9. 科技爱好者周刊:第 79 期
  10. Mindoc搭建流程