*4.3(几何:估算面积)应用4.1节图中以下地点的GPS位置:Georgia州的Atlanta、Florida州的Orlando、Georgia州的Savannah、North Carolina的Charlotte。计算被这四个城市所围起来的区域面积

  • 题目
    • 题目概述
    • 编程练习题2.19与4.2、4.1节图
      • 2.19公式:计算三角形面积的公式(处理后)
      • 4.2公式
      • 4.1节图的概括
    • 破题
  • 程序

题目

题目概述

*4.3(几何:估算面积)应用4.1节图中以下地点的GPS位置:Georgia州的Atlanta、Florida州的Orlando、Georgia州的Savannah、North Carolina的Charlotte。计算被这四个城市所围起来的区域面积
提示:使用编程练习题4.2中的公式来计算两个城市之间的距离,将多边形分为两个三角形,使用编程练习题2.19中的公式计算三角形面积

编程练习题2.19与4.2、4.1节图

点击这里跳转到我的2.19博文,或者复制url到浏览器即可:

https://blog.csdn.net/weixin_46356698/article/details/119791257

点击这里跳转到我的4.2博文,或复制url到浏览器:

https://blog.csdn.net/weixin_46356698/article/details/119823330

2.19公式:计算三角形面积的公式(处理后)

s = (side1 + side2 + side3) / 2
area = Math.pow(s*(s-side1)(s-side2)(s-side3), 0.5)

4.2公式

假设(x1,y1)和(x2, y2)是两个点的地理经纬度,两个点之间的最大圆距离可以用以下公式表示:d = 半径 * arccos(sin(x1) * sin(x2) + cos(x1) * cos(x2) * cos(y1 - y2))
对上式进行处理:d = R * Math.acos(Math.sin(x1) * Math.sin(x2) + Math.cos(x1) * Math.cos(x2) * Math.cos(y1 - y2))

4.1节图的概括

顺时针从上往下:
夏洛特(记作a)(35.2270869, -80.8431267)(上方顶点)
萨凡纳(记作b)(32.0835407, -81.0998342)(右)
奥兰多(记作c)(28.5383355, -81.3792365)(下)
亚特兰大(记作d)(33.7489954, -84.3879824)(左)

破题

  1. 程序添加从萨凡纳(右)到亚特兰大(左)的一条线将四边形分隔为两个三角形(两个三角形面积之和=四边形面积和)
  2. 此时需要计算原有四边形的各个边长ab bc cd da,以及刚刚添加的bd
  3. 只要计算这5条线,就能带入2.19的三角形面积公式求得面积
  4. 以计算ab为例:将夏洛特、萨凡纳两个城市的经纬度先经过Math.toRadians方法转化后再代入4.2公式求得距离

程序

public class Test4_4 {public static void main(String[] args) {// 将四座城市数据赋值给对象double xa = 35.2270869, ya = -80.8431267, xb = 32.0835407, yb = -81.0998342;double xc = 28.5383355, yc = -81.3792365, xd = 33.7489954, yd = -84.3879824;// 设置常量final double R = 6371.01;// 对四座城市数据进行处理(Math.toRadians)double x1 = Math.toRadians(xa), x2 = Math.toRadians(xb), x3 = Math.toRadians(xc), x4 = Math.toRadians(xd);double y1 = Math.toRadians(ya), y2 = Math.toRadians(yb), y3 = Math.toRadians(yc), y4 = Math.toRadians(yd);// 计算各个边长,以ab bc cd da以及bd记为长度double ab = R * Math.acos(Math.sin(x1) * Math.sin(x2) + Math.cos(x1) * Math.cos(x2) * Math.cos(y1 - y2));double bc = R * Math.acos(Math.sin(x2) * Math.sin(x3) + Math.cos(x2) * Math.cos(x3) * Math.cos(y2 - y3));double cd = R * Math.acos(Math.sin(x3) * Math.sin(x4) + Math.cos(x3) * Math.cos(x4) * Math.cos(y3 - y4));double da = R * Math.acos(Math.sin(x4) * Math.sin(x1) + Math.cos(x4) * Math.cos(x1) * Math.cos(y4 - y1));double bd = R * Math.acos(Math.sin(x2) * Math.sin(x4) + Math.cos(x2) * Math.cos(x4) * Math.cos(y2 - y4));// 先计算上半三角形abd面积,再计算三角形bcd面积double s1 = (ab + da + bd) / 2;double s2 = (bc + cd + bd) / 2;double area1 = Math.pow(s1 * (s1 - ab) * (s1 - da) * (s1 - bd), 0.5);double area2 = Math.pow(s2 * (s2 - bc) * (s2 - cd) * (s2 - bd), 0.5);// 输出结果System.out.println("四边形面积为:" + (area1 + area2));}
}

Java黑皮书课后题第4章:*4.3(几何:估算面积)应用4.1节图中以下地点的GPS位置:Georgia州的Atlanta……计算被这四个城市所围起来的区域面积相关推荐

  1. Java黑皮书课后题第11章:11.2(Person Student Employee Faculty Staff类)设计一个名为Person的类及其两个名为Student和Employee的子类

