Matlab计算两点直线经过的栅格坐标

因为在网上找了很久都没有找到合适的,所以自己写了一个,效率可能没有那么高,但是能用

我们可以将两点看作长方体顶点,其直线就是长方体的对角线,如果长方体内栅格中心点到对角线的距离小于栅格的对角线长度的二分之一,那直线就经过了这个栅格。

代码如下:

function [point] = findblock(start,goal)
point = [];
dis = 0.7071; % 一半的根号二
for i = start(1):goal(1)
    for j = start(2):goal(2)
        p = [i;j];                      %当前需要验证的点

        % p点到start和goal点形成直线的距离,goal、start、p都必须为列向量
        d = abs(det([goal-start,p-start])/norm(goal-start));

        % 如果都是行向量,则是下面这个公式
        % d =  abs(det([goal-start;p-start])/norm(goal-start));     

        if d < dis   
            point = [point;i,j];
        end
    end
end

end

 代码运行结果:

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值