как экстраполировать координаты точек в трехмерном пространстве с помощью python

У меня есть точки в 3D и я хочу создать некоторые другие точки. Я считаю, что это своего рода экстраполяция с некоторыми правилами. Мои точки находятся в обычной сетке x и y, но их значение z меняется. Я скопировал упрощенный пример здесь:

surface_points=[np.array([[1.,1.,4.], [1.,2.,4.], [2.,1.,5.], [2.,2.,5.], [3.,2.,4.],\
                          [4.,1.,1.2], [4.,2.,1.], [5.,1.,1.], [5.,2.,1.], [6.,1.,1.5],\
                          [6.,2.,1.5], [6.,1.,3.5],[6.,2.,3.5], [7.,1.,3.2], [7.,2.,3.2]])]

Каждые четыре точки создают одну маленькую поверхность. Я создал поверхности, используя это решение . Моя обычная сетка разрезается некоторыми плоскостями, и я хочу расширить поверхности, созданные точками по обе стороны от секущих плоскостей. Это режущие плоскости:

surf_corners=[np.array([[1.5,1.,1.], [1.9,2.,1.], [4.,1.,5.], [4.4,2.,5.]]),\
              np.array([[5.,1.,4.], [5.,2.,4.], [7.,1.,1.], [7.,2.,1.]])]

Я также использовал этот решение для воссоздания секущих плоскостей. На моем фиге четко видно, что я хочу. У меня есть две режущие поверхности, которые делят мою точку на три части. Первый раскол имеет точку 5 и должен проходить через первую режущую поверхность. Во-первых, этому расщеплению требуется еще одна точка, чтобы оно было четным числом, чтобы завершить его 2 поверхности. На самом деле точка в сетке x=3 и y=1 отсутствует. Для этой точки определены x и y, а z должен исходить из ближайшей точки сетки x (пятая точка) (первое правило). Эта шестая точка будет 3, 1, 4. Затем этому разделению нужны еще две точки, чтобы создать еще одну поверхность, проходящую через секущую плоскость. Опять же, x и y определены, но z должно быть рассчитано как z последней точки плюс половина разности последней точки минус точка перед в сетке y (второе правило). Эти новые точки будут 4,1, 4+(4-5)/2 и 4,2, 4+(4-5)/2. Эти три точки показаны желтыми звездочками на моем рис. если в этой строке есть только одна точка, я хочу скопировать только значение z этой точки в новую сгенерированную (третье правило). Вторая щель зажата двумя секущими плоскостями и должна проходить через обе. Для прохождения первой плоскости я должен синтезировать точки с меньшими значениями x. Опять же, x и y фиксированы, и я ищу только значения z. Я копирую второе и третье правила, но с одним отличием: я выполняю расчет для следующих двух точек на сетке y, потому что хочу вычислить точки в обратном порядке. Это расщепление также проходит через следующую плоскость по тем же правилам, что и первое расщепление, прошедшее первую плоскость. Синтезированные точки показаны зелеными квадратами. Последнее разделение возвращается только ко второй секущей плоскости с использованием правил, используемых для второго разделения, проходящего через первую плоскость. Синтезированные точки показаны в виде двух коричневых шестиугольников. Я понятия не имею, сколько новых очков мне нужно, чтобы пройти самолеты. Это все моя идея, и я не знаю, как ее закодировать на питоне. Заранее я ценю любую помощь в этом сложном случае.

введите здесь описание изображения


person Ali_d    schedule 12.04.2021    source источник