처리가 새로 생겼으며 처리 중 lerp
기능을 실험하려고합니다. 기본적으로 내가하려고하는 것은 화면상의 다른 지점을 클릭하는 것입니다.이 위치는 배열에 저장됩니다. 사용자가 enter
을 클릭하면 저장된 움직임이 점 사이를 부드럽게 움직이는 ellipse
으로 재생됩니다. 내 문제는 내가 입력을 클릭하면 '0으로 산술 예외'가 나타납니다. 제가 누락 된 부분을 안내해 주시겠습니까? 감사.처리 중 보간 기능
final static int numFrames = 30; //frames between keyframes
final static int numKeyFrames = 1; //frames between keyframes
Point[] keyFrames;
Point[] frames;
void setup()
{
size(640, 480);
frameRate(30);
LinearInterp();
}
void mouseClicked()
{
stroke(0);
strokeWeight(8);
for(int i=0; i<numKeyFrames; i++)
{
keyFrames = new Point[numKeyFrames];
keyFrames[i] = new Point(mouseX,mouseY);
point(keyFrames[i].x,keyFrames[i].y);
println("Mouse Coordinates are: " + keyFrames[i]);
}
}
void LinearInterp()
{
frames = new Point[numFrames*(numKeyFrames-1)];
for (int kf = 0; kf< numKeyFrames-1; kf++)
{
Point p0 = keyFrames[kf];
Point p1 = keyFrames[kf+1];
for (int f =0; f<numFrames; f++)
{
float a = f*1.0/numFrames;
int newX = int(p0.x * (1-a) + p1.x * a);
int newY = int(p0.y * (1-a) + p1.y * a);
frames[f+(kf*numFrames)] = new Point(newX,newY);
}
}
}
void animateFrames()
{
stroke(187);
strokeWeight(10);
int i = frameCount % frames.length;
point(frames[i].x,frames[i].y);
}
void drawFrames()
{
stroke(187);
strokeWeight(2);
for (int i=0; i<frames.length; i++)
{
point(frames[i].x,frames[i].y);
}
}
void draw()
{
if(keyPressed)
{
if(key == ENTER)
{
drawFrames();
animateFrames();
}
}
}
귀하의 제안에 감사드립니다, 정말 고마워, 나는 그것을 노력했지만 제로에 의해 산술 예외가 발생했습니다. – user3157072
@ user3157072 후속 질문이있는 경우 [mcve] (추가 코드없이 한 지점에서 다른 지점으로 이동하는 단일 원이어야 함)를 새 게시물에 작성하십시오. 행운을 빕니다. –