Skip to content

Commit

Permalink
diagonal reflections
Browse files Browse the repository at this point in the history
  • Loading branch information
neilger committed Jan 25, 2015
1 parent 9552188 commit 93bca1f
Show file tree
Hide file tree
Showing 5 changed files with 81 additions and 5 deletions.
24 changes: 24 additions & 0 deletions py/nodes/Transform/reflect/reflect_xy.node
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
# Neil Gershenfeld 1/24/15

import fab

title('reflect xy')

def reflect_xy(part,x0,y0):
from fab.types import Shape, Transform
# X' = x0 + (Y-y0)
# Y' = y0 + (X-x0)
# X = x0 + (Y'-y0)
# Y = y0 + (X'-x0)
return part.map(Transform(
'+f%(x0)g-Yf%(y0)g' % locals(),
'+f%(y0)g-Xf%(x0)g' % locals(),
'+f%(x0)g-Yf%(y0)g' % locals(),
'+f%(y0)g-Xf%(x0)g' % locals()))

input('x0',float,0)
input('y0',float,0)

input('shape',fab.types.Shape)
output('transform',reflect_xy(shape,x0,y0))

26 changes: 26 additions & 0 deletions py/nodes/Transform/reflect/reflect_xz.node
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
# Neil Gershenfeld 1/24/15

import fab

title('reflect xz')

def reflect_xz(part,x0,z0):
from fab.types import Shape, Transform
# X' = x0 + (Z-z0)
# Z' = z0 + (X-x0)
# X = x0 + (Z'-z0)
# Z = z0 + (X'-x0)
return part.map(Transform(
'+f%(x0)g-Zf%(z0)g' % locals(),
'Y',
'+f%(z0)g-Xf%(x0)g' % locals(),
'+f%(x0)g-Zf%(z0)g' % locals(),
'Y',
'+f%(z0)g-Xf%(x0)g' % locals()))

input('x0',float,0)
input('z0',float,0)

input('shape',fab.types.Shape)
output('transform',reflect_xz(shape,x0,z0))

26 changes: 26 additions & 0 deletions py/nodes/Transform/reflect/reflect_yz.node
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
# Neil Gershenfeld 1/24/15

import fab

title('reflect yz')

def reflect_yz(part,y0,z0):
from fab.types import Shape, Transform
# Y' = y0 + (Z-z0)
# Z' = z0 + (Y-y0)
# Y = y0 + (Z'-z0)
# Z = z0 + (Y'-y0)
return part.map(Transform(
'X',
'+f%(y0)g-Zf%(z0)g' % locals(),
'+f%(z0)g-Yf%(y0)g' % locals(),
'X',
'+f%(y0)g-Zf%(z0)g' % locals(),
'+f%(z0)g-Yf%(y0)g' % locals()))

input('y0',float,0)
input('z0',float,0)

input('shape',fab.types.Shape)
output('transform',reflect_yz(shape,y0,z0))

4 changes: 2 additions & 2 deletions py/nodes/Transform/scale/scale_xy.node
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@ def scale_xy(part,x0,y0,sx,sy):
from fab.types import Shape, Transform
# X' = x0 + (X-x0)/sx
# Y' = y0 + (Y-y0)/sy
# X = x0 + (X-x0)*sx
# Y = y0 + (Y-y0)*sy
# X = x0 + (X'-x0)*sx
# Y = y0 + (Y'-y0)*sy
return part.map(Transform(
'+f%(x0)g/-Xf%(x0)gf%(sx)g' % locals(),
'+f%(y0)g/-Yf%(y0)gf%(sy)g' % locals(),
Expand Down
6 changes: 3 additions & 3 deletions py/nodes/Transform/scale/scale_xyz.node
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,9 @@ def scale_xyz(part,x0,y0,z0,sx,sy,sz):
# X' = x0 + (X-x0)/sx
# Y' = y0 + (Y-y0)/sy
# Z' = z0 + (Z-z0)/sz
# X = x0 + (X-x0)*sx
# Y = y0 + (Y-y0)*sy
# Z = z0 + (Z-z0)*sz
# X = x0 + (X'-x0)*sx
# Y = y0 + (Y'-y0)*sy
# Z = z0 + (Z'-z0)*sz
return part.map(Transform(
'+f%(x0)g/-Xf%(x0)gf%(sx)g' % locals(),
'+f%(y0)g/-Yf%(y0)gf%(sy)g' % locals(),
Expand Down

0 comments on commit 93bca1f

Please sign in to comment.