You are now following this question
- You will see updates in your followed content feed.
- You may receive emails, depending on your communication preferences.
Randomly generated complex polygon with user input
1 view (last 30 days)
Show older comments
Accepted Answer
Image Analyst
on 5 Apr 2013
How about using ginput() or impoly()?
17 Comments
Matthew
on 5 Apr 2013
No i need the function to draw the polygon not the user the user just supplies the number of vertices.
Image Analyst
on 5 Apr 2013
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
on 5 Apr 2013
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
on 5 Apr 2013
Edited: Image Analyst
on 5 Apr 2013
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
on 6 Apr 2013
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
on 7 Apr 2013
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
Matthew
on 7 Apr 2013
Edited: Image Analyst
on 7 Apr 2013
Is it just me getting the fill(X,Y,C) wrong?
Image Analyst
on 7 Apr 2013
Edited: Image Analyst
on 7 Apr 2013
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
on 7 Apr 2013
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
on 7 Apr 2013
Where did you see 'RGB::random()' ? I don't see it in the help as one of the 'ColorSpec' types.
Image Analyst
on 7 Apr 2013
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
on 7 Apr 2013
For some reason this keeps giving me green.
patch(coordinates(:,1), coordinates(:,2),rand());
Image Analyst
on 7 Apr 2013
Sorry, you need 3 numbers. Try this:
randomColor = rand(1,3)
patch(coordinates(:,1), coordinates(:,2), randomColor); % Can use fill() also.
Image Analyst
on 7 Apr 2013
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."
More Answers (0)
See Also
Categories
Find more on Contour Plots in Help Center and File Exchange
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!An Error Occurred
Unable to complete the action because of changes made to the page. Reload the page to see its updated state.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- 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)
Asia Pacific
- Australia (English)
- India (English)
- New Zealand (English)
- 中国
- 日本Japanese (日本語)
- 한국Korean (한국어)