transform infinite plane into finite circular plane

Is it possible to generate a plan of limited dimensions, for example a 10x10 square?
line = importdata("line_w.mat");
normal = importdata("normal_w.mat");
row = 10; % variabile
P = line(row,:);
plane = normal(row,:);
a=plane(1); b=plane(2); c=plane(3);
d=dot(plane,P);
figure
plot3(line(:,1),line(:,2),line(:,3),'r.','Markersize',10);
hold on
plot3(P(:,1),P(:,2),P(:,3),'b.','Markersize',15);
fimplicit3(@(x,y,z) a*x+b*y+z*c-d)
hold off
axis equal
xlabel('x')
ylabel('y')
zlabel('z')
xlim([0 50])
ylim([-50 20])

 Accepted Answer

You can use patch.
[a,b,c]=deal(1); %fake input data
P=[1 1 1];
R=2;
t=(0:359)';
V=R*[cosd(t),sind(t)]*null([a,b,c])' + P(:)';
patch(V(:,1), V(:,2),V(:,3),'r'); axis square
view(40,25); grid on

6 Comments

I thank you. I would have to create an stl of that plan.
Can you direct me on how to create an stl file from V matrix?
I've never heard of creating an stl file for a non-solid region.
Hi @Matt J Code similar to the one you provided me but with the creation of an ellipse where I can modify the two axes?
You need to tell how you want the ellipse axis to be oriented.
I would not know. At the moment any orientation is fine.
[a,b,c]=deal(1); %fake input data
P=[1 1 1];
% ellipse principla axis lengths
R1=1;
R2=5;
t=(0:359)';
V=[cosd(t),sind(t)]*diag([R1,R2])*null([a,b,c])' + P(:)';
patch(V(:,1), V(:,2),V(:,3),'r'); axis square
view(40,25); grid on

Sign in to comment.

More Answers (1)

Perhaps try rescaling the appropriate variables with rescale.

1 Comment

Thanks for the response. Could you tell me how to obtain the matrix to use in 'rescale'?
Also, is it possible to generate, on that plane created with fimplicit3, a circular-shaped plane defined by the radius R?

Sign in to comment.

Products

Release

R2021b

Asked:

on 24 Sep 2023

Edited:

on 25 Sep 2023

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!