Randomly generated complex polygon with user input
1 次查看(过去 30 天)
显示 更早的评论
Matthew
2013-4-5
I want to generate a randomly shaped complex polygon which has start point (0,0) and has vertices defined by user input.
采纳的回答
Image Analyst
2013-4-5
How about using ginput() or impoly()?
17 个评论
Matthew
2013-4-5
No i need the function to draw the polygon not the user the user just supplies the number of vertices.
Image Analyst
2013-4-5
Use inputdlg() to get an integer. Then
coordinates = rand(numberOfVertices, 2);
coordinates(1,:) = [0, 0]; % Force first coord to 0,0
plot(coordinates(:,1), coordinates(:,2), 'r-');
Note - it's very "complex" = it can even have overlapping regions (figure 8's). If you don't want that, you have to find the average (centroid) and find all the angles, and sort by angle. At least that's one way.
Matthew
2013-4-5
I tried but i just got this error.
Undefined function or variable 'numberOfVertices'.
Error in plotfunc (line 3) coordinates = rand(numberOfVertices, 2);
prompt = {'Enter Number of verticies:'};
numberOfVerticies = inputdlg(prompt);
coordinates = rand(numberOfVertices, 2);
coordinates(1,:) = [0, 0]; % Force first coord to 0,0
plot(coordinates(:,1), coordinates(:,2), 'r-');
Image Analyst
2013-4-5
编辑:Image Analyst
2013-4-5
Sorry - misspelled it. Try this:
prompt = {'Enter Number of vertices:'};
numberOfVertices = str2num(cell2mat(inputdlg(prompt, 'enter a number', 5)))
coordinates = rand(numberOfVertices, 2);
coordinates(1,:) = [0, 0]; % Force first coord to 0,0
coordinates(end+1,:) = [0, 0]; % Force last coord to 0,0
plot(coordinates(:,1), coordinates(:,2), 'bo-');
grid on;
Matthew
2013-4-6
Exactly what i need thank you for the help. One last thing, is there an easy way to fill the plot with a colour?
Matthew
2013-4-7
i tried both i just cant get them to work. No way of typing fill works i'm stuck on it. I want it to use 'RGB::random()' for the color so all would be different.
function plotfunc()
prompt = {'Enter Number of vertices:',}
numberOfVertices = str2num(cell2mat(inputdlg(prompt, 'enter a number', 5)))
coordinates = rand(numberOfVertices, 2);
coordinates(1,:) = [0, 0]; % Force first coord to 0,0
coordinates(end+1,:) = [0, 0]; % Force last coord to 0,0
plot(coordinates(:,1), coordinates(:,2));
fill(plot(coordinates(:,1), coordinates(:,2)),'RGB::random()');
grid on;
end
Image Analyst
2013-4-7
编辑:Image Analyst
2013-4-7
You can't put plot() inside fill(). Take it out. Try this:
% prompt = {'Enter Number of vertices:',}
% numberOfVertices = str2num(cell2mat(inputdlg(prompt, 'enter a number', 5)))
numberOfVertices = 7; % Fixed at 7 for this demo.
coordinates = rand(numberOfVertices, 2);
coordinates(1,:) = [0, 0]; % Force first coord to 0,0
coordinates(end+1,:) = [0, 0]; % Force last coord to 0,0
plot(coordinates(:,1), coordinates(:,2));
grid on;
patch(coordinates(:,1), coordinates(:,2),'r'); % Can use fill() also.
grid on;
Matthew
2013-4-7
Yep that works :) but I can't get the 'RGB::random()' to work as I want it to make a random colour each time.
Image Analyst
2013-4-7
Where did you see 'RGB::random()' ? I don't see it in the help as one of the 'ColorSpec' types.
Image Analyst
2013-4-7
If it ever was allowed, it's not now, not that I can find. See the help. You can use
fill(x, y, 'Color', rand());
if you want a random color.
Matthew
2013-4-7
For some reason this keeps giving me green.
patch(coordinates(:,1), coordinates(:,2),rand());
Image Analyst
2013-4-7
Sorry, you need 3 numbers. Try this:
randomColor = rand(1,3)
patch(coordinates(:,1), coordinates(:,2), randomColor); % Can use fill() also.
Image Analyst
2013-4-7
There is an 'xdir' property where you can reverse the direction. I think it's something like
set(gca, 'xdir', 'reverse');
or something like that. If this is solved, then mark the answer as "Accepted."
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Surfaces, Volumes, and Polygons 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!发生错误
由于页面发生更改,无法完成操作。请重新加载页面以查看其更新后的状态。
您也可以从以下列表中选择网站:
如何获得最佳网站性能
选择中国网站(中文或英文)以获得最佳网站性能。其他 MathWorks 国家/地区网站并未针对您所在位置的访问进行优化。
美洲
- América Latina (Español)
- Canada (English)
- United States (English)
欧洲
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom(English)
亚太
- Australia (English)
- India (English)
- New Zealand (English)
- 中国
- 日本Japanese (日本語)
- 한국Korean (한국어)
