У меня есть точки в 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, потому что хочу вычислить точки в обратном порядке. Это расщепление также проходит через следующую плоскость по тем же правилам, что и первое расщепление, прошедшее первую плоскость. Синтезированные точки показаны зелеными квадратами. Последнее разделение возвращается только ко второй секущей плоскости с использованием правил, используемых для второго разделения, проходящего через первую плоскость. Синтезированные точки показаны в виде двух коричневых шестиугольников. Я понятия не имею, сколько новых очков мне нужно, чтобы пройти самолеты. Это все моя идея, и я не знаю, как ее закодировать на питоне. Заранее я ценю любую помощь в этом сложном случае.