1樓:宇智波帶土
這裡給出一種繪製球面上兩點間圓弧的方法,以供參考:
%% 繪製球面上兩點的圓弧 ellipsoid函式用於繪製橢球
% x^2+y^2 + z ^2 = RR=
1;% 半徑
center=[
0,0,
0];% 球心[x
,y,z
]=ellipsoid
(center(1
),center(2
),center(3
),R,R
,R,30
);figure
surf(x
,y,z
,'LineStyle'
,'none'
,'Facealpha'
,0.2
)axis
equal
hold
on% 花兩點之間的圓弧
p1=[1,
0,0];
p2=[0,
0,1];
plot3(p1
(1),p1(2
),p1(3
),'ro'
)plot3(p2
(1),p2(2
),p2(3
),'ro')xx
=linspace(p1
(1),p2(1
),20
);yy
=linspace(p1
(2),p2(2
),20
);zz
=center(3
)+sqrt
((R^2)-
((xx
-center(1
)).^2)
-((yy-
center(2
)).^
2));
plot3(xx
,yy,zz
,'r-'
)xlabel
('X'
)ylabel
('Y'
)zlabel
('Z'
)第一種情況是在兩點位置比較簡單的情況下,得到影象為:
如果兩點的位置變化的話,如下面上面的程式雖然會有結果但是,可能不是想要的,如:
%% 繪製球面上兩點的圓弧 ellipsoid函式用於繪製橢球
% x^2+y^2 + z ^2 = R
R = 1; % 半徑
center = [0,0,0];% 球心
[x, y, z] = ellipsoid(center(1),center(2),center(3),R,R,R,30);
figure
surf(x, y, z,'LineStyle','none','Facealpha',0.2)
axis equal
hold on
% 畫兩點之間的圓弧
p1=[1,0,0];
p2=[0,-1,0];
plot3(p1(1),p1(2),p1(3),'ro')
plot3(p2(1),p2(2),p2(3),'ro')
xx=linspace(p1(1),p2(1),50);
yy=linspace(p1(2),p2(2),50);
zz=center(3)+sqrt((R^2)-((xx-center(1)).^2)-((yy-center(2)).^2));
plot3(xx,yy,zz,'r-')
xlabel('X')
ylabel('Y')
zlabel('Z')
雖然線在球面上,但是顯然並不是想要的,想要的應該是下面這種情況:
%% 繪製球面上兩點的圓弧 ellipsoid函式用於繪製橢球
% x^2+y^2 + z ^2 = R
R = 1; % 半徑
center = [0,0,0];% 球心
[x, y, z] = ellipsoid(center(1),center(2),center(3),R,R,R,30);
figure
surf(x, y, z,'LineStyle','none','Facealpha',0.2)
axis equal
hold on
% 畫兩點之間的圓弧,其實理想狀況下是Z=0平面上的Y<0圓弧,
% x^2+y^2= R
p1=[1,0,0];
p2=[0,-1,0];
plot3(p1(1),p1(2),p1(3),'ro')
plot3(p2(1),p2(2),p2(3),'ro')
xx=linspace(p1(1),p2(1),50);
zz=0.*xx;
yy=center(2)-sqrt((R^2)-((xx-center(1)).^2)-((zz-center(3)).^2));
plot3(xx,yy,zz,'r-')
xlabel('X')
ylabel('Y')
zlabel('Z')
所以繪製多條弧線的話,可以具體的線具體分析,然後分別繪製,如:
%% 繪製球面上兩點的圓弧 ellipsoid函式用於繪製橢球
% x^2+y^2 + z ^2 = R
R = 1; % 半徑
center = [0,0,0];% 球心
[x, y, z] = ellipsoid(center(1),center(2),center(3),R,R,R,30);
figure
surf(x, y, z,'LineStyle','none','Facealpha',0.2)
axis equal
hold on
% 畫兩點之間的圓弧,其實理想狀況下是Z=0平面上的Y<0圓弧,
% x^2+y^2= R
% line1
p1=[1,0,0];
p2=[0,-1,0];
plot3(p1(1),p1(2),p1(3),'ro')
plot3(p2(1),p2(2),p2(3),'ro')
xx=linspace(p1(1),p2(1),50);
zz=0.*xx;
yy=center(2)-sqrt((R^2)-((xx-center(1)).^2)-((zz-center(3)).^2));
plot3(xx,yy,zz,'r-')
% line2
p1=[1,0,0];
p2=[0,0,1];
plot3(p1(1),p1(2),p1(3),'ro')
plot3(p2(1),p2(2),p2(3),'ro')
xx=linspace(p1(1),p2(1),20);
yy=linspace(p1(2),p2(2),20);
zz=center(3)+sqrt((R^2)-((xx-center(1)).^2)-((yy-center(2)).^2));
plot3(xx,yy,zz,'r-')
xlabel('X')
ylabel('Y')
zlabel('Z')
如何用matlab在圓區域畫出50個隨機點並將它們標記出來?
lidf clc,close all,clear all sc 1.3 定義縮放係數 xy tra 3 定義標籤平移距離 r 300 定義圓的半徑 num pt 50 定義資料點個數 randr r rand num pt,1 生成隨機點 phi 2 pi 0 rand num pt,1 生成隨機角...
通過亥姆霍茲方程是如何推導出球面波表示式的?
首先寫下球座標系下的亥姆霍茲方程 由於是球座標系,利用球諧函式分離變數作試探解 代入方程得到徑向的方程為 做乙個標度變換得到,得到球貝塞爾方程 再做變換,帶回球貝塞爾方程得到 這就是在柱座標和平面極座標下常見的貝塞爾方程.不過在柱座標下常見的是整數階的貝塞爾方程,這裡是階的貝塞爾方程.顯然可以定義球...
如何用Matlab 畫達芬方程?
馬遠馳 樓上已經給出了完整解法,我用Julia也求解了一遍,樓主可以作為參考。using DifferentialEquationsusing Plots function dydt dy y,p t delta alpha beta gamma omega p dy 1 y 2 dy 2 delt...