Сплайн над цилиндром

Я пытаюсь нарисовать синюю линию на изображении ниже в Matlab на основе геометрии тройника. Для этого я использую итерацию координат и сплайн-функции. Я не знаю почему, но я не могу заставить его работать должным образом. Можешь просветить меня?

Спасибо,

очистить все; клк;

%Defining Graph size
x = -D/2:((D/2)+l2);
y = -l1/2 :l1/2;
z = -D/2: D/2;

%Variable Definition
r = D/2;


%Winding step one

for y=-r-l2:0.01:0;
    x = -(r+l2)/r;
    z = sqrt(r.^2-x.^2);
    xyz = [x ; y ; z];
    %can be erased to remove points
    fnplt(cscvn(xyz(:,[1:end 1])),'r',2);
    hold on;
    end

    %Axis Labeling
xlabel('X Axis','FontSize',14);
ylabel('Y Axis','FontSize',14);
zlabel('Z Axis','FontSize',14);
title('Tjoint winding w/o radii','FontSize',14);

person Cédrick Lévesque-Baker    schedule 02.02.2016    source источник
comment
Я предполагаю, что начальные строки, запрашивающие ввод, не связаны с вашей проблемой. Пожалуйста, замените их некоторыми константами. Это предотвращает возникновение дополнительных проблем при выборе неправильных параметров.   -  person Daniel    schedule 02.02.2016
comment
Я не знаю почему, но я не могу заставить его работать должным образом. Что не работает? Код работает? Это дает выход? Вывод правильный или нет? Откуда вы знаете? На ваш вопрос очень трудно ответить без этой важной информации.   -  person David    schedule 02.02.2016
comment
Привет Дэвид, извините, что не достаточно ясно. проблема, кажется, в z = sqrt (r. ^ 2-x. ^ 2); Я получаю предупреждение: Предупреждение: мнимые части сложных аргументов X, Y и/или Z игнорируются › В fnplt на 237 В Twinding_revb на 37 (строка 37 — это fnplt(cscvn(xyz(:,[1:end 1])) ,'r',2);) Не понимаю почему, вроде ошибка в уравнениях, но своей ошибки не вижу. спасибо   -  person Cédrick Lévesque-Baker    schedule 02.02.2016


Ответы (1)


Я обнаружил свою ошибку сам после хорошей ночи сна, и было довольно очевидно, что я просто сделал ошибку в отношении уравнений, которые я использовал. Вот исправленный код, если кому-то может пригодиться.

  clear all;
clc;
%TJoint Winding w/o radius
%The idea is to experiment with matlab 

%Obtains the values 
D = 'What is the diameter of the t joint? ';
D = input(D);

l1 = 'What is the length 1 of the t joint? ';
l1 = input(l1);

l2 = 'What is the length 2 of the t joint? ';
l2 = input(l2);

w = 'What is the width of the carbon fiber used? ';
w = input(w);

'Thank you, we are now processing the Filament winding of your T-Joint. Please wait ';

%Defining Graph size
x = -l1/2 :l1/2;
y = -D/2:((D/2)+l2);
z = -D/2: D/2;

%Variable Definition
r = D/2;


%Winding step one

for y=-r-l2:0.01:0;
    x = (-r/(r+l2))*y ;
    z = sqrt(r.^2-x.^2);
    xyz = [x ; y ; z];
    %can be erased to remove points
    fnplt(cscvn(xyz(:,[1:end 1])),'r',2);
    hold on;
    end

    %Axis Labeling
xlabel('X Axis','FontSize',14);
ylabel('Y Axis','FontSize',14);
zlabel('Z Axis','FontSize',14);
title('Tjoint winding w/o radii','FontSize',14);
person Cédrick Lévesque-Baker    schedule 03.02.2016