네트워크 시뮬레이션에서 사용하기 위해 엔티티 상태 PDU를 네트워크를 통해 전송할 Java 프로그램을 개발 중입니다. 나는 이것을하기 위해 open-DIS 라이브러리를 사용하고있다.Java 엔티티의 현재 방향과 목표 대상 사이의 각도를 계산하는 방법
현재 프로그램을 실행하면 하나의 시뮬레이션에서 실행중인 여러 엔티티가 있고 두 번째 시뮬레이션에 첫 번째 시뮬레이션에서 전송 된 PDU를 수신하여 다른 시뮬레이션에 표시하려는 경우 그래픽으로 포함 된 정보.
두 번째 시뮬레이션에서는 첫 번째 시뮬레이션에서 모든 엔티티를 볼 수 있지만 현재는 첫 번째 시뮬레이션의 엔티티 중 하나가 움직일 때 볼 수 있습니다.하지만 동일한 엔티티가 그들은 두 번째 시뮬레이션에서 원래 방향과 똑같은 방향을 유지해야합니다. 즉 현재 움직이는 방향을 향하지 않습니다.
은 내가, 그들이 직면해야하는 방향/각도를 설정할 필요가 무엇 인 오픈 DIS 라이브러리 setPhi
과 '방향'클래스를 가지고 setPsi
& setTheta
방법을 알고 있지만 내가 뭘 아니에요 물론 그 메소드에 어떤 값을 주는지 어떻게 알아낼 수 있을까요?이 값을 얻기위한 수학적 방법을 제공하는 라이브러리가 있습니까? 아니면이 책을 직접 작성해야합니까?
EDIT
내 EntitStateFormatter.java
클래스에 다음 라인을 추가하는 시도했다 (이 프로토콜 데이터 유닛의 데이터를 획득 한, 제 시뮬레이션을 통해 전송 될 수있는 PDU를 생성하는 클래스이다 즉) 제 시뮬레이션받은 :
orientation.setPhi((float) (entity.getLocation().getAzimuth()));
orientation.setPsi((float) (entity.getLocation().getElevation()));
orientation.setTheta((float) (entity.getLocation().getTilt()));
'방향'I가 작성한 라인에 '방향'변수 (edu.nps.moves.dis.Orientation
)이다
'실체'나는 선 사용 방법에 대한 매개 변수로 통과에 '엔티티'변수 (법인 내 프로그램에서 다른 클래스 인)입니다 :
public static EntityStatePdu createPdu(Entity entity){...
을하지만 어떤 이유로이 때 내 프로그램을 실행, 비록 첫 번째 시뮬레이션에서 생성 된 엔티티가 두 번째 시뮬레이션에 표시되는 것을 볼 수 있지만, 두 번째 시뮬레이션에서는 지형을 따라 이동할 때 (첫 번째 시뮬레이션에서 명령 된대로), 두 번째 시뮬레이션에서는 대면하지 않습니다. 그들이 움직이는 방향, 그들은 단지 그 방향으로 움직입니다. 차량이 옆으로 움직이는 지 등).
내 프로그램을 실행할 때, 나는, 콘솔 창은 그 모든 이제 다시 일부 debug-를 표시 열이 그라는 메시지가 밖으로 던졌습니다 :
INTERNAL ERROR: java.lang.ArrayIndexOutOfBoundsException: 154
이 특히 - 이것도 내가 왜 아무 생각을 실제로 EntityStateFormatter.java 클래스에 배열이 없기 때문에 ...
누구든지 아이디어가 있습니까? 미리 감사드립니다!