Простой способ интерполировать между точками в 3D пространстве для формирования гладкой поверхности

Попробуйте этот вариант, если хотите, чтобы папка div находилась в дочернем div , поэтому не нужно указывать z-index: 999; для отца div Вы должны дать z-index: -1; дочернему div.

.father {
  width: 250px;
  height: 250px;
  background-color: red;
  overflow: hidden;
  border-radius: 6px;
  position: absolute;
  left:50px;
  top:50px;
}

.child{
  position: fixed;
  left:0;
  right:0;
  top:0;
  bottom:0;
  background-color: blue;
  z-index: -1;
}
<div class="father">
    <div class="child">
    </div>
</div>

12
задан sanity 24 November 2008 в 02:43
поделиться

6 ответов

Можно сделать это путем построения патчей из шлицов Catmull-Rom. Эти шлицы поразят каждую из контрольных точек, и они непрерывны в первой производной (хотя не второе). Я также нахожу, что они чрезвычайно легки работать с. Математика проста, и они ведут себя интуитивно с небольшими изменениями в контрольных точках.

На высшем уровне Вам будут нужны 16 точек на патч (в краю Вашего набора данных, можно использовать угол, и край указывает дважды в том же шлице).

Во-первых, необходимо будет интерполировать через точки p [я] [j] в каждой строке в Вашем 4x4 матрица для создания ряда четырех промежуточных контрольных точек q [я]. Вот грубый эскиз ASCII того, что я имею в виду.

p00 p01 q0 p02 p03
p10 p11 q1 p12 p13
p20 p21 q2 p22 p23
p30 p31 q3 p32 p33

Теперь можно интерполировать между каждой из тех четырех промежуточных контрольных точек, чтобы найти, что финал шлицевал точка на поверхности.

Вот конструкция шлица Catmull-Rom через четыре точки. В этом примере Вы интерполируете между точками p [i-1] и p [я], с помощью контрольных точек с обеих сторон p [i-2] и p [i+1]. u является коэффициентом интерполяции в пределах от нуля одному. τ определяется как сила на шлице и будет влиять, как плотно Ваша шлицевавшая поверхность соответствует Вашим контрольным точкам.

                 | 0   1   0    0 | | p[i−2] |
                 |−τ   0   τ    0 | | p[i−1] |
p(u) = 1 u u2 u3 | 2τ τ−3 3−2τ −τ | | p[i]   |
                 |−τ  2−τ τ−2   τ | | p[i+1] |

Примечание: не сразу очевидно, как разметить это в gui Stackoverflow, но u2, и u3, как предполагается, представляют u, в квадрате и возведенный в куб u, соответственно.

11
ответ дан 2 December 2019 в 20:20
поделиться

Вы ищете поверхностную интерполяцию, или сетка была бы достаточно?

Для поверхностной интерполяции я вижу, что другой предложили использовать триангуляции (например, используют это: http://en.wikipedia.org/wiki/Delaunay_triangulation)

Для создания сетки: один из моих коллег использовал уравнение тепла (http://en.wikipedia.org/wiki/Heat_equation) для вычислений значений для пикселей вне данных точек выборки. Этот созданный чрезвычайно реалистически выглядящий ландшафт поверхности, и это было тривиально для параллелизации.

1
ответ дан 2 December 2019 в 20:20
поделиться

Можно использовать билинейный / бикубическая интерполяция, но в трех направлениях (trilinear/tricubic, соответственно). Это довольно тривиально, если Вы понимаете, как эти формы интерполяции работают. См. Интерполяцию Tricubic на Википедию для получения дополнительной информации.

4
ответ дан 2 December 2019 в 20:20
поделиться

Используйте патчи catmull-rom

0
ответ дан 2 December 2019 в 20:20
поделиться

Если Вы хотите простую линейную интерполяцию той точки, то значение Z центральной точки является просто средними из 4 соседних Z-значений, учитывая расстояния симметричны и в Y и в X.

Если расстояния не симметричны, но центральная точка всегда находится на тех же строках X и Y, можно вычислить и Y и X интерполяций, и окончательное значение является средними из тех.

Таким образом, Zc был бы: Zc = (Zx1+x* (Zx2-Zx1) / (x2-x1) +Zy1+y* (Zy2-Zy1) / (y2-y1))/2, где X и Y являются расстояниями от x1 и y1.

0
ответ дан 2 December 2019 в 20:20
поделиться

Проблема при интерполяции использования схемы, предложенной в вопросе, где некоторое подмножество ближайших соседей выбрано из рассеянного набора, состоит в том, что результат не должен быть непрерывным.

Подумайте об этом. Предположим, что я должен был пройти некоторый гладкий, непрерывный путь через (x, y) плоскость. Целый 4 ближайших соседа не изменяются, interpolant будет гладким, определен однако, Вы приняли решение сделать так. Однако в какой-то момент то подмножество ближайших соседей внезапно изменится. В той точке у Вас должно быть interpolant последовательное через границу. Лучше всего должен использовать триангуляцию набора независимой переменной. Это гарантирует непрерывный (линейный) interpolant в выпуклой оболочке данных. С большим количеством работы интерполяции высшего порядка могут также быть достигнуты с триангуляцией.

Радиальные основные функции также обычно также использоваться для интерполяции или Кригинга, если Вы, оказывается, в геостатистику. Так как Вы изучали основанные на расстоянии методы, рассматриваете радиальные основные функции. Например, поиск "обратной мультиотносящейся ко второму порядку интерполяции".

0
ответ дан 2 December 2019 в 20:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: