*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上,需要满足两个条件:

  1. 将p0 p1 p2坐标代入上式结果为0
  2. 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测试一个点是否在一个线段上。编写程序,输入三个点坐标,显示在否线段相关推荐

  1. Java黑皮书课后题第10章:*10.20(近似e)编程练习题5.26使用下面数列近似计算e(略),为了得到更好的精度,在计算中使用25位精度的BigDecimal

    10.20(近似e)编程练习题5.26使用下面数列近似计算e(略),为了得到更好的精度,在计算中使用25位精度的BigDecimal 题目 首次尝试 代码 运行 关于揪bug 第二次尝试 代码 运行结 ...

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

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

  3. 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 ...

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

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

  5. 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 ...

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

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

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

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

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

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

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

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

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

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

最新文章

  1. iscsi发起程序找不到目标_3分钟学会程序员“面试回答规范”,不怕找不到工作的里面请...
  2. int(*p)[]和int(**p)[]
  3. python 判断 图片是否相同
  4. JavaScript 同时建立多个websocket连接
  5. 部门角色权限rbac_k8s十 | 一文读懂基于角色的权限控制RBAC
  6. 自考计算机软件基础交作业,全国2009年7月自考计算机软件基础(二)试题及答案...
  7. 台式电脑如何截屏_电脑如何安装安卓系统 台式机装安卓系统教程
  8. 关于F5 排错的简单介绍之一
  9. C++ queue
  10. Qt 学习之路 2(3):Hello, world! 笔记
  11. 二叉树的非递归遍历(转载)
  12. PIR控制器调节器并网逆变器电流谐波抑制策略
  13. 黑域助手连接服务器才能用吗,自己装黑域一定要用电脑设置了才能用吗
  14. ubuntu下载android11源码
  15. 分类变量 哑变量矩阵 指标矩阵_ML基础:协方差矩阵
  16. Mybatis阶段常用单词
  17. 学习速写的方法有哪些?如何快速学会速写?
  18. 爬虫有道词典进行自动翻译
  19. IDA详细使用教程,适合逆向新手的实验报告
  20. 华为语音解锁设置_华为手机该怎么实现语音翻译?其实超级简单,这里教你

热门文章

  1. python实现监控增量_Python 快速计算增量的方法
  2. python持久化存储文件操作
  3. CTF基础理论知识02
  4. 封神-性能容量分析报告
  5. Flink State 误用之痛,你中招了吗?
  6. 工作和人工智能的未来
  7. 【图解机器学习】人人都能懂的算法原理
  8. echarts热力背景图_Echarts 图表中设置背景图片
  9. 上线4年从畅销Top 200到Top 20,这款刀塔传奇like卡牌正在美国市场逆流而上
  10. 《铲子骑士》:“复古游戏”的集大成者