Как построить переменное сечение цилиндра?

x = r*cos(t) + ur*cos(t)    
y = r*sin(t) + ur*sin(t)
z = zeros(length(x))   

Длина цилиндра указана в направлении z от 0 до 10.

Переменная ur изменяется с каждым значением z. Он представляет собой переменную толщину цилиндра.

Я попробовал plot3(), сделав z матрицей, но она создает круг, а не цилиндр.


person Raza Mehdi    schedule 29.12.2019    source источник
comment
ваш z просто равен нулю (на самом деле это квадратная матрица с нулями в зависимости от длины t). Итак, есть 3-е измерение, и plot3() даст вам всего лишь криклу.   -  person max    schedule 29.12.2019


Ответы (2)


z = единицы (1, число (x)) '* (0:10)

сделает трюк, чтобы получить значения для создания цилиндра с z от 0 до 10.

person MarkP    schedule 29.12.2019
comment
Он создает круги от 0 до 10, но не цилиндр. - person Raza Mehdi; 30.12.2019

Этот код может помочь, вместо использования инструкции pol2cart вы можете использовать свои собственные уравнения, результирующая форма зависит от диапазона, указанного в meshgrid в начале, также я добавил параметр вращения, конечно, вы можете прокомментировать это, чтобы игнорировать этот параметр, если вы это сделаете как.

%===========================
% Close and Clear
%===========================
clc
close all
clear all
%===========================
% making a cylinder
%===========================
[theta, r, h] = meshgrid(0:.1:6.28,0:0.1:1, 0:.2:4); 
%====================================
% transforming the coordinate system
%====================================
[x, y, z] = pol2cart(theta, r, h); 
%====================================================
% rotating the data points around x axis by 60 degree
%====================================================
P = (rotx(60) * [x(:), y(:), z(:)]')';
%P = [x(:), y(:), z(:)];
%=======================================
%=======================================
% Drawing The Cloud Points
%=======================================
figure('Name','Cylinder Point Cloud','NumberTitle','off');
scatter3(P(:, 1), P(:, 2), P(:, 3)); % plots a circles around sample points
title('Cylinder Point Cloud');
axis equal
%===============================================
person Bilal    schedule 30.12.2019
comment
Ваш код будет генерировать цилиндр одинаковой толщины, но мой вопрос связан с переменным радиусом/толщиной - person Raza Mehdi; 01.01.2020