2
我正在繪製一個3d點雲,但難以將這個圖形旋轉到某個姿勢。如何將圖形視點移動到三維位置,查看矢量?
例如,
figure; hold on;
z = linspace(0,3*pi,250);
x = 2*cos(z) + rand(1,250);
y = 2*sin(z) + rand(1,250);
plot3(x, y, z, 'b.', 'MarkerSize', 20);
plot3(x(1), y(1), z(1), 'kx', 'MarkerSize', 20);
plot3([x(1) x(end)], [y(1) y(end)], [z(1) z(end)], '-k');
默認視角
我想沿着從 'X' 位置的黑線的樣子。我可以手動旋轉用GUI控件的身影,我發現我使用
view(96, -46);
然而在獲得96方位最接近海拔-46
我的觀點旋轉到這個位置,該觀點實際上並不位於'X'的頂部。 'X'在視點前方有一段距離。另外,每次我調用此代碼時,我都有不同的矢量,所以每次都不能使用相同的方位角和仰角。
我應該可以計算矢量的方位角和仰角。我的企圖,
x_dif = x(end)- x(1);
y_dif = y(end)-y(1);
z_dif = z(end)-z(1);
azimuth = (atan(x_dif/y_dif))*180/pi;
elevation = (atan(z_dif/sqrt(x_dif^2+y_dif^2)))*180/pi;
view(azimuth, elevation);
這產生了一個不正確的解決方案。我認爲這可能是因爲方位角和高程應該相對於情節框的中心。 (view
documentation)。我不知道如何做到這一點。
如何計算並應用旋轉給定的矢量圖?
猜猜我剛剛在文檔中忽略了這一點。好找! – Cecilia
不用擔心,文檔會掩蓋它。儘管你應該使用atand()而不是atan()* 180/pi()',我認爲你的'[alt,az]'代碼可能也適用於'axis equal'。 –