我有一个问题,在这个link创建具有不同点的多个三角形
你会看到pointInTriangle
方法有4个参数。我想知道,我怎么能这3名最后的参数发送给此方法时,我们有N点?有什么办法在为O(n^3)要做到这一点
请帮我谢谢
我有一个问题,在这个link创建具有不同点的多个三角形
你会看到pointInTriangle
方法有4个参数。我想知道,我怎么能这3名最后的参数发送给此方法时,我们有N点?有什么办法在为O(n^3)要做到这一点
请帮我谢谢
你可以使用Polygon.contains(Point)
呢?
我应该用O(n^3)做这个工作 – user472221 2010-11-18 06:47:50
多边形在O(n)中做它,这样更好! :) – dacwe 2010-11-18 08:04:36
你的问题并不完全清楚,但假设你只是想延长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 )。
三角形不超过三(3)个点。你是否想要一个函数来检查一个点是否位于O(n^3)的** a _Polygon_中? – dacwe 2010-11-18 07:30:16
@dacwe我假设他的意思是检查n个点是否在三角形内,而不是检查一个点是否在n边多边形内。 – Grodriguez 2010-11-18 07:36:32
但看着他的链接,最后三个参数是三角点.. – dacwe 2010-11-18 07:39:57