function data = PrecomputeAffine(p,v,w)
Pstar = PrecomputeWCentroids(p,w);
M1 = v - Pstar;
a = zeros(1,size(Pstar,2));
b = a;
d = a;
Phat = cell(1,size(p,2));
for i=1:size(p,2)
Phat{i} = repmat(p(:,i),[1,size(Pstar,2)])-Pstar;
a = a + w(i,:).*Phat{i}(1,:).^2;
b = b + w(i,:).*Phat{i}(1,:).*Phat{i}(2,:);
d = d + w(i,:).*Phat{i}(2,:).^2;
end
det = a.*d - b.^2;
Ia = d./det;
Ib = -b./det;
Id = a./det;
F1 = [sum(M1.[Ia;Ib],1);sum(M1.[Ib;Id],1)];
A = zeros(size(p,2),size(Pstar,2));
for j=1:size(p,2)
A(j,:) = sum(F1.*Phat{j},1).*w(j,:);
end