DOS_X's blog

By DOS_X, history, 11 years ago, In Russian

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

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

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

  • Vote: I like it
  • +5
  • Vote: I do not like it