Это возможно в основном с использованием XAML, вы создаете объект, представляющий собой трубу длиной 1 и диаметром 1, а затем используете введенные значения для соответствующего масштабирования трубы. Если вы используете шаблон MVVM, вы можете связать текстовые поля, которые пользователь использует для ввода диаметра и высоты, со свойствами в ViewModel, а затем связать матрицы масштабирования с этими значениями.
Для трубы вам понадобятся два набора вершин, обе точки на окружности, например, в. у = 0 и у = 1. Координаты x и z будут cos (угол) и sin (угол) соответственно для угла от 0 до 360 градусов / 2Pi радиан. Чем больше значений вы используете, тем более гладкой будет трубка, 10-15 - хорошая отправная точка. Чтобы труба выглядела более гладкой, вы можете использовать общие нормали, которые будут имитировать более гладкие стороны, изменяя освещение. Нормы для вершины в моем примере выше совпадают с основанием трубы: cos (угол), 0, sin (угол) как для верхней, так и для нижней вершин. Чтобы создать XAML, описывающий эту форму, лучше всего прочитать некоторые 3D-праймеры XAML, чтобы понять, что они делают.