Блог пользователя DOS_X

Автор DOS_X, история, 11 лет назад, По-русски

Привет codeforces, знаю, здесь сидят самые настоящие знатоки, а посему — снимаю шляпу и прошу помощи.

Суть задачи такова — есть точка в пространстве(3D), есть триангуляция в том же пространстве. Мне нужно спроецировать мою точку на эту триангуляцию. Естественно, я могу сделать грубо — перебором, отыскать все проекции и выбрать ближайшую. Но точек, в идеале не одна, а много, и квадратичный вариант слишком долог. Однако, знаю я о существовании KD Trees и VP Trees, но речь не о последнем. Собственно говоря, решил делать так — искать ближайший треугольник и на него проецировать. Вопрос в том, как найти этот треугольник, а точнее, как построить дерево, а затем искать по нему за log N в среднем случае. Из своих нагугливаний, узнал что можно и нужно использовать Баундинг Бокс объекта. Вопрос в том, как строить дерево из этого и что считать расстоянием (длину отрезка от проецируемой точки до центра масс ББ или все таки длину проекции от точки на треугольник ).

И верно ли, что проекция точки на треугольник не всегда существует (напрмиер, когда точка и треугольник лежат на одной плоскости, но точка лежит не внутри треугольника)?

Полный текст и комментарии »

  • Проголосовать: нравится
  • +5
  • Проголосовать: не нравится