2016-07-27 1 views
0

안녕 I'am 문제에서MATLAB 3D 라인은 내가 무승부 3D 그래프를 원하는 볼 수있는 눈에 보이지 않는

enter image description here enter image description here

고통이다. 구형 선을 그릴 때 문제가 보이지 않습니다.

여기에 내가 worngly 선을 그릴 의심하지만, 구형없이 나는 그림 2와 같은 라인을 볼 수 있으며, 처음에는 내 소스

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 할 것입니다.

읽어 주셔서 감사합니다.

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

하지 라인입니다 :

+1

'FaceAlpha'를 설정하는 방식으로'h '에'EdgeLines' 또는'EdgeColor' 속성을 설정해보십시오. 답변을 주셔서 감사합니다. – Dan

+0

. 나는 그것을 시도 할 것이다. –

+0

예, 이제는 K +가 구와 함께 작동하거나 작동하지 않습니다. 라인이 없으며 단지 많은 포인트가 있습니다. –

답변

0

내가 때문입니다 생각합니다. 그것의 단일 지점.

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

답해 주셔서 감사합니다. 좋아, 간단한 코드를 만들어 보여 드리겠습니다. –