Labfans是一个针对大学生、工程师和科研工作者的技术社区。 论坛首页 | 联系我们(Contact Us)
MATLAB爱好者论坛-LabFans.com
返回   MATLAB爱好者论坛-LabFans.com > 其它 > 资料存档
资料存档 资料存档
 
 
主题工具 显示模式
旧 2019-12-02, 22:21   #1
poster
高级会员
 
注册日期: 2019-11-21
帖子: 3,006
声望力: 66
poster 正向着好的方向发展
默认 如何确定一个点是否在三角形内

程序说明如下:

我从一个文件中获取了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 




更多&回答...
poster 当前离线   回复时引用此帖
 

主题工具
显示模式

发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛禁用 表情符号
论坛启用 [IMG] 代码
论坛启用 HTML 代码



所有时间均为北京时间。现在的时间是 04:55


Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.