2010-11-18 10 views
2

j'ai une question que dans cette linkcréant de nombreux triangles avec différents points

vous verrez pointInTriangle Méthode avec 4 paramètres .Je veux savoir que comment puis-je envoyer ces 3 derniers paramètres à cette méthode lorsque nous avons n points? Est-il possible de le faire à O (n^3)

s'il vous plaît aidez-moi grâce

+0

Un triangle n'a pas plus de trois (3) points. Voulez-vous une fonction qui vérifie si un point est ** dans ** un _Polygon_ dans O (n^3)? – dacwe

+0

@dacwe Je suppose qu'il veut dire vérifier si n points sont à l'intérieur d'un triangle, plutôt que de vérifier si un point est à l'intérieur d'un polygone à n côtés. – Grodriguez

+0

Mais en regardant son lien les trois derniers paramètres sont les points du triangle .. – dacwe

Répondre

0

Votre question n'est pas tout à fait claire, mais en supposant que vous voulez juste d'étendre this solution pour vérifier n points, je suppose que vous pouvez faire quelque chose comme ceci:

private static float sign(fPoint p1, fPoint p2, fPoint p3) 
{ 
    return (p1.x - p3.x) * (p2.y - p3.y) - (p2.x - p3.x) * (p1.y - p3.y); 
} 

public static boolean[] pointsInTriangle(fPoint[] pt, fPoint v1, fPoint v2, fPoint v3) 
{ 
    boolean b1, b2, b3; 

    boolean[] ret = new boolean[pt.length]; 
    for (int i = 0; i < pt.length; i++) 
    { 
     b1 = sign(pt[i], v1, v2) < 0.0f; 
     b2 = sign(pt[i], v2, v3) < 0.0f; 
     b3 = sign(pt[i], v3, v1) < 0.0f; 
     ret[i] = ((b1 == b2) && (b2 == b3)); 
    } 
    return ret; 
} 

Par ailleurs, c'est O (n).

Questions connexes