J'ai essayé le code pour trouver "si un point se trouve à l'intérieur d'un triangle ou non", en utilisant l'aire. Je pense que de cette façon, je peux trouver la réponse à "si un point se trouve à l'intérieur d'un polygone ou non" parce que tout polygone est fait d'un ou plusieurs triangles.Mais lorsque le polygone a plus de côtés, cette méthode sera complexe.Je veux savoir Y a-t-il une autre façon plus simple de l'implémenter en Java.

C'est mon code pour trouver "si un point se trouve à l'intérieur d'un triangle ou non".

class PointInTriangle {
    static double AreaofTriangle(int x1,int y1,int x2,int y2,int x3,int y3){ 
        return 0.5*(double)Math.abs(x1*(y2-y3)+x2*(y3-y1)+x3*(y1-y2));
    }
    static boolean isInTriangle(int x1,int y1,int x2,int y2,int x3,int y3,int px,int py){
        double bigArea,area1,area2,area3;
        bigArea = AreaofTriangle(x1, y1, x2, y2, x3, y3);
        area1 = AreaofTriangle(px, py, x2, y2, x3, y3);
        area2 = AreaofTriangle(x1, y1, px, py, x3, y3);
        area3 = AreaofTriangle(x1, y1, x2, y2, px, py);

        if(bigArea == (area1+area2+area3)) {
            return true;
        }
        return false;
    }
    public static void main(String[]args){
        Scanner in = new Scanner(System.in);
        System.out.println("Enter three points of triangle:");// (x1,y1) , (x2,y2) , (x3,y3)
        int x1,y1,x2,y2,x3,y3,px,py;
        x1 = in.nextInt();
        y1 = in.nextInt();
        x2 = in.nextInt();
        y2 = in.nextInt();
        x3 = in.nextInt();
        y3 = in.nextInt();

        System.out.println("\nEnter searching point:");// (px,py)
        px = in.nextInt();
        py = in.nextInt();

        if(isInTriangle(x1, y1, x2, y2, x3, y3, px, py)){
            System.out.println("\nExtra point is in the triangle");
        }
        else{
            System.out.println("\nExtra point is not in the triangle");
        }

    }
}
3
Nuwan Harshakumara Piyarathna 14 janv. 2020 à 06:25