Files
@ 1d4ca86c9193
Branch filter:
Location: OneEye/src/grid.py - annotation
1d4ca86c9193
2.2 KiB
text/x-python
rewritten readme
3bc6cb7cfd8b 3bc6cb7cfd8b 3bc6cb7cfd8b 3bc6cb7cfd8b 3bc6cb7cfd8b 3bc6cb7cfd8b 3bc6cb7cfd8b 3bc6cb7cfd8b 3bc6cb7cfd8b 3bc6cb7cfd8b 3bc6cb7cfd8b 3bc6cb7cfd8b 3bc6cb7cfd8b 3bc6cb7cfd8b 3bc6cb7cfd8b 3bc6cb7cfd8b 3bc6cb7cfd8b 3bc6cb7cfd8b 3bc6cb7cfd8b 3bc6cb7cfd8b 3bc6cb7cfd8b 3bc6cb7cfd8b 3bc6cb7cfd8b 3bc6cb7cfd8b 3bc6cb7cfd8b 3bc6cb7cfd8b 3bc6cb7cfd8b 3bc6cb7cfd8b 3bc6cb7cfd8b 3bc6cb7cfd8b 3bc6cb7cfd8b 3bc6cb7cfd8b 3bc6cb7cfd8b 3bc6cb7cfd8b 3bc6cb7cfd8b 3bc6cb7cfd8b 3bc6cb7cfd8b 3bc6cb7cfd8b 3bc6cb7cfd8b 3bc6cb7cfd8b 3bc6cb7cfd8b 3bc6cb7cfd8b 3bc6cb7cfd8b 3bc6cb7cfd8b 3bc6cb7cfd8b 3bc6cb7cfd8b 3bc6cb7cfd8b 3bc6cb7cfd8b 3bc6cb7cfd8b 3bc6cb7cfd8b 3bc6cb7cfd8b 3bc6cb7cfd8b 3bc6cb7cfd8b 3bc6cb7cfd8b 3bc6cb7cfd8b 3bc6cb7cfd8b 3bc6cb7cfd8b 3bc6cb7cfd8b 3bc6cb7cfd8b 3bc6cb7cfd8b 3bc6cb7cfd8b 3bc6cb7cfd8b 3bc6cb7cfd8b 3bc6cb7cfd8b 3bc6cb7cfd8b 3bc6cb7cfd8b 3bc6cb7cfd8b 3bc6cb7cfd8b 3bc6cb7cfd8b 3bc6cb7cfd8b 3bc6cb7cfd8b 3bc6cb7cfd8b 3bc6cb7cfd8b 3bc6cb7cfd8b | import numpy
## Multiplicates the vector as to set the first nonzero coordinate to 1.
def canonize(v):
if v.item(0)!=0: factor=v.item(0)
elif v.item(1)!=0: factor=v.item(1)
elif v.item(2)!=0: factor=v.item(2)
else: factor=1
return v/factor
return [x/factor for x in v]
def transformPoint(point,A):
# print('#68',numpy.asarray(([1]+point)*A))
x=canonize((A*numpy.matrix([1]+point).transpose()).getA1())
return x[1:]
class Grid:
def __init__(self,corners):
# ab
# cd
a,b,c,d=corners
p1=numpy.cross(a,b)
p2=numpy.cross(c,d)
vanish1=numpy.cross(p1,p2)
print('#16',p1,p2,vanish1)
p3=numpy.cross(a,c)
p4=numpy.cross(b,d)
vanish2=numpy.cross(p3,p4)
print('#32',p3,p4,vanish2)
horizon=canonize(numpy.cross(vanish1,vanish2))
# horizon.x+=10
# horizon[1]+=10
print('#48',horizon)
rectiMatrix=numpy.matrix([horizon,[0,1,0],[0,0,1]])
rectiMatrixInv=numpy.linalg.inv(rectiMatrix)
print('#64',rectiMatrixInv)
print('#72',transformPoint([0,0],rectiMatrixInv))
self.intersections=[[[c,r] for c in range(3)] for r in range(3)]
self.intersections=[[transformPoint(point,rectiMatrixInv) for point in line] for line in self.intersections]
# b1=canonize(numpy.cross(horizon,p1))
# b2=canonize(numpy.cross(horizon,p2))
# b3=canonize(numpy.cross(horizon,p3))
# b4=canonize(numpy.cross(horizon,p4))
# print('#64',b1,b2,b3,b4)
# self.intersections=[]
# boardSize=4
# for r in range(boardSize):
# self.intersections.append([None]*boardSize)
# rowLine=numpy.cross(((b1*r+b2*(boardSize-1-r)) / (boardSize-1)), vanish1)
# print('#80',rowLine)
# for c in range(boardSize):
# colLine=numpy.cross(((b3*c+b4*(boardSize-1-c)) / (boardSize-1)), vanish2)
# print('#88',colLine)
# self.intersections[r][c]=numpy.cross(rowLine,colLine)
# x=Grid([Vector3(1,0,10),Vector3(1,10,10),Vector3(1,0,0),Vector3(1,10,0)])
x=Grid([[1,0,10],[1,7,7],[1,0,0],[1,10,0]])
for line in x.intersections:
print('#96',line)
|