2016-07-27 8 views
0

こんにちはI'amはMATLAB 3Dラインが見えない

enter image description here enter image description here

問題に悩まされています。 球線を描くと目に見えない問題があります。

は、ここで私は私がworngly線を描く疑われたが、球なしで、私はFIG2としてのラインを見ることができ、最初に私のソース

clear all; close all; clc 

n=1; 
n_inner_drone=3; 
n_outter_drone=2; 

length=100; 

initial_d = zeros(1,n); 
inner_x = zeros(n_inner_drone,n); 
inner_y = zeros(n_inner_drone,n); 
inner_z = zeros(n_inner_drone,n); 
outter_x = zeros(n_outter_drone,n); 
outter_y = zeros(n_outter_drone,n); 
outter_z = zeros(n_outter_drone,n); 

radius= length; 

disp('test'); 

%%%%%%%%%%%%%%%%%%%%%% Sphere 
% figure() 
% [x, y, z] = sphere; 
% h = surfl(x*length, y*length, z*length); 
% hSurf = surf(X,Y,Z,'EdgeColor','none','LineStyle','none','FaceLighting','phong'); 
% set(h, 'FaceAlpha', 0.05) 
% surf(x*length, y*length, z*length, 
% shading interp 
hold on 
%%%%%%%%%%%%%%%%%%%%%%%%% 

for i=1:n_inner_drone 
    k=1; 
    while 1 

     x_temp= randi([-length, length], 1, 1); 
     y_temp= randi([-length, length], 1, 1); 
     z_temp= randi([-length, length], 1, 1); 

     dist = sqrt(x_temp^2 + y_temp^2 + z_temp^2); 

     if dist<radius 
      if i==1 
       initial_d(k) = dist; 
      end 
      inner_x(i,k) = x_temp; 
      inner_y(i,k) = y_temp; 
      inner_z(i,k) = z_temp; 
      k = k+1; 
     end 

    if k == n+1, break, end 
    end 
end 

ideal_direction_length = ones(1,n); 
ideal_direction_length = ideal_direction_length * length; 
ideal_direction_length = ideal_direction_length - initial_d; 

k=1; 

random_x = inner_x(1,:); 
random_y = inner_y(1,:); 
random_z = inner_z(1,:); 

random_moving_distance = zeros(1,n); 
moving_distance = 0; 
trigger = 0; 
while 1 

    if trigger == 0 
     direction = randi([1, 6], 1, 1); 
     trigger = 1; 
    end 

    if direction == 1 
     random_x(k) = random_x(k) + 1; 

    elseif direction == 2 
     random_x(k) = random_x(k) - 1; 

    elseif direction == 3 
     random_y(k) = random_y(k) + 1; 

    elseif direction == 4 
     random_y(k) = random_y(k) - 1; 

    elseif direction == 5 
     random_z(k) = random_z(k) + 1; 

    elseif direction == 6 
     random_z(k) = random_z(k) - 1; 
    end 

    dist = sqrt(random_x(k)^2 + random_y(k)^2 + random_z(k)^2); 
    moving_distance = moving_distance+1; 

    %%%%%%%%%% Line 
    plot3(random_x(n),random_y(n),random_z(n),'k+') 
    %%%%%%%%%%%%%%% 

    if dist>radius 
     random_moving_distance(k) = moving_distance; 
     k = k+1; 
     moving_distance = 0; 
     trigger = 0;  
    end 

    if k == n+1, break, end 
end 

plot3(inner_x(1,n),inner_y(1,n),inner_z(1,n),'r*') 
for k=2:n_inner_drone 
    plot3(inner_x(k,n),inner_y(k,n),inner_z(k,n),'b*') 
end 
for k=1:n_outter_drone 
    plot3(outter_x(k,n),outter_y(k,n),outter_z(k,n),'k*') 
end 

の簡易版です。

この問題について知っている人。

私に答えてください、私はそれについて非常にappealiateします。

読んでいただきありがとうございます。

+1

'FaceAlpha'を設定する方法で' h 'に 'EdgeLines'または' EdgeColor'プロパティを設定してみてください。 – Dan

+0

あなたの答えをありがとう。私はそれを試みます。 –

+0

ええ、今ではK +が球の有無にかかわらず動作します。いいえ、ちょうどポイントの束。 –

答えて

0

私はので、それがあると思う:

plot3(gravity_x(n),gravity_y(n),gravity_z(n)) 

ラインではありません。その一点。

plot3(gravity_x(n:n+1),gravity_y(n:n+1),gravity_z(n:n+1)) 

がラインです。

+0

私の説明は十分ではありませんでした。その間、すべてのプロット3は単一のポイントです。 "plot3(random_x(n)、random_y(n)、random_z(n)、 'g-')" –

+0

@JinhyeokKangあなたはコードが足りませんでした。 [mcve] –

+0

あなたの答えをありがとう。さて、私はあなたに簡単なコードを提示します。 –

関連する問題