Насколько сложно это будет, зависит от того, сможете ли вы работать с фрагментами по отдельности или вам нужно воздействовать на том в целом.
В первом случае будет намного проще, если ваш цилиндр выровнен по любой из осей. Затем вы можете использовать уравнение эллипса поперечного сечения, чтобы определить границу в поперечной плоскости, которую вы можете применить ко всем срезам. Это позволит вам делать что-то внутри плоскости, например проверять точки внутри/снаружи, маскировать изображение. Я не могу предположить, как это может взаимодействовать с диаграммой Вороного, кроме как путем исключения внешних точек, но похоже, что основная проблема заключается в представлении эллипса/цилиндра.
Если ваш цилиндр не выровнен по оси, то это сложнее, но в принципе та же процедура: спроецируйте эллипс на плоскость изображения и сместите его в каждом срезе в соответствии с углом между продольным вектором цилиндра и осью, нормальной к изображениям.
Если вы собираетесь работать с объемом, вы должны делать то же самое, но в другом порядке (это зависит от того, для чего вы его используете): как только вы вычислите пересечение между данным изображением и цилиндром, вы можно сначала применить маску или границу к каждому срезу, а затем нарисовать диаграмму Вороного.
Главное — избегать необходимости представлять цилиндр в виде 3D-объекта: это возможно даже без символической математики, но это сложно, и, поскольку ваш набор данных естественным образом упорядочен в виде срезов, было бы наиболее последовательно также разрезать ваш цилиндр, эллипсы намного более компактно, чем цилиндр.
И для всех этих вариантов первым шагом является математическое определение проблемы. В зависимости от того, насколько вам удобно работать с Matlab, вы можете преобразовать его в псевдокод, а затем, наконец, в Matlab или пропустить псевдокод.
person
xenoclast
schedule
12.05.2015