    Java黑皮书课后题第11章:11.2(Person Student Employee Faculty Staff类) 题目 缺陷 UML图 代码 Test02_MyDate.java:用于参考的My ...

  2. Java黑皮书课后题第10章:**10.25(新的字符串split方法)String类中的split方法会返回一个字符串数组,该数组是由分隔符分隔开的子串构成的

    Java黑皮书课后题第10章:**10.25(新的字符串split方法) 题目 代码 运行实例 题目 代码 public class Test25 {public static String[] sp ...

  3. Java黑皮书课后题第10章:10.21(被5或6整除)找出能被5或6整除的大于Long.MAX_VALUE的前10个数字

    Java黑皮书课后题第10章:10.21(被5或6整除)找出能被5或6整除的大于Long.MAX_VALUE的前10个数字 题目 代码 结果 题目 都在上面 代码 import java.math.B ...

  4. Java黑皮书课后题第10章:*10.13(几何:MyRectangle2D类)定义MyRectangle2D类

    Java黑皮书课后题第10章:10.3 题目 程序 代码 Test13.java Test13_MyRectangle2D.java 运行 UML 题目 程序 Test13.java:测试程序 Tes ...

  5. Java黑皮书课后题第10章:10.2(BMI类)将下面的新构造方法加入BMI类中

    Java黑皮书课后题第10章:10.2(BMI类)将下面的新构造方法加入BMI类中 题目 程序说明 题目槽点 代码:Test2_BMI.java 运行实例 题目 程序说明 Test2_BMI.java ...

  6. Java黑皮书课后题第10章:*10.1(Time类)设计一个名为Time的类。编写一个测试程序,创建两个Time对象(使用new Time()和new Time(555550000))

    Java黑皮书课后题第10章:*10.1设计一个名为Time的类.编写一个测试程序,创建两个Time对象 题目 程序 代码 Test1.java Test1_Time.java 运行结果 UML 题目 ...

  7. Java黑皮书课后题第9章:**9.13(Location类)设计一个名为Location的类,定位二维数组中的最大值及其位置。

    Java黑皮书课后题第9章:**9.13(Location类)设计一个名为Location的类,定位二维数组中的最大值及其位置 题目 破题 代码 Test13 Test13_Location 运行结果 ...

  8. Java黑皮书课后题第9章:**9.12(几何:交点)假设两条线段相交。第一条线段的两个端点是(x1, y1)和(x2, y2),第二条线段的两个端点是(x3, y3)和(x4, y4)

    Java黑皮书课后题第9章:**9.12(几何:交点)假设两条线段相交.第一条线段的两个端点是(x1, y1)和(x2, y2),第二条线段的两个端点是(x3, y3)和(x4, y4) 题目 破题 ...

  9. Java黑皮书课后题第9章:*9.11(代数:2*2的线性方程)为一个2*2的线性方程设计一个名为LinearEquation的类

    Java黑皮书课后题第9章:*9.11(代数:2*2的线性方程)为一个2*2的线性方程设计一个名为LinearEquation的类 题目 破题 代码 Test10 Test11_LinearEquat ...

最新文章

  1. 设计模式之四(抽象工厂模式第一回合)
  2. 【玩转cocos2d-x之三十五】Earth Warrior 3D大揭秘
  3. 你有见过从肚子里抽出来的脂肪吗? | 今日趣图
  4. 万年自学党聊聊如何选择编程学习资源?
  5. eclipse 安装图形插件(图形化编程)
  6. 修改php.ini没效果,修改php.ini后没有效果
  7. opencv mat赋值_opencv-python 关于位操作
  8. 麦块服务器显示连接已丢失,麦块服务器密码怎么设置
  9. mfc大观之四(串行保存)
  10. 微信回应“取消两分钟内删除功能”;甲骨文裁撤北京中心;Redis 6.0.6 发布| 极客头条
  11. 验证码——ImageIO.write的坑
  12. python PPT学习资料分享
  13. 迁移学习(Transfer Learning)
  14. centos6.5编译安装mysql_Centos6.5编译安装mysql 5.7.14详细教程
  15. BZOJ3506 [CQOI2014]排序机械臂
  16. MySQL 新增、修改、删除 字段 sql语句
  17. Excel 数据库函数
  18. 无光驱服务器操作系统安装系统吗,没有光驱的老机型如何安装操作系统。
  19. 华为日历怎么显示一月_华为手机日历怎么设置
  20. 全国大学生数学建模竞赛(赛题选择)

热门文章

  1. 类似纪念碑谷的unity2d素材包_有哪些免费的音效素材网站?
  2. python的字典与集合
  3. virtualenv创建python项目虚拟环境
  4. kali-linux nat模式下无法联网问题
  5. 问题 G: 果汁店的难题(贪心)
  6. 1598: TomCat的环(快速幂+染色问题)
  7. 浅谈阿里云混合云的探索与实践
  8. 9个让2D游戏创作更轻松的工具
  9. 大地图开发管理:《巫师3》Umbra遮挡剔除技术
  10. 重建控制文件的案例(RESETLOGS模式和NORESETLOGS模式)