네~^^* 어제 우리는 긍정적인 신호를 폭넓게 인지하고 위험한 신호를 긴밀하게 포착하는 레이더를 태초의 vehicle 부족에게 장착해 드렸지요~~^^*
네~^^* 동영상 강의 하나를 어제 우리가 마무리 해 낸 것이기도 해요~^^*
어제의 성과를 오늘 축하하게 되었어요~~^^* 축하합니다~~^^*
멋진 축하 공연을 보고 계셔요~^^* 코딩 공부 정리해서 돌아올게요~^^* 쓩우웅~^^*
오늘은 태초의 vehicle 부족에게 장착된 레이더가 제공하는 정보에 따라 vehicle이 취하는 행동을 대해 좀더 개선해 보겠습니다~^^*
<< 어제까지의 함수 eat() >>
eat(list, nutrition, perception) {
var record = Infinity;
var closest = -1;
for (var i = 0; i < list.length; i++) {
var d = this.position.dist(list[i]);
if(d < record && d < perception) {
//거리가 이전 기록보다 가깝고 인식범위 안에 있으면
record = d;
closest = i;
//기록을 갱신합니다.
}
}
if(record < 5 ) {
list.splice(closest, 1);
this.health += nutrition;
//영양가를 건강상태 지수에 더합니다.
//몸에 좋은 음식의 영양가는 건강상태 지수를 높이고
//몸에 위험한 독약의 영양가는 건강상태 지수를 낮춥니다.
} else if(closest > -1) {
return this.seek(list[closest]);
}
return createVector(0,0);
}
food와 poison에 대해 인식할 수 있는 레이더를 다시 한 번 살펴 보면요…
this.dna[2] = random(0,100);
//food에 대해 인식할 수 있는 범위 반지름 0에서 100사이 무작위 값
this.dna[3] = random(0,100);
//poison에 대해 인식할 수 있는 범위 반지름 0에서 100사이 무작위
인식의 반경이 100일 때도 있겠지만…0이 되거나 0.00000000001이 될 경우도 생길 것 같아요.
그런데..우리 vehicle의 움직임 속도가 또 있다보니… 0보다 멀거나 0.00000000001보다 멀지만, vehicle의 움직임 변화량보다는 작은 거리에 떨어져 있는 food나 poison은 인식이 안되어 다가가거나 멀어지거나 하는 반응 행동 없이, 먹지 않고 지나치게 될 것 같아요.
근데…vehicle이 사람의 발처럼 food나 poison 위로 건너서 움직이는 것은 아니라서…food와 poison을 관통하면서 먹지 않고 지나친다는 것은 좀…아닌 것 같아요…
그래서…레이더에 인식되지 않아 다가가거나 피하는 행동을 취하지 못하고 먹지도 않고 관통하는 경우를 개선해 보겠습니다.
레이더에 인식이 되었다면 다가가려고 했던 food나 poison도, 또는 레이더에 인식이 되었다면 피하려고 했던 food나 poison도, 일단 관통하게 되는 경우에는 자신의 감정기억의 내용과 상관없이, 먹어 보겠습니다!!! 피할 수 없으면 즐겨라!!!를 실천해 보겠습니다!!!
물론 그것이 food이면 건강지수가 증가할 것이고 poison이면 건강지수가 감소하게 되겠지요~^^*
eat(list, nutrition, perception) {
let record = Infinity;
let closest = null;
//먼저, 현재 가장 가까운 것은 없는 상태로 시작하겠습니다.
for (let i = list.length - 1; i >= 0; i--) {
//가까이 있는 것은 일단 먹기로 할 것이라서,
//해당 구성 요소가 배열에서 삭제하고 뒤편에 있는 구성 요소를 앞으로 당겨 재정열을 할 예정이라,
//배열의 끝부분부터 앞으로 나아가며 반복 작업을 하도록 하겠습니다.
const d = this.position.dist(list[i]);
if (d < this.maxspeed) {
//가까운 거리 값을 this.maxspeed로 설정하여
//가까운 거리 값 변경이 쉬워지도록 하겠습니다.
//가까운 거리 안에 들어 왔다면, 먹습니다!
list.splice(i, 1);
this.health += nutrition;
} else {
//가까운 거리에 있지 않다면
if (d < record && d < perception) {
//인식 범위에 들어오면서 현재까지의 기록보다 더 가까운 경우
record = d;
closest = list[i];
//기록을 갱신합니다.
}
}
}
// This is the moment of eating!
if (closest != null) {
return this.seek(closest);
//가장 가까운 것이 있다면 그것을 찾으러 갑니다.
}
return createVector(0, 0);
//가장 가까운 것이 없다면, 가만히 있습니다.
}
네~^^* 오늘 저와 함께, 눈 앞에 닥친 뜻밖의 것은 온 몸으로 일단 감당해 보는 태초의 vehicle 부족을 만들어 주셔서 감사합니다~^^*
내일은 우리 음악 편안하게 함께 들을까요~^^*
네~^^* 좋아요~^^* 고마워요~^^*
오늘도
보람찬 하루~^^*
반가운 만남 기쁨 나누는 행복한 하루~^^*
뿌듯한 마음으로 코~^^* 깊은 잠 드는 밤~^^*
되시기 바래요~^^*
네~^^* 꿈은 이루어 집니다~^^*
댓글 남기기