Plot {(x,y,z)| x²+y²<1, 0<z<x+2}

3 views (last 30 days)
Eileen Lassler
Eileen Lassler on 10 Feb 2021
Answered: Rik on 10 Feb 2021
I'm not sure abot the code, because of the 2 constraints. I hope someone can help me.

Answers (2)

Constantino Carlos Reyes-Aldasoro
It depends on what you want. One way to code this would be to define your space, i.e. the range of each of each variable, say x goes from -5 to 5 in steps of 0.1:
and the same for y and z. Then x^2 + y^2 < 1 becomes a condition, those points below 1 could be selected and those above discarded, then you do the same with the second condition and your answer could be a cloud of points where the two conditions intersect.

Rik on 10 Feb 2021
Same general idea as @Constantino Carlos Reyes-Aldasoro, but more in steps.
Use linspace or colons to create one or three vectors to define your coordinate grid.
Then you can use ndgrid or meshgrid to expand that/those vector(s) to a full grid.
Now use element-wise operations (.* and ./ and .^) to compute . The logical operators < and > will work element-wise by default.
Now you have logical arrays where the combination of x,y,z is either valid or invalid. You can use logical indexing to either remove them, or mark a value array with NaN.
Now you have x y and z vectors, which you can input to a function like plot3 to show the pointcloid.


Community Treasure Hunt

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

Start Hunting!