some bug fix
ball bug is because viewpoint is too close to screen
update new viewpoints
use list instead of vector