오늘은 숫자 2가 겹치는 날이네요~^^* 2월2일~^^*
우리 곁에 천사가 있다는 것을 알려주는 날~^^*
먼 곳 들판을 천사와 함께 날며 풍경을 편안히 구경하고 계셔요~^^*
오늘은 현재 가고 있는 방향에서 가고자 하는 방향으로 몸을 트는 steering behaviour에 대해 복습해 보기로 할까요~^^*
이 파트를 작업해 본 지 좀 되어서, 기억을 가지런히 빗어보면 좋을 것 같아요~^^*
먼저 클래스 vehicle 차량 정의를 함께 살펴 볼까요~~^^* 어제 우리가 새롭게 설정한 변수 health도 넣어 보겠습니다~^^*
class Vehicle {
constructor(x, y) {
this.acceleration = createVector(0, 0);
this.velocity = createVector(0, -2);
this.position = createVector(x, y);
this.health = 1;
this.r = 6;
this.maxspeed = 8;
this.maxforce = 0.2;
}
update() {
this.velocity.add(this.acceleration);
this.velocity.limit(this.maxspeed);
this.position.add(this.velocity);
this.acceleration.mult(0);
}
applyForce(force) {
this.acceleration.add(force);
}
seek(target) {
let desired = p5.Vector.sub(target, this.position); // vehicle의 현재 위치에서 target으로 향하는 벡터입니다.
desired.setMag(this.maxspeed); //벡터 desired의 힘의 크기를 maxspeed로 세팅하겠습니다.
let steer = p5.Vector.sub(desired, this.velocity);
// 가고자 하는 방향의 벡터 desired에서 현재 vehicle이 가고 있는 방향의 벡터 this.velocity를 뺄셈하여 vehicle이 몸을 틀어야 할 방향을 가진 벡터 steer에 저장합니다.
steer.limit(this.maxforce); // 벡터 steer의 힘을 this.maxforce 값까지로 제한하겠습니다.
this.applyForce(steer); //벡터 steer를 vehicle에 작용시킵니다.
}
display() {
let theta = this.velocity.heading() + PI / 2;
fill(127);
stroke(200);
strokeWeight(1);
push();
translate(this.position.x, this.position.y);
rotate(theta);
beginShape();
vertex(0, -this.r * 2);
vertex(-this.r, this.r * 2);
vertex(this.r, this.r * 2);
endShape(CLOSE);
pop();
}
}
steering 에 대한 좀 더 상세한 복습으로~^^* Autonomous Agent에 대한 동영상 강의 시리즈를 시청자 모드로 시각적으로 편안하게 시청해 보면 어떨까요~^^*.
오늘 Steering에 대한 복습의 시간을 충분히 함께 가져 주셔서 감사합니다~^^*
내일은 우리 음악 함께 들으며 편안하게 쉬고요~^^*
화요일부터는 맛있는 것에 다가가고 위험한 것에서 멀어지는 총명하고 귀여운 우리의 vehicle 차량의 아슬아슬한 자율 주행~^^* 코드 작업을 본격적으로 시작해 볼까요~~^^*
진흙탕 속에서 다이아몬드를 찾아 내려는 굳셈과 총명함이 몸에 밴 멋진 vehicle을 우리 함께 만들어 보면 좋겠어요~^^*
네~^^* 좋아요~^^* 고마워요~^^*
오늘도
맛있는 점심! 편안하면서도 보람찬 하루! 보내시고요!
따뜻한 밤 코~^^* 하셔요~^^*
네~^^* 꿈은 이루어 집니다~^^*
댓글 남기기