AI 공부하면서 플로킹 알고리즘에 써먹던 건데 예에에전에 이거 생각하느라 고생 좀 해서 올려봤다.
머리가 안좋아서 이 이상으로 간단하게는 로직을 못짜겠다. ㅠㅠ.
고개돌리는건 보간법으로 알아서 처리하자.
// 타겟과의 각거리를 이용해 최적화된 회전방향을 결정. '1' = cw '-1' = ccw
public int decAngle(Point2D.Double target){
public int decAngle(Point2D.Double target){
return decAngle(getTargetAngle(target));
}
public int decAngle(double targetAngle){
double angleDelta = targetAngle - angle;
int dec = 0;
if((targetAngle > 0.5 * Math.PI || angle < 1.5 * Math.PI)
&& (angle > 0.5 * Math.PI || targetAngle < 1.5 * Math.PI)
&& Math.abs(angleDelta) < Math.PI)
dec = (0 < angleDelta) ? 1 : -1;
else
dec = (0 < angleDelta) ? -1 : 1;
return dec;
}
머리가 안좋아서 이 이상으로 간단하게는 로직을 못짜겠다. ㅠㅠ.
고개돌리는건 보간법으로 알아서 처리하자.
'Codes' 카테고리의 다른 글
Flocking in Java - testFrame (0) | 2011.11.01 |
---|---|
Java - K-means Algorithm (2) | 2011.10.18 |