Визуализация в научных исследованиях. Ечкина Е.Ю - 17 стр.

UptoLike

Рубрика: 

Е. Ю. Ечкина, С. Б. Базаров, И. Н. Иновенков «Визуализация в научных исследованиях»
Кафедра АНИ факультета ВМК МГУ имени М. В. Ломоносова http://ani.cs.msu.su
17
Алгоритм графического восполнения векторных величин внутри ячеек осуществляется
вдоль прямой сканирования, которая проходит через локализованную базовую точку
( , )
b b
x y
текущей ячейки.
Для сканирующей прямой находятся точки пересечения с ребрами ячейки. Обозначим
их B, C. Теперь в эти точки необходимо интерполировать значения U из узлов ребер.
Интерполирование значение векторной величины U подразумевает интерполирование
координат вектора
( , )
x y
. Воспользуемся линейной интерполяцией:
1 4 2 3
1 4 2 3
* *
* *
(1 ) , (1 ) ,
B v v C v v
B v v C v v
x tx t x x t x t x
y ty t y y t y t y
где параметры
* * *
1 4 2 3
, : 0 1, 0 1; , .
t t t t t v B v B t v C v C
Вторая интерполяция. Линейно интерполируем значение координат векторов из точек
В, С в точку
( , )
b b
x y
)
(1 ) ,
(1 ) , 0 1, , ( ,
b B C
b B C b b
x px p x
y py p y p p AB AC A x y
.
В результате мы получили приближенное значение искомой векторной величины U в
базовой точке.
Четвертый этап. Мы определили направление движения линии тока от базовой точки.
Теперь нужно найти приближенную кусочно-линейную траектория линии тока.
Метод 1.
Эмпирически задается длина элементарного шага смещения от базовой точки вдоль
вектора U. Например, длина шага ориентировочно определяется некоторым
соотношением габаритов области определения. Зная направление шага и его длину,
однозначно определяется следующая точка линии тока
1
A
. Если вектор
1
AA
не
пересекает ни одного ребра ячейки, то точка
1
A
лежит в текущей ячейке, тогда нужно
повторить третий этап, в другом случае линия тока переходит в другую ячейку, и она
определяется однозначно по пересеченному ребру. Следовательно, меняется текущая
ячейка, и мы переходим к третьему этапу. Продолжая, таким образом,
последовательно определяем линию тока.
Метод 2.
Этот способ является более быстрым, но менее точным, он базируется на одной
линейной интерполяции вдоль ребра ячейки. Из базовой точки выпускается вектор по
найденному направлению до пересечения с каким-нибудь ребром ячейки. Точка
пересечения
1
A
считается следующей точкой линии тока, и она переходит в
следующую ячейку. Далее переходим к третьему этапу, в этом методу происходит
только одна интерполяция векторной величины вдоль пересекаемого ребра. В
результате в точке
1
A
получает значение величины U. Затем из точки
1
A
выпускается
вектор в новом найденном направлении до пересечения с ребром данной ячейки.
Процесс повторяется.
Следует учесть, из базовой точки мы строим линии тока, двигаясь вперед, в этом
случае мы строим линию тока не полностью. По описанному алгоритму легко
продолжить линию тока в обратном направлении от базовой точки. Для этого
необходимо использовать вектор, обратный вектору элементарного смещения.
Е. Ю. Ечкина, С. Б. Базаров, И. Н. Иновенков «Визуализация в научных исследованиях»


Алгоритм графического восполнения векторных величин внутри ячеек осуществляется
вдоль прямой сканирования, которая проходит через локализованную базовую точку
( xb , yb ) текущей ячейки.
Для сканирующей прямой находятся точки пересечения с ребрами ячейки. Обозначим
их B, C. Теперь в эти точки необходимо интерполировать значения U из узлов ребер.
Интерполирование значение векторной величины U подразумевает интерполирование
координат вектора ( x, y ) . Воспользуемся линейной интерполяцией:
                        x B  txv  (1  t ) xv , xC  t * xv  (1  t * ) xv ,
                                 1            4                2               3

                                                           *               *
                        y B  tyv  (1  t ) yv ,
                                 1             4
                                                    yC  t yv  (1  t ) yv ,
                                                                   2               3

                    *                    *                             *
где параметры t , t : 0  t  1, 0  t  1; t  v1 B v4 B , t  v2C v3C .
Вторая интерполяция. Линейно интерполируем значение координат векторов из точек
В, С в точку ( xb , yb )
              xb  pxB  (1  p ) xC ,
                                                                                       .
              yb  py B  (1  p ) yC , 0  p  1, p  AB AC , A  ( xb , yb )
В результате мы получили приближенное значение искомой векторной величины U в
базовой точке.
Четвертый этап. Мы определили направление движения линии тока от базовой точки.
Теперь нужно найти приближенную кусочно-линейную траектория линии тока.

Метод 1.
Эмпирически задается длина элементарного шага смещения от базовой точки вдоль
вектора U. Например, длина шага ориентировочно определяется некоторым
соотношением габаритов области определения. Зная направление шага и его длину,
однозначно определяется следующая точка линии тока A1 . Если вектор AA1 не
пересекает ни одного ребра ячейки, то точка A1 лежит в текущей ячейке, тогда нужно
повторить третий этап, в другом случае линия тока переходит в другую ячейку, и она
определяется однозначно по пересеченному ребру. Следовательно, меняется текущая
ячейка, и мы переходим к третьему этапу. Продолжая, таким образом,
последовательно определяем линию тока.
Метод 2.
Этот способ является более быстрым, но менее точным, он базируется на одной
линейной интерполяции вдоль ребра ячейки. Из базовой точки выпускается вектор по
найденному направлению до пересечения с каким-нибудь ребром ячейки. Точка
пересечения A1 считается следующей точкой линии тока, и она переходит в
следующую ячейку. Далее переходим к третьему этапу, в этом методу происходит
только одна интерполяция векторной величины вдоль пересекаемого ребра. В
результате в точке A1 получает значение величины U. Затем из точки A1 выпускается
вектор в новом найденном направлении до пересечения с ребром данной ячейки.
Процесс повторяется.
Следует учесть, из базовой точки мы строим линии тока, двигаясь вперед, в этом
случае мы строим линию тока не полностью. По описанному алгоритму легко
продолжить     линию тока в обратном направлении от базовой точки. Для этого
необходимо использовать вектор, обратный вектору элементарного смещения.




Кафедра АНИ факультета ВМК МГУ имени М. В. Ломоносова http://ani.cs.msu.su                 17