*3.34(几何:线段上的点)编程练习题3.32显示了如何测试一个点是否在一个无限长的直线上。修改3.32测试一个点是否在一个线段上。编写程序,输入三个点p0 p1 p2坐标,显示p2在否线段p0p1上
题目
题目概述
*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