How can I find intersection points between vectors normal to a plane and a trisurf sphere?
3 views (last 30 days)
Show older comments
Hi all,
I am trying to find intersection points between vectors normal to a plane and a trisurf sphere using triangle/ray intersection from the file exchange:
I am getting the following error:
"The logical indices in position 1 contain a true value outside of the array bounds."
I am finding it hard to debug the error as the arrays involved are too large to be displayed.
Here is a rough approximation of the code I am trying to run that displays the same error:
Thanks in advance for your help!
%Create sphere
Radius_LSE = 1; %radius
Center_LSE = [25 5 1]; %centre
[x,y,z] = sphere(20);
spherex = Radius_LSE*x+Center_LSE(1);
spherey = Radius_LSE*y+Center_LSE(2);
spherez = Radius_LSE*z+Center_LSE(3); %coordinates of sphere surface
tri = delaunay(spherex,spherey);
vertices = [spherex(:) spherey(:) spherez(:)];
vert1 = vertices(tri(:,1),:);
vert2 = vertices(tri(:,2),:);
vert3 = vertices(tri(:,3),:);
%Make xy plane
[xq,yq] = meshgrid( linspace(0,50,200), linspace(0,10,40));
zq = zeros(40,200);
[U, V, W] = surfnorm(xq,yq,zq); %Normals to plane
xqrshp = reshape(xq,[],1);
yqrshp = reshape(yq,[],1);
zqrshp = reshape(zq,[],1);
Urshp = reshape(U,[],1);
Vrshp = reshape(V,[],1);
Wrshp = reshape(W,[],1);
orig = [xqrshp yqrshp zqrshp]; %Vector origins
dir = [Urshp Vrshp Wrshp]; %Vector directions
for i = 1:length(orig)
[intersect(:,:,i),~,~,~,xcoor(:,:,i)] = TriangleRayIntersection(orig(i,:), dir(i,:), ...
vert1, vert2, vert3, 'lineType' , 'line');
end
scatter3(xcoor(intersect,1), xcoor(intersect,2), xcoor(intersect,3), 100, 'b', 'o', 'filled')
for i = 1:length(orig)
xintersect(i) = xcoor(intersect(:,:,i),1,i);
yintersect(i) = xcoor(intersect(:,:,i),2,i);
zintersect(i) = xcoor(intersect(:,:,i),3,i);
end
xintersect = xintersect';
yintersect = yintersect';
zintersect = zintersect';
0 Comments
Answers (0)
See Also
Categories
Find more on Financial Toolbox in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!