※ 引述《mrbigmouth (拒绝崩溃的蒲公英)》之铭言:
: 高中数学不知道丢到哪里去了只好来此请教 m(_ _)m
: 现有一方格地图座标系,
: 每个座标都代表一个方格,
: 现在我要计算某个格子有光源、单位时其光线/视线能够到达何处
: 依照简化后的规则,一律起源格的中心点为起点,目标格的中心点为终点
: 两点画线之后,所经的格子边、格子皆视为其光线/视线会经过的路段
: 这些格子边之上、格子范围内的一切影响源(雾气、遮蔽物等等)都会影响到光线与视线
: (举例而言,座标1,1到座标2,3之间会经过
: 座标1,1
: 座标1,1上面的边
: 座标1,2
: 座标1,2右边的边
: 座标2,2
: 座标2,2上面的边
: 座标2,3)
: 数学上,
: 可以把座标以x2-1的方式求出double后的座标系,
: 再求出两点的线性方程式,
: 最后再一一代入各座标得出会经过哪些格子的边、格子的范围。
: ......但程式要怎么做到这一过程?@@
: 已知两点求出线性方程式? 这种东西没办法存到内存里...
: 有办法将这过程简化为程式直接可用的公式吗?
: 或是有大能可以提供更方便直接的作法吗?
这我猜应该属于 ray-tracing 的范围吧.
有个简单的公式, 给定一条直线(两点)
你可以判断 input point 是在线的 左/右.
你用 格子的端点去 scan 应该就行了.
http://stackoverflow.com/questions/4977491/determining-if-two-line-segments-intersect