Files
@ 97de46a7c740
Branch filter:
Location: OneEye/src/grid.py - annotation
97de46a7c740
2.2 KiB
text/x-python
minor Corners refactoring
_canonizeOrder renamed to canonizeOrder due to being used publicly
comments changes
_canonizeOrder renamed to canonizeOrder due to being used publicly
comments changes
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)
|