把这个逻辑数组看作是一个函数多次求值的结果,输入是x和y。然后你的工作就是创建一个函数,它返回三角形内的点true,三角形外的点false。 这个函数是什么呢?关于这个问题,请参阅提供的许多答案(不幸的是,不恰当的封闭问题):How to determine if a point is in a 2D triangle? 或者,因为这是MATLAB,所以使用更通用(因此性能较差)的inpolygon。将三角形表示为x坐标和y坐标的列表。 然后,通过在逻辑矩阵上生成x和y的网格来测试所有点,并将所有这些点传递给inpolygon。 以下内容未经测试:
N = 256; % size of logical array
x = linspace(-1, 1, N); % let's define the coordinate space of your array as -1 to 1
y = linspace(-1, 1, N);
[X,Y] = meshgrid(x,y);
tri_x = [-.75 0 .75]; % strange triangle
tri_y = [.25 .75 .25];
in_triangle = inpolygon(X, Y, tri_x, tri_y);
1条答案
按热度按时间8xiog9wr1#
把这个逻辑数组看作是一个函数多次求值的结果,输入是
x
和y
。然后你的工作就是创建一个函数,它返回三角形内的点true
,三角形外的点false
。这个函数是什么呢?关于这个问题,请参阅提供的许多答案(不幸的是,不恰当的封闭问题):How to determine if a point is in a 2D triangle?
或者,因为这是MATLAB,所以使用更通用(因此性能较差)的
inpolygon
。将三角形表示为x坐标和y坐标的列表。然后,通过在逻辑矩阵上生成x和y的网格来测试所有点,并将所有这些点传递给
inpolygon
。以下内容未经测试:
字符串