I have an array of points A,B,C,D,E…N which when connected make a path.

How can i divide this path to equal chunks and get position of each chunk XY ?
EDIT : As user Hedja suggested i have created function to process this problem, but i cannot detect situation where chunk is splitted on two subpaths
public ArrayList<PointF> getPositions(ArrayList<PointF> mInput,float mChunkSize){
ArrayList<PointF> mResult = new ArrayList<PointF>();
float mModulo = 0f;
for (int i = 0;i<mInput.size()-1;i++){
//distance to next
float mDistanceAB = MyGameMath.distance(mInput.get(i).x, mInput.get(i).y,mInput.get(i+1).x,mInput.get(i+1).y);
//how many parts will fit
float mCountParts = (float) (mDistanceAB/mChunkSize); //how much parts will fit
//if distance is greater than chunk size
if (Math.abs(mDistanceAB)>=mChunkSize) {
Log.i("Chunk","Index "+(i)+" -> "+(i+1)+" = "+mCountParts+", rest="+mModulo);
float dx = mInput.get(i+1).x-mInput.get(i).x;
float dy = mInput.get(i+1).y-mInput.get(i).y;
float ux = dx/mDistanceAB;
float uy = dy/mDistanceAB;
for (int y=0;y<=mCountParts;y++){
//for every part
float nx = mInput.get(i).x+ux*mChunkSize*y;
float ny = mInput.get(i).y+uy*mChunkSize*y;
//Log.i("Chunk","at:"+nx+","+ny);
mResult.add(new PointF(nx, ny));
}
}
mModulo = mDistanceAB%mChunkSize; //how much left from previous subpath
}
return mResult;
}
So I assume you have something similar to this where
Pointis an object with attributesxandy.I also assume by “equal chunks” you mean the distance of each path.
First you’ll iterate through the array, as you won’t need to calculate the “next point” after the last point, you can add it at the end.:
You’ll need to find the Unit Vector, that is, the direction you travel to get to the next point. So first you need to get the difference in x and y from one point and the next:
Then the distance from that point to the next (simple Pythagoras):
double distance = Math.sqrt(dx*dx+dy*dy);
The unit vector can now be calculated
So now you know where to travel, you need to specify how far you want to travel along it, I’ll call this
CHUNK_SIZE.nxandnyis the co-ordinate of your new point. However, you need to check if you’ve passed the next point so that you can stop. Your problem doesn’t specify what you do when you reach an end of a subpath without travelling the chunk size so I’ll assume you simply stop at it, so the code becomes:Now you have your new Point, you can start from there, aim for the same point as before or if it’s the same as the next point, start from the point after that. So your loop is now something like
Hope that helped.
I haven’t tested this, but I’ve done something very similar in the past, so it should work.
EDIT: Okay, I’ve seen your edit and honestly have no idea what your question is asking. Sorry.