判断一个三维坐标点在不在一个面上,不确定有没有问题

//判断一个三维坐标点在不在一个面上
public class JudgeThreeDimensional {
/**
* @param pointA 传的一个三维A坐标点
* @param pointB 传的一个三维B坐## 标题标点## 标题
* @param pointP 要判断的点
* @return
*/
public static boolean judge(PointDto pointA, PointDto pointB, PointDto pointP) {

    //获取最小和最大经度
    float X1 = pointA.getLongitude();
    float X2= pointB.getLongitude();
    //获取最小和最大纬度
    float Y1 = pointA.getLatitude();
    float Y2 = pointB.getLatitude();
    //获取最小和最大海拔
    float Z1 = pointA.getAltitude();
    float Z2 = pointB.getAltitude();



    //经度
    Float length = pointP.getLongitude();
    //纬度
    Float wide = pointP.getLatitude();
    //海拔
    Float height = pointP.getAltitude();



    //假设高度相同时 经度和纬度不同
    if (Z1 == Z2 && X1 != X2 && Y1 != Y2) {

        if (height != Z1) {
            return false;
        }
        //判断length和wide在不在X1和X2之间以及Y1和Y2之间
        if (height == Z1&& length < Math.min(X1, X2) || length > Math.max(X1, X2)
                || wide < Math.min(Y1, Y2) || wide > Math.max(Y1, Y2)) {
            return false;

        }/* else {
            //否则就在平面内
            return true;
        }*/

    }
    //假设高度相同  经度不同和纬度相同
    if (Z1==Z2 && Y1 == Y2 && X1 != X2){
        System.out.println("构不成一个面");
        return false;
    }

    //假设高度相同  经度相同和纬度不同
    if (Z1 == Z2 && X1 ==X2 && Y1 != Y2){
        System.out.println("构不成一个面");
        return false;
    }

    //假设高度相同  经度和纬度相同
    if (X1==X2 &&Y1==Y2 && Z1==Z1){
        System.out.println("构成一个点");
        return false;
    }

    //假设高度不同  经度相同 和 纬度不同
    if (Z1 !==Z2 && X1 == X2 &&Y1 != Y2) {

        //长度与x(经度)不同,不可能在面上
        if (length != X1) {
            return false;
        }
        //长度等于x(经度)与   高度不在最小z(高度)和最大z(高度)之间 不在平面, 或 , 宽度不在最小y(纬度)和最大y(纬度)之间  不在平面
        if (length == X1 && height < Math.min(Z1, Z2) || height > Math.max(Z1, Z2) ||
                wide < Math.min(Y1, Y2) || wide > Math.max(Y1, Y2)) {
            return false;
        }/* else {
            return true;
        }*/
    }

    //假设高度不同 经度不同与纬度相同
    if (Z1 != Z2&& Y1 != Y2 && X1 == X2) {

        //宽度当作上面的高度
        if (wide != Y1) {
            System.out.println("不在平面上");
            return false;
        }
        //宽度相等 长度不在最小x和最大x之间,不在平面上  或  高度不在最大z和最小z之间,不在平面上
        if (wide == Y1 && Math.min(X1, X2) > length || length > Math.max(X1, X2) ||
                Math.min(Z1, Z2) > height || Math.max(Z1, Z2) < height) {

           return false;
        }/* else {

            return true;
        }*/
    }
    //假设高度、经度、纬度不同
    if (Z1 !==Z2 && X1 != X2 && Y1 != Y2) {
        //判断高度点在不在两个点中的最低高度和最高高度之间
        if (height > Math.max(Z1, Z2) || height < Math.min(Z1, Z2)) {
            return false;
        }

        //高度在最大z(高度)和最小z(高度)之间与  长度不在最小x(经度)和最大x(经度)之间  不在平面上, 或  宽度不在最小y(宽度)
        //  和最大y(宽度)之间  不在平面上
        if (height <= Math.max(Z1, Z2) && height >= Math.min(Z1, Z2) && length < Math.min(X1, X2) ||
                length > Math.max(X1, X2) || wide < Math.min(Y1, Y2) || wide > Math.max(Y1, Y2)) {

            return false;
        } /*else {
            return true;
        }*/
    }
    return true;

}

}

关于一个三维坐标在不在一个平面上判断

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值