I would use a struct with copy constructor instead of a class with clone. Performance wise it would be better and would be more readable.
Extract function for your condition in the while.
Add explicit parenthesis on complex arithmetic expressions (normal people don’t read operator precedence fluently). ( I think about this part B * Y / 4 )
Seems like you do six times the same thing with your points. Extract method somehow and name it appropriately (cross or whatever it is).