Java黑皮书课后题第4章:*4.3(几何:估算面积)应用4.1节图中以下地点的GPS位置:Georgia州的Atlanta……计算被这四个城市所围起来的区域面积
*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)(左)
破题
- 程序添加从萨凡纳(右)到亚特兰大(左)的一条线将四边形分隔为两个三角形(两个三角形面积之和=四边形面积和)
- 此时需要计算原有四边形的各个边长ab bc cd da,以及刚刚添加的bd
- 只要计算这5条线,就能带入2.19的三角形面积公式求得面积
- 以计算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……计算被这四个城市所围起来的区域面积相关推荐
- 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 ...
- Java黑皮书课后题第10章:**10.25(新的字符串split方法)String类中的split方法会返回一个字符串数组,该数组是由分隔符分隔开的子串构成的
Java黑皮书课后题第10章:**10.25(新的字符串split方法) 题目 代码 运行实例 题目 代码 public class Test25 {public static String[] sp ...
- 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 ...
- Java黑皮书课后题第10章:*10.13(几何:MyRectangle2D类)定义MyRectangle2D类
Java黑皮书课后题第10章:10.3 题目 程序 代码 Test13.java Test13_MyRectangle2D.java 运行 UML 题目 程序 Test13.java:测试程序 Tes ...
- Java黑皮书课后题第10章:10.2(BMI类)将下面的新构造方法加入BMI类中
Java黑皮书课后题第10章:10.2(BMI类)将下面的新构造方法加入BMI类中 题目 程序说明 题目槽点 代码:Test2_BMI.java 运行实例 题目 程序说明 Test2_BMI.java ...
- Java黑皮书课后题第10章:*10.1(Time类)设计一个名为Time的类。编写一个测试程序,创建两个Time对象(使用new Time()和new Time(555550000))
Java黑皮书课后题第10章:*10.1设计一个名为Time的类.编写一个测试程序,创建两个Time对象 题目 程序 代码 Test1.java Test1_Time.java 运行结果 UML 题目 ...
- Java黑皮书课后题第9章:**9.13(Location类)设计一个名为Location的类,定位二维数组中的最大值及其位置。
Java黑皮书课后题第9章:**9.13(Location类)设计一个名为Location的类,定位二维数组中的最大值及其位置 题目 破题 代码 Test13 Test13_Location 运行结果 ...
- Java黑皮书课后题第9章:**9.12(几何:交点)假设两条线段相交。第一条线段的两个端点是(x1, y1)和(x2, y2),第二条线段的两个端点是(x3, y3)和(x4, y4)
Java黑皮书课后题第9章:**9.12(几何:交点)假设两条线段相交.第一条线段的两个端点是(x1, y1)和(x2, y2),第二条线段的两个端点是(x3, y3)和(x4, y4) 题目 破题 ...
- Java黑皮书课后题第9章:*9.11(代数:2*2的线性方程)为一个2*2的线性方程设计一个名为LinearEquation的类
Java黑皮书课后题第9章:*9.11(代数:2*2的线性方程)为一个2*2的线性方程设计一个名为LinearEquation的类 题目 破题 代码 Test10 Test11_LinearEquat ...
最新文章
- 设计模式之四(抽象工厂模式第一回合)
- 【玩转cocos2d-x之三十五】Earth Warrior 3D大揭秘
- 你有见过从肚子里抽出来的脂肪吗? | 今日趣图
- 万年自学党聊聊如何选择编程学习资源?
- eclipse 安装图形插件(图形化编程)
- 修改php.ini没效果,修改php.ini后没有效果
- opencv mat赋值_opencv-python 关于位操作
- 麦块服务器显示连接已丢失,麦块服务器密码怎么设置
- mfc大观之四(串行保存)
- 微信回应“取消两分钟内删除功能”;甲骨文裁撤北京中心;Redis 6.0.6 发布| 极客头条
- 验证码——ImageIO.write的坑
- python PPT学习资料分享
- 迁移学习(Transfer Learning)
- centos6.5编译安装mysql_Centos6.5编译安装mysql 5.7.14详细教程
- BZOJ3506 [CQOI2014]排序机械臂
- MySQL 新增、修改、删除 字段 sql语句
- Excel 数据库函数
- 无光驱服务器操作系统安装系统吗,没有光驱的老机型如何安装操作系统。
- 华为日历怎么显示一月_华为手机日历怎么设置
- 全国大学生数学建模竞赛(赛题选择)