Я совершенно новый в Ocean Framework. У меня проблема с копией объекта SeismicCube с разным размером. Мне нужно изменить размер K-индекса куба для повторной выборки времени/глубины. Все, что я знал, это клонировать куб с точно такими же свойствами. Что-то вроде этого:
Template template = source.Template;
clone = collection.CreateSeismicCube(source, template);
с исходным является исходный куб, и клон - результат. Можно ли найти способ изменения размера клона до разного размера? размер индекса K (длина трассы). Я изучил методы перегрузки CreateSeismicCube, но до сих пор не могу понять, как заполнить правильные параметры. У вас, ребята, есть решение по этой проблеме? Заранее спасибо.
Когда вы создаете сейсмический куб, используя перегрузку, которая клонирует из другого сейсмического куба, вы не можете изменять его в любом направлении (I, J или K). Если вам нужен другой размер K для вашего нового куба, вы должны создать его, предоставляя длинный список аргументов, который включает в себя векторы, описывающие его вращение и интервал. Вы можете сгенерировать векторы из исходного куба, используя образцы, близкие к исходному образцу (0,0,0) исходного сейсмического куба.
Подумайте, что у вас есть следующие места в кубе, выраженные их индексами I, J, K. Так как вектор K легко генерируется, но только для частоты дискретизации, я сосредоточусь на я и J здесь.
Во-первых, получите позиции в начале координат и две соседние трассы.
Point3 I0J0 = inputCube.PositionAtIndex( new IndexDouble3( 0, 0, 0 ) );
Point3 I1J0 = inputCube.PositionAtIndex( new IndexDouble3( 1, 0, 0 ) );
Point3 I0J1 = inputCube.PositionAtIndex( new IndexDouble3( 0, 1, 0 ) );
Теперь создайте сегменты в направлениях я и J и используйте их для создания векторов.
Vector3 iVector = new Vector3( new Segment3( I0J0, I1J0 ) );
Vector3 jVector = new Vector3( new Segment3( I0J0, I0J1 ) );
Теперь создайте вектор K из выборки входного куба. Обратите внимание, что вы должны отрицать значение.
Vector3 kVector = new Vector3( 0, 0, -inputCube.SampleSpacingIJK.Z );