出于说明目的,请参见下图。
给定一个点p
和两个向量u
and v
,我们可以得到 and 的线性组合u
,v
, and是整数t = m*u + n*v
,并且 t 应该在框内。解决这个问题并不太难。As和可以是正面的也可以是负面的。可以讨论:m
n
m
n
- m > 0 和 n > 0
- m > 0 和 n < 0
- m < 0 和 n > 0
- m < 0 和 n < 0
这是案例1的python代码:
m = 0
n = 0
t = m*u+n*v
x = t[0]
y = t[1]
l = []
while (x>0 and x < 1024 and y > 0 and y < 1024):
l.append(t)
m = m + 1
t = m*u+n*v
x = t[0]
y = t[1]
while (x>0 and x < 1024 and y > 0 and y < 1024):
l.append(t)
n = n +1
t = m*u+n*v
x = t[0]
y = t[1]
使用两个循环进行 4 组可能会解决问题。
另一种方法是生成太多点,然后删除框外的点
我想也许还有其他简单而优雅的方式来做到这一点?