class creature { vec interest; vec p; mass m; mass tail[]; int type=0; boolean killed=false; creature runAwayFrom; creature() { p=new vec(); m=new mass(); } void update() {} void draw() {} void pullHead(vec p) {} } creature[] append(creature cl[],creature c) { creature temp[]=new creature[cl.length+1]; System.arraycopy(cl,0,temp,0,cl.length); temp[cl.length]=c; return temp; } void drawFloraCurve(mass m[]) { if(m==null||m.length<=0) return; curveDetail(3); beginShape(); curveVertex(m[0].p); for(int i=0;i0) totalLength+=dist(v[i],v[i-1]); } float searchDistance=totalLength*k; float curDistance=0; vec nv=new vec(); for(int i=0;isearchDistance) { float distanceLeft=searchDistance-curDistance; float k2=distanceLeft/nd; vec newPos=lerp(v[i],v[i+1],k2); nv=new vec(newPos); break; } else curDistance+=nd; } return nv; }