You need to do an analyze of your problem.
By
adjacent, I understand that 2 rectangles are sharing a common side.
Take some points:
r
A B C
D E F
this gives rectangles ABED and BCFE.
To check if the 2 rectangles are adjacent or not, you need to find common 2 points between both rectangles.
Then, once you know they share the points, you have to merge them and get ACFD.
You need to device a method that guaranty that after merging, all points will remain clockwise.
PointList.Remove(PointList[i]);
PointList.Remove(PointList[j]);
remove
have the side effect of moving next elements down. To understand how the code go wrong, use the debugger and pay attention to the changes in the list.
When you don't understand what your code is doing or why it does what it does, the answer is
debugger.
Use the debugger to see what your code is doing. Just set a breakpoint and see your code performing, the debugger allow you to execute lines 1 by 1 and to inspect variables as it execute, it is an incredible learning tool.
Debugger - Wikipedia, the free encyclopedia[
^]
Mastering Debugging in Visual Studio 2010 - A Beginner's Guide[
^]
The debugger is here to show you what your code is doing and your task is to compare with what it should do.
There is no magic in the debugger, it don't find bugs, it just help you to. When the code don't do what is expected, you are close to a bug.