создавая много треугольников с разными точками - PullRequest
2 голосов
/ 18 ноября 2010

У меня вопрос, что в этой ссылке

вы увидите pointInTriangle Метод с 4 параметрами. Я хочу знать, как я могу отправить эти 3 последних параметра этому методу, когда у нас есть n точек? Есть ли способ сделать это в O (n ^ 3)

пожалуйста, помогите мне спасибо

Ответы [ 2 ]

1 голос
/ 18 ноября 2010

Можете ли вы использовать Polygon.contains(Point) вместо?

0 голосов
/ 18 ноября 2010

Ваш вопрос не совсем понятен, но при условии, что вы просто хотите расширить это решение , чтобы проверить 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;
}

Byкстати, это O (n).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...