예, 당신이 옳습니다. 제 경우에는 2D에서 두 점 사이의 거리를 계산해야합니다. 나는 x1을 스톰에, x2를 침입자에게 X 축에, y1을 침입자로, y2를 스웜의 Y 축을 따라 배치했습니다. d = sqrt (swarm (de, 1) - (intruderX)).^2 + (swarm (de, 2) -intruderY).^2); [거리가 정확하게 계산되지 않아 침입자가 어떤 덩어리 입자의 원 안에 들어 왔을 때 탐지해야합니다. [1], 때때로 침입자가 원 안에 들어 오지만 탐지되지 않습니다. 이것은 내 문제입니다. 내 문제를 해결하는 사람은 누구에게나 매우 감사 할 것입니다.^2 + (swarm (de, 2) -intruderY).^2);for de = 1 : Ndrones
dd = sqrt ((swarm (de, 1) - (침입자 X)). if (d < = rad) % 침입자가 감지되었습니다. x = 침입자 X;
y = 침입자 Y; 제목 ('침입자 감지 됨'); 텍스트 (x, y + 5, sprintf ('침입자')); 텍스트 (500,900, sprintf ('반복 : % .2f', iter)); 플롯 (swarm (:, 1), swarm (:, 2)); for i = 1 : Ndrones swarm (:, 9) = 100; 최소 계산을 다시 시작하십시오. end return; 단부 단부 % 드 루프 의 단부 [1] : http://i.stack.imgur.com/SBP27.png
몇 가지 간단한 예를 통해 작업하십시오. 제곱 된 용지를 사용하면 쉽게 이해할 수 있습니다. –
'정상 크기의'숫자에는 차이가 없겠지만 수학 라이브러리 함수 hypot를 사용하는 습관에 빠질 가치가 있다고 생각합니다. 대신 hypot (x2-x1, y2-y1)를 사용하십시오. – dmuir