Constraint matrix for 2 atoms on general position and 1 atom on a (x,y,0) special position in P -2z

ZeroMatrix[m_,n_]:=ConstantArray[0,{m,n}]
Z=ArrayFlatten[{{IdentityMatrix[3],ZeroMatrix[3,3]   , ZeroMatrix[3,2]},
                                {ZeroMatrix[3,3]   , IdentityMatrix[3],ZeroMatrix[3,2]},
                                {ZeroMatrix[3,3]  ,  ZeroMatrix[3,3]   , {{1,0},{0,1},{0,0}}}}];
Z//MatrixForm

Floating origin directions

v1={1,0,0,1,0,0,1,0,0};
v2={0,1,0,0,1,0,0,1,0};
{v1,v2}\[Transpose]//MatrixForm

Compute a basis of orthonormal vectors s.t. the first ones are {v1,v2} (displayed by columns)

vec=IdentityMatrix[9];
vec[[All,1]]=v1;
vec[[All,2]]=v2;
vec//MatrixForm
base=Orthogonalize[vec\[Transpose]]\[Transpose];
base//MatrixForm

Construct a would-be normal matrix AA s.t. v is a singular vector

AA=Sum[i KroneckerProduct[base[[All,i]],base[[All,i]]],{i,3,9}];
{L,V}=Eigensystem[AA];
L
V\[Transpose]//MatrixForm

Constrained normal matrix which has a singularity too

ZAAZ=N[Z\[Transpose].AA.Z];
{L,V}=Eigensystem[ZAAZ];
L
V[[-1]]

Blunt floating origin restraint: apply it to AA ignoring special positions and then apply constraints

ZAApZ=N[Z\[Transpose].(AA+100(KroneckerProduct[v1,v1]+KroneckerProduct[v2,v2])).Z];
{L1,V1}=Eigensystem[ZAApZ];
L1
V1[[1]]

Alternative: apply constraints first and then apply floating origin restraints

w={1,0,0,1,0,0,1}
ZAAZp=N[Z\[Transpose].AA.Z+100KroneckerProduct[w,w]];
{L2,V2}=Eigensystem[ZAAZp];
L2
V2[[1]]