```Path: news.mathworks.com!newsfeed-00.mathworks.com!oleane.net!oleane!ciril.fr!news.ecp.fr!news.motzarella.org!motzarella.org!news.greatnowhere.com!news.advenet.com!not-for-mail
Message-ID: <83146967ee46d@uwe>
From: "Bookie via MathKB.com" <u43093@uwe>
Subject: Re: Non-rectangular 3D plot
Date: Tue, 22 Apr 2008 22:58:27 GMT
Complaints-To: http://www.MathKB.com/Uwe/NB/ReportAbuse.aspx
Newsgroups: comp.soft-sys.matlab
References: <831044a106ed5@uwe> <fulhkn\$ohs\$1@aioe.org>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 8bit
Lines: 55
Xref: news.mathworks.com comp.soft-sys.matlab:464649

alessandro mura wrote:
>>  I was wondering how I can make a 3D plot using non-rectandular data for x
>> and y.  My x-y domain can be described with limits: a <= x <= b AND 0 <= y
>[quoted text clipped - 4 lines]
>>
>> Bookie
>
>If triangles are OK, istead of  4-sided polygons, then:
>
>x=randn(1,100)
>y=randn(1,100);
>z=x.^2-y.^2;
>tri=delaunay(x,y);
>hold on
>for i=1:size(tri,1)
>patch([x(tri(i,1)) x(tri(i,2)) x(tri(i,3))], [y(tri(i,1)) y(tri(i,2))
>y(tri(i,3))],[z(tri(i,1)) z(tri(i,2)) z(tri(i,3))],'g')
>end
>

Thanks Alessandro,

So from what I get this code selects 100 random x-y points and calculatees
z for each point.  I have read into Delaunay triangulation, and I am not sure
how to use it. I do not know what the code does in the 'patch' function. As
well I don't see where I would enter my specific limits for x and y.

Right now my points in the x-y domain lie within a 4-sided polygon, which I
could break into a 1 rectangle and 1 triangle.  If I am using delaunay
triangulation do I need to split my 4-sided polygon into 2 or more triangles
only? Does some part of your code represent the verticies of the triangle?

Also my x and y coordinates are described by limits:  a <= x <= b AND 0 <= y
<= m*x+b.  I can make my x be a vector: x = a:1:b, but I do not know how to
make y be a vector. I would want: y = 0:1:(m*x+b), which doesn't work of
course. Or I could just say: y = min:1:max, but then I'm not incorporating
the relation between the y values and x values.

Lastly, my z function is calling an m-file function: z = functionname(x,y).
So I can't use the dot operator to calculate the z-matrix values.  I then
want to plot z.  I could use surf, mesh, triplot, etc. I'm not sure which.  I
do not want z-values for my x-y coordinates outside of my polygon region, so
maybe I want holes in my surface plot.  I am wondering if I can return 'NaN',
for (x,y) coordinates outside of my region.

I appreciate your help and the help of this forum.  Whatever suggestions you
and anyone else has would be awesome!

Regards,
Bookie

--
Message posted via MathKB.com
http://www.mathkb.com/Uwe/Forums.aspx/matlab/200804/1

```