2015-07-19 7 views
1

Так им пытаются рисовать на Matlab, и это то, что я так далеко от моего исходного кода:Graphing что-то на MATLAB

phi=linspace(0,pi,100); 
theta=linspace(0,pi,100); 
r=phi.^2+theta.^2; 

x=r.*sin(phi).*cos(theta); 
y=r.*sin(phi).*sin(theta); 
z=r.*cos(phi); 
plot3(x,y,z,'*') 

Однако это только дает мне один кусочек, я хочу несколько ломтиков. Как мне это сделать? Спасибо!

ответ

4

Есть несколько проблем с кодом:

  • В своем коде, как он стоит, theta и phi являются векторами. Каждое значение phi связано со значением theta. Это дает линию, а не поверхность. Для создания поверхности вам необходимо создать сетку со всеми комбинациями значений theta, phi в виде матриц. Это можно сделать с помощью ndgrid.
  • Уравнения для тора кажутся неправильными. Я беру их с Wikipedia.
  • theta, phi должна отличаться от 0 к 2*pi (не от 0 к pi).

Код:

phi = linspace(0,2*pi,100); 
theta = linspace(0,2*pi,100); 
[pp, tt] = ndgrid(phi,theta); 
R = 1; 
r = 1; 
x = (R+r.*cos(tt)).*cos(pp); 
y = (R+r.*cos(tt)).*sin(pp);; 
z = r.*sin(tt); 
plot3(x,y,z,'*') 

Рисунок:

enter image description here

+3

Это совершенно психоделический! https://frontpsych.files.wordpress.com/2011/11/psychedelic.jpeg – rayryeng

+0

@rayryeng Головокружительный! :-) –

+0

WOW вы потрясающий. Большое спасибо! –

 Смежные вопросы

  • Нет связанных вопросов^_^