2010-11-18 78 views
2

我有一个问题,在这个link创建具有不同点的多个三角形

你会看到pointInTriangle方法有4个参数。我想知道,我怎么能这3名最后的参数发送给此方法时,我们有N点?有什么办法在为O(n^3)要做到这一点

请帮我谢谢

+0

三角形不超过三(3)个点。你是否想要一个函数来检查一个点是否位于O(n^3)的** a _Polygon_中? – dacwe 2010-11-18 07:30:16

+0

@dacwe我假设他的意思是检查n个点是否在三角形内,而不是检查一个点是否在n边多边形内。 – Grodriguez 2010-11-18 07:36:32

+0

但看着他的链接,最后三个参数是三角点.. – dacwe 2010-11-18 07:39:57

回答

0

你的问题并不完全清楚,但假设你只是想延长this solution检查n个点,我想你可以做这样的事情:

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; 
} 

顺便说一句,这是O(n )。