Hello,
I have this function :
function spin = generate_spin_image(vertex, normal, indVertex, med)%[vertex, faces] = read_off(namefile);
%med = computeMedianEdge(namefile);
%[normal,normalf] = compute_normal(vertex, faces);
binSize = med;W = 25;angleSupport = pi/2;imageWidth = W*binSize;p = vertex(indVertex,:);numVertices = size(vertex,1);%alpha = zeros(numVertices,1);
%beta = zeros(numVertices,1);
spin = zeros(W,W);TabAlpha_1 = zeros(1,34817);TabBeta_1 = zeros(1,34817);for i=1:numVertices x = vertex(i,:); if acos(sum(normal(indVertex,:).*normal(i,:))) < angleSupport alpha = sqrt(sum((x - p).^2) - (sum(normal(indVertex,:).*(x-p))).^2); beta = sum(normal(indVertex,:).*(x-p)); TabAlpha_1(i) = alpha; TabBeta_1(i) = beta; is = floor((imageWidth/2 - beta)/binSize); js = floor(alpha/binSize); a = alpha/binSize - js; b = (imageWidth/2-beta)/binSize - is; if is >=1 && is <=(W-1) && js >=1 && js <=(W-1) spin(is,js) = spin(is,js) + (1-a)*(1-b); spin(is+1,js) = spin(is+1,js) + a*(1-b); spin(is, js+1)= spin(is,js+1) + (1-a)*b; spin(is+1,js+1) = spin(is+1,js+1) + a*b; end end end figure; TabBeta_1 = TabBeta_1'; TabAlpha_1 = TabAlpha_1'; plot(TabBeta_1, TabAlpha_1, 'ro');figure;imagesc(spin');colormap( flipud(gray) );
In the end I plot the array that contains the projection of the 3D coordinates of a vertex in 2D coordiantes (alpha, beta), and the image spin results from the computation of alpha and beta.
The problem I have is that it gives me this:
It seems to be good but the image (grayscale) is rotated compared to the projection (plot with red points), and I want it to be the same as the plot.
I hop I explained my problem clairly. I would be grateful for any help.
Best Answer