added an intersection data structure for more portable and clean intersection(e.g. the intersected point is computed)