5. 인싸 3요소
1. 응집 ( Cohesion )
2. 정렬 ( Alignment )
3. 분리 ( Separation )
세가지 행동 규칙(Step)으로 속도를 만들어낸다
6. 1. 응집 ( Cohesion )
• 주변의 이웃 곁으로 가려는 성질
자신의 인식 반경 안에 있는 이웃 보이드들의 무게중심으로 이동
Cohesion(이웃들)
{
for(이웃들)
{
if (거리 (내 위치, 이웃 위치) < 응집영역범위)
{
vector += 이웃 위치
++count
}
}
if(count > 0)
{
return vector /= count;
}
else
{
return zero vector;
}
}
7. 2. 정렬 ( Alignment )
• 주변의 보이드와 같은 방향을 향하려는 성질
인식 반경 내의, 이웃 보이드들 속도의 평균
속도 = (방향 * 힘) 이므로
이웃의 속력이 빠를 수록 정렬하려는 힘도 커짐
Align(이웃들)
{
for (이웃들)
{
if (거리(내 위치, 이웃 위치) < 응집영역범위)
{
vector += 이웃 속도
count++
}
}
if(count > 0)
{
return vector / count
}
else
{
return zero vector
}
}
8. 3. 분리 ( Separation )
• 이웃 보이드와 거리를 두려는 성질
인식 반경 내로 이웃 보이드 진입시
이웃의 반대 방향으로 힘이 작용
분리 인식 반경이 응집 반경보다 클 경우,
이웃을 모두 배척하는 아싸 보이드가 되기 때문에 주의
Separation(이웃들)
{
for (이웃들)
{
if (거리(내 위치, 이웃 위치) < 분리 영역범위)
{
vector += (내위치 - 이웃 위치).normalize() / 거리
count++
}
}
if(count > 0)
{
return vector / count
}
else
{
return zero vector
}
}