Diagonal and spherical constraints can be used. Still need to implement better initialization method.