Неожиданный результат для сюжета

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

Пытался изменить порядок заполнения массива кривыми, но безрезультатно.

% Outer Spade
% Lower Curve Control Points
p1 = [0, 0, 0.5, 0.6;
     -1, 0, 0.1,  0];
p2 = refy(p1);
% Higher Curve Control Points
p3 = [0.6, 0.75, 0.75 , 0;
      0,  0.15, 0.4 ,   1]; 
p4 = refy(p3);


outer = [];


t = linspace(0,1,100);


C1 = cubic_bezier(p1,t);
C2 = cubic_bezier(p2,t);
C3 = cubic_bezier(p3,t);
C4 = cubic_bezier(p4,t);

outer =[outer C1,C3,C2,C4];

plot(outer(1,:),outer(2,:),'-b')

axis([-2 2 -1 3])






function C = cubic_bezier(P,t)
M = [-1,3,-3,1;
     3,-6,3,0;
    -3,3,0,0;
     1,0,0,0];

T = [t.^3;t.^2;t;t.^0];
C = P * M * T;
end

function r = refy(m)
r = [-1,0;0,1] * m;
end

Если я заменю внешний и внешний график вместо этого следующим кодом

hold on
plot(C1(1,:),C1(2,:))
plot(C2(1,:),C2(2,:))
plot(C3(1,:),C3(2,:))
plot(C4(1,:),C4(2,:))

Тогда я получаю то, что ожидал, надеюсь, это поможет. заранее спасибо

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

Mike 'Pomax' Kamermans 05.02.2019 02:25
Структурированный массив Numpy
Структурированный массив Numpy
Однако в реальных проектах я чаще всего имею дело со списками, состоящими из нескольких типов данных. Как мы можем использовать массивы numpy, чтобы...
T - 1Bits: Генерация последовательного массива
T - 1Bits: Генерация последовательного массива
По мере того, как мы пишем все больше кода, мы привыкаем к определенным способам действий. То тут, то там мы находим код, который заставляет нас...
Что такое деструктуризация массива в JavaScript?
Что такое деструктуризация массива в JavaScript?
Деструктуризация позволяет распаковывать значения из массивов и добавлять их в отдельные переменные.
0
1
32
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

При объединении C1, C3, C2 и C4 в один массив, т.е. outer, и при используйте plot для построения линии между двумя последовательными точками, предыдущая точка соединяется со следующей точкой.

У вас есть outer(:,200) = [-1.1102e-16 ; 1] и outer(:,201) = [0; -1]. При использовании plot линия строится между этими двумя точками так же, как и линии между остальными точками. Эту строку вы называете "случайная линия, пересекающая середину". Если вы хотите сохранить один массив и избежать этого, вы можете объединить столбец NaNs между ними следующим образом:

outer = [C1, nan(2,1), C3, nan(2,1), C2, nan(2,1), C4];

который дает:

output

При построении C1, C2, C3 и C4 по отдельности конечная точка каждого из них не имеет связи с начальной точкой другие, и, следовательно, сюжеты независимы друг от друга, и вы не получаете эту линию посередине.

Спасибо, что указали на это. Я заметил, что когда я меняю эти значения, линия сохраняется, хотя, не уверен, что я делаю неправильно, я чувствую себя очень глупо в этот момент :(

Dead_Ling0 01.02.2019 21:32

Какое изменение вы сделали, чтобы линия сохранилась?

Sardar Usama 01.02.2019 21:33

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

Dead_Ling0 01.02.2019 21:35

Даже когда я использую нан, я все равно получаю линию, даже если у вас ее нет :?

Dead_Ling0 01.02.2019 21:37

В другой форме у вас есть следующая точка в некоторой симметричной непрерывности с предыдущей точкой. В этой форме у вас нет. Поведение очень ожидаемое.

Sardar Usama 01.02.2019 21:37

Вы не сможете получить эту линию с NaN. clear outer и снова инициализируйте его, как я показал, и снова plot

Sardar Usama 01.02.2019 21:38

Решил это сейчас, спасибо за терпение со мной :), так что проблема была в том, что сюжет просто добавлял дополнительный балл?

Dead_Ling0 01.02.2019 21:41

Ах, сам plot не добавляет лишних слов. Ответ на ваш комментарий выше находится в первых двух абзацах ответа.

Sardar Usama 01.02.2019 21:42

Другие вопросы по теме