Ok. I think there are too many chiefs and not enough indians, so I'll be the next chief.... lol.
You have a 100x100 polly ground==> 10,000 pollys. The diminsions are 10000x10000==> each polly (grid) is 100x100 diminsional units in size. You want to move 10,000 soldiers on this terrain, so doing a collision check for each is going to slow you down to a crawl. Using an array of 10000,10000 makes your machine lock up?
Use the interpolation suggested earlier-- it will work.
Use memblocks instead of an array-- arrays use too much memory for each cell.
Linear interpolation is straight forward:
You first find the slope of a line: S=Y/X
S=slope of the line
Y=the Y-difference between the two points.
X=the X-difference between the two points.
Now that you have the slope, you need to get the Y-value at the X-position:
Y=SX+Y1
Y1 is the Y-value of the first vertex.
X= the X-distance on the line the soldier is from vertex1.
You MUST keep track of which vertex is the first one. I would use the lower numbered one so that Y1 is, for instance, from Vertex(0,0) and Y2 is from Vertex(0,1) or whatever as long as you are consistant.
Do that with two lines of the face your soldier is on and take the average of the two Y-values you get, and ta-dah, you have an interpolated Y-value.
To be sure you understand what I mean, I'm going to ramble on some more....
Each face has 3 verteces that make it up. Use some simple X,Z tests to determine which face it is. Most mesh builders have the same pattern for a plane so that the hypotanous side of the triangle is always sloping the same way, however, you may want to be sure before you stick to that idea.... I'm sure you can figure out how to find the face once you know that. Use the same vertex for the two calculations above as the start vertex; I would use the vertex that is where the 90deg place is (can't remember the name). And for the "other" vertex use the other two verteces, one for each calculation set.
Man! I love long drawn-out explainations!
The fastest code is the code never written.