学习日记|java 课后习题 直线斜率 以及判断坐标是否在直线上点到直线的距离

【学习日记|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); } }

    推荐阅读