matlab判断能否组成三角形,如何确定一个点是否在三角形内

程序说明如下:

我从一个文件中获取了3个坐标,并绘制了一个三角形

我想绘制一个网格,如果网格点在三角形中,我想绘制一个黑色圆圈,否则要绘制一个红色圆圈。

我用于检查点是否在三角形内的方法是,如果点(xco,yco)在三角形内,则它与其他三个点组成的小三角形的面积之和等于三角形的面积。

所以我的if语句是总面积=三角形的面积->绘制黑色圆圈,否则绘制红色圆圈。

问题是,即使某些点使“总面积”等于三角形图的面积,也不会绘制黑色圆圈,而是绘制红色圆圈。

它似乎是随机的,我无法弄清楚这个简单的问题。

那么,您可以帮我画点吗?figure() % Loading the data from .mat file A = load('triangle_a.mat','pt1'); B = load('triangle_a.mat','pt2'); C = load('triangle_a.mat','pt3'); % Assigning values of array from .mat into each variable x1 = A.pt1(1,1); y1 = A.pt1(1,2); x2 = B.pt2(1,1); y2 = B.pt2(1,2); x3 = C.pt3(1,1); y3 = C.pt3(1,2); % Drawing coordinates of a triangle on a grid plot(x1, y1,'or'); hold on plot(x2, y2,'or'); hold on plot(x3, y3,'or'); hold on % Joining three coordinates to make a triangle plot ([x1,x2],[y1,y2],'-b'); plot ([x1,x3],[y1,y3],'-b'); plot ([x3,x2],[y3,y2],'-b'); xmin = A_coor(1,1); xmax = B_coor(1,1); ymin = A_coor(1,2); ymax = C_coor(1,2); xgrid = xmin-1:0.5:xmax+1; ygrid = ymin-1:0.5:ymax+1; tri_x = [x1 x2 x3]; tri_y = [y1 y2 y3]; area = polyarea(tri_x,tri_y); % Making a grid for x = 1:1:numel(xgrid) for y = 1:1:numel(xgrid) xco = xgrid(1,x); yco = ygrid(1,y); aa = [xco, x2, x3]; bb = [yco, y2, y3]; cc = [x1, xco, x3]; dd = [y1, yco, y3]; ee = [x1,x2,xco]; ff = [y1,y2,yco]; area1 = polyarea(aa,bb); area2 = polyarea(cc,dd); area3 = polyarea(ee,ff); totarea = area1 + area2 + area3; if totarea == area plot(xco,yco,'ok'); else plot(xco,yco,'.r'); end end end

更多&回答...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值