How can I generate data points form arbitrary shape in 2D in MATLAB ?

Respuestas (3)

How about rand()?
numberOfVertices = 15;
x = rand(1, numberOfVertices);
y = rand(1, numberOfVertices);
If you want an image, use
binaryImage = poly2mask(x, y, rows, columns);

7 comentarios

Dear Image Analyst, I would like to thank you for this answer. Please, I am looking for data points when I plot them give me arbitrary shape. For example, shape like star or curve or Shape of letter B. I need the real data points give me those figures. Regards.
rand() will give you arbitrary/random locations for a shape. Since it's arbitrary, there's no guarantee that it will look like anything in particular like a star or letter B.
If you have a specific shape in mind, then it's no longer arbitrary, is it? Like I said in my other answer, if you have a specific shape, then you can get the perimeter points using bwboundary().
If this doesn't answer your question, then see this link because I have no other guesses as to what you want.
Dear Image Analyst, thank for your help. I apply your suggestion then I read the link you mentioned. Please, my question is this: I would like to generate data points in 2D and when I plot those data point the figure give me the shape of letter B. Thanks.
How are you going to get those? I don't have the coordinates for a letter B. Do you? And I don't know of any analytical mathematical formula to give them. If you have an image of a B then I can get them, but if that's the case, you already have the B and there's nothing else for you to do.
Yes, I can plot the points one by one until I get the shape of letter B, but my question is that: is there any function or program in MATLAB can generate data points and when I plot those points give me shape like letter B or A or C. Thanks.
Not that I know of. Perhaps if you were able to read a font file. In the meantime, here's some code that will create a heart shape:
t = linspace(-pi,pi, 350);
X = t .* sin(pi * .872*sin(t)./t);
Y = -abs(t) .* cos(pi * sin(t)./t);
plot(X,Y);
fill(X, Y, 'r');
axis square;
set(gcf, 'Position', get(0,'Screensize'));
title('Happy Valentines Day', 'FontSize', 28);
There is also code to create a Batman logo: http://www.mathworks.com/matlabcentral/answers/13131-batman-equation-in-matlab#answer_17935 But nothing for a letter B I'm afraid. Sorry.
Dear Image Analyst, thank you very very much for your help. I found something in the Internet as well to generate the data points and when plot the data points give me concave shape. Please, could you look at this code and modify it to give letter B. i.e. generate data points and when I plot those data points give me the shape letter B. Regards.
C1 = [0 0]; % center of the circle C2 = [-5 7.5]; R1 = [8 10]; % range of radii R2 = [8 10]; A1 = [1 3]*pi/2; % [rad] range of allowed angles A2 = [-1 1]*pi/2;
nPoints = 1000;
urand = @(nPoints,limits)(limits(1) + rand(nPoints,1)*diff(limits)); randomCircle = @(n,r,a)(pol2cart(urand(n,a),urand(n,r)));
[P1x,P1y] = randomCircle(nPoints,R1,A1); P1x = P1x + C1(1); P1y = P1y + C1(2);
[P2x,P2y] = randomCircle(nPoints,R2,A2); P2x = P2x + C2(1); P2y = P2y + C2(2);
x=[P1x P1y]; y=[P2x P2y]; Data4=[x; y]; plot(Data4(:,1),Data4(:,2),'.')

Iniciar sesión para comentar.

Image Analyst
Image Analyst el 1 de Dic. de 2016
Do you want the boundary points of a binary image shape? If so, use bwboundaries().

2 comentarios

Dear Image Analyst, I would like to thank you for this answer. Please, I am looking for data points when I plot them give me arbitrary shape. For example, shape like star or curve or Shape of letter B. I need the real data points give me those figures. Regards
And where do you think those real data points will come from if you don't have them already? Apparently you didn't think they can come from images of shapes as I suggested. So exactly where are you going to get those boundary points?

Iniciar sesión para comentar.

Categorías

Más información sobre Valentines Day en Centro de ayuda y File Exchange.

Preguntada:

el 1 de Dic. de 2016

Respondida:

el 14 de En. de 2017

Community Treasure Hunt

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

Start Hunting!

Translated by