【【JAVA 第四章 流程控制语句】课后习题 直线斜率 以及判断坐标是否在直线上点到直线的距离】不知道对不对,请教大神帮忙找下。公式是否有错
import java.util.Scanner;
public class Test {/*设计并实现一个MyLine 类,它表示直线。构造方法中使用两个给定的点确定直线对象
定义一些基本方法 例如求直线的斜率 判断给定点是否在直线上 计算给定点到给定直线的距离等*/
public static void main(String[] args) {//实例化一条直线
MyLine ml = new MyLine(10,20,30,40);
//打印直线的斜率
ml.Slope();
ml.pointOnSlope(40,50);
ml.distance(20,20);
}}class MyLine{
//点一
private double x1;
private double y1;
//点二
private double x2;
private double y2;
private double k = 0.0;
//两参构造方法
public MyLine(double x1,double y1,double x2,double y2){
this.x1 = x1;
this.y1 = y1;
this.x2 = x2;
this.y2 = y2;
}/*
直线斜率定义:一由一条直线与右边X轴所成的角的正切。
########直线与X轴正向的夹角叫倾斜角 范围是[0,180°) 左闭右开#######
公式 k=(y2-y1)/(x2-x1)
*/
public void Slope(){k = (y2-y1)/(x2-x1);
if (x2 == x1){
System.out.println("该直线与X轴垂直 没有斜率!");
}else{
System.out.println("该直线的斜率是:"+k);
}}//判断给定的点是否在直线上
/*通过判断斜率是否相等 判断是否在直线
* ( endY - beginY ) / ( endX - beginX ) ==( Y - beginY ) / ( X - beginX )
* 通过直线斜率 代入直线方程判断
* 直线方程: y-beginY =k * (x - beginX)*/
public void pointOnSlope(double x1,double y1){
if (y1 - this.y1 == k * (x1 - this.x1)){
System.out.println("该坐标在直线上!");
}else{
System.out.println("该坐标不在直线上!");
}
}
//判断给定点到直线的距离
// 求点到直线Ax + By + C = 0的距离公式为:
//d = [AX0 + BY0 + C的绝对值]/[(A^2 + B^2)的算术平方根]
public void distance(double x0,double y0){double a = y2 - y1;
double b = x1 - x2;
double c = (x2*y1) - (x1*y2);
double result =0.0;
result = Math.abs(a*x0 + b*y0 + c)/ Math.sqrt(a*a +b*b);
System.out.println("点到直线的距离是:"+result);
}
}