MATLAB代做  | MATLAB代写  | MATLAB有偿编程
首 页
当前位置:MATLAB代做|MATLAB代写|MATLAB有偿编程matlab源码算法设计
判断点是否在三角形内        [↓跳到下载地址]
官方主页:源码共享网站:www.buycode.cn

联系方式:客服QQ:1747812398 买代码源码软件站,欢迎咨询

运行环境:Win9X/2000/XP/2003/

源码语言:简体中文

源码类型:破解软件 - 算法设计

推荐星级:

更新时间:2014-01-11 09:13:20

源码简介

% 判断点与三角形的位置关系
function flag = PointInTriangle(P, Triangle, method)
if nargin == 2
    method = 's';
end
flag = zeros(size(P, 1), 1);
switch method
    case 'a'
        for i = 1:size(P, 1)
            flag(i) = AreaMth(P(i, :), Triangle);
        end
    case 's'
        for i = 1:size(P, 1)
            flag(i) = SyntropyMth(P(i, :), Triangle);
        end
    otherwise
        error('没有这种方法!');
end
end
% 同向法
function flag = SyntropyMth(P, Triangle)
P(3) = 0;
Triangle(:,3) = 0;
A = Triangle(1, :);
B = Triangle(2, :);
C = Triangle(3, :);
Pa = SameSide(P,A,B,C);
Pb = SameSide(P,B,A,C);
Pc = SameSide(P,C,A,B);
if Pa>0 && Pb>0 && Pc>0
    flag = 1;
elseif Pa*Pb*Pc == 0
    flag = 0;
else
    flag = -1;
end
% 两点在线的同一侧
    function flag = SameSide(p1, p2, A, B)
        cp1 = cross(B-A, p1-A);
        cp2 = cross(B-A, p2-A);
        flag = sign(dot(cp1, cp2)); % 1-同侧,0-线上,-1-异侧
    end
end
% 重心法或面积法
function flag = AreaMth(P, Triangle)
A = Triangle(1, :);
B = Triangle(2, :);
C = Triangle(3, :);
% Compute vectors
v0 = C - A;
v1 = B - A;
v2 = P - A;
% Compute dot products
dot00 = dot(v0, v0);
dot01 = dot(v0, v1);
dot02 = dot(v0, v2);
dot11 = dot(v1, v1);
dot12 = dot(v1, v2);
% Compute barycentric coordinates
invDenom = 1 / (dot00 * dot11 - dot01 * dot01);
u = (dot11 * dot02 - dot01 * dot12) * invDenom;
v = (dot00 * dot12 - dot01 * dot02) * invDenom;
% Check if point is in triangle
if u > 0 && v > 0 && u + v < 1
    flag = 1;
elseif u == 0 || v == 0 || u + v == 1
    flag = 0;
else
    flag = -1;
end
end
 
测试如下
P = [-1 2;
    0 1;
    0.5 0.5];
Triangle = [0 0;
    0 2;
    2 0];
flag = PointInTriangle(P, Triangle, 'a')
结果为
flag =
    -1
     0
     1


提 示:本站所有源码只提供浏览,需要定制的朋友可以联系在线客服!
注意:价格根据项目的难易程度来定价格业务咨询

判断点是否在三角形内 --下载地址

注意:为避免不必要的误会,本站项目里的源码只公开部分需要的联系在线客服

本站长期招聘程序代写高手,欢迎加入华南地区matlab团队

想创业却没有经验的人

无论你是否有过网上开店的经验,都可以随时联系在线客服,建立自己独立的网站
想开网店却不知道如何入手

淘宝创业成本低而且风险小,如果想开淘宝店的朋友可以联系在线客服。
想兼职创业,却不擅长交际与服务的人

在家创业月入5000元。网站程序+百套群发工具+网赚资料+域名+空间+本站终身代理资格,这样你网赚的条件全具备了。每天3小时管理、推广、收钱。
缺乏能快速赢利型产品的人

导入多种最新流行营销软件+网赚教程,让入驻者轻松加盟、复制有效成交技巧、快速赚钱。

源码评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论

浏览说明

* 本站所有源码全部公开,随时随地浏览!
* MATLAB软件如用于商业用途,请购买正版!
* 如果您发现下载链接错误,请点击报告错误谢谢!
* 站内提供的所有软件包含破解及注册码均是由网上搜集,若侵犯了你的版权利益,敬请来信通知我们!
Copyright © 2008-2014 www.buycode.cn. All Rights Reserved.
页面执行时间:234.00880 毫秒