Java黑皮书课后题第3章:*3.34(几何:线段上的点)编程练习题3.32显示了如何测试一个点是否在一个无限长的直线上。修改3.32测试一个点是否在一个线段上。编写程序,输入三个点坐标,显示在否线段
*3.34(几何:线段上的点)编程练习题3.32显示了如何测试一个点是否在一个无限长的直线上。修改3.32测试一个点是否在一个线段上。编写程序,输入三个点p0 p1 p2坐标,显示p2在否线段p0p1上
- 题目
- 题目概述
- 运行示例
- 编程练习题3.32与破题
- 代码
题目
题目概述
*3.34(几何:线段上的点)编程练习题3.32显示了如何测试一个点是否在一个无限长的直线上。修改3.32测试一个点是否在一个线段上。编写程序,输入三个点p0(x0,y0) p1(x1,y1) p2(x2,y2)坐标,显示p2在否线段p0p1上
运行示例
Enter three points for p0, p1 and p2: 1 1 2.5 2.5 1.5 1.5
(1.5, 1.5) is on the line segment from (1.0, 1.0) to (2.5, 2.5)
Enter three points for p0, p1 and p2: 1 1 2 2 3.5 3.5
(3.5, 3.5) is not on the line segment from (1, 1) to (2, 2)
编程练习题3.32与破题
参考我的3.32博文(点击这里直达),或复制url到浏览器:
https://blog.csdn.net/weixin_46356698/article/details/119817842
判断p2是否在p0p1上的公式:
(x1 - x0) * (y2 - y0) - (x2 - x0) * (y1 - y0)
如果该等式=0,则p2在线段上
那么p2要在线段p0p1上,需要满足两个条件:
- 将p0 p1 p2坐标代入上式结果为0
- p2的x坐标范围和y坐标范围在p0(的x或y坐标)到p1(的x或y坐标)之间
代码
import java.util.Scanner;public class Test3_34 {public static void main(String[] args) {// 获取三个点的坐标Scanner input = new Scanner(System.in);System.out.println("Enter three points for p0, p1 and p2: ");double x0 =input.nextDouble(), y0 = input.nextDouble();double x1 =input.nextDouble(), y1 = input.nextDouble();double x2 =input.nextDouble(), y2 = input.nextDouble();// 代入公式判断是否在直线p0p1上boolean result0 = false;double onTheLine = (x1 - x0) * (y2 - y0) - (x2 - x0) * (y1 - y0);if(onTheLine == 0)result0 = true;// 判断p2是否在线段p0p1上boolean result1 = false;if((x2 >= Math.min(x0, x1) && (x2 <= Math.max(x0, x1))) &&(y2 >= Math.min(y0, y1) && (y2 <= Math.max(y0, y1))))result1 = true;// 输出结果if((result0 && result1) == true)System.out.println("("+x2+", "+y2+") is on the line segment from ("+x0 + ", "+y0+") to ("+x1+", "+y1+")");elseSystem.out.println("("+x2+", "+y2+") is not on the line segment from ("+x0 + ", "+y0+") to ("+x1+", "+y1+")");}
}
Java黑皮书课后题第3章:*3.34(几何:线段上的点)编程练习题3.32显示了如何测试一个点是否在一个无限长的直线上。修改3.32测试一个点是否在一个线段上。编写程序,输入三个点坐标,显示在否线段相关推荐
- Java黑皮书课后题第10章:*10.20(近似e)编程练习题5.26使用下面数列近似计算e(略),为了得到更好的精度,在计算中使用25位精度的BigDecimal
10.20(近似e)编程练习题5.26使用下面数列近似计算e(略),为了得到更好的精度,在计算中使用25位精度的BigDecimal 题目 首次尝试 代码 运行 关于揪bug 第二次尝试 代码 运行结 ...
- 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黑皮书课后题第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.11(代数:2*2的线性方程)为一个2*2的线性方程设计一个名为LinearEquation的类
Java黑皮书课后题第9章:*9.11(代数:2*2的线性方程)为一个2*2的线性方程设计一个名为LinearEquation的类 题目 破题 代码 Test10 Test11_LinearEquat ...
最新文章
- iscsi发起程序找不到目标_3分钟学会程序员“面试回答规范”,不怕找不到工作的里面请...
- int(*p)[]和int(**p)[]
- python 判断 图片是否相同
- JavaScript 同时建立多个websocket连接
- 部门角色权限rbac_k8s十 | 一文读懂基于角色的权限控制RBAC
- 自考计算机软件基础交作业,全国2009年7月自考计算机软件基础(二)试题及答案...
- 台式电脑如何截屏_电脑如何安装安卓系统 台式机装安卓系统教程
- 关于F5 排错的简单介绍之一
- C++ queue
- Qt 学习之路 2(3):Hello, world! 笔记
- 二叉树的非递归遍历(转载)
- PIR控制器调节器并网逆变器电流谐波抑制策略
- 黑域助手连接服务器才能用吗,自己装黑域一定要用电脑设置了才能用吗
- ubuntu下载android11源码
- 分类变量 哑变量矩阵 指标矩阵_ML基础:协方差矩阵
- Mybatis阶段常用单词
- 学习速写的方法有哪些?如何快速学会速写?
- 爬虫有道词典进行自动翻译
- IDA详细使用教程,适合逆向新手的实验报告
- 华为语音解锁设置_华为手机该怎么实现语音翻译?其实超级简单,这里教你