Здравствуйте, уважаемые участники форума!
На днях я столкнулся с необходимостью исключить точки для построения поверхности в Matlab. Наверное, следует рассказать зачем мне это вообще - мне нужно построить однополостной гиперболоид
. Можно разбить поверхность на два куска и выразить их явно как
. НО при вычислении корней в таких выражениях иногда получаются комплексные значения - Матлаб их игнорирует, но не совсем, и z в таких точках получается 0 (графически).
-- 10.11.2013, 11:46 --Получается, нужно исключить эллипс значений.
-- 10.11.2013, 12:07 --Вот как я пытался это сделать:
Код:
%\\\\\\\\\\\\\\2A\\\\\\\\\\\\\\\\\\\
%\\\\\Гиперболоид однополостный\\\\\
a1=8.398;
b1=2.502;
c1=-8.562;
x01=-1.81;
y01=-1.21;
z01=-1.11;
[X,Y]=meshgrid(-25:0.4:25,-10:0.4:10);
ROOT=((X - x01).^2)./a1.^2 + (( Y - y01 ).^2)./b1.^2 - 1;
for i=1:length(X)
for j=1:length(Y)
if ROOT>=0
Z11=z01+sqrt(ROOT);%//first part
Z12=z01-sqrt(ROOT);%//second part
plot3(X,Y,Z11);%//first part
hold on;
plot3(X,Y,Z12);%//second part
end
end
end