diff options
Diffstat (limited to 'screen.py')
-rw-r--r-- | screen.py | 50 |
1 files changed, 4 insertions, 46 deletions
@@ -12,22 +12,20 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -import math - import theme import model -class ScreenFrame: +class ScreenFrame(model.KeyFrame): def __init__(self): self.reset() def setjoints(self): - _setjoints(self.joints, self.sticks, self.middle) + self._setjoints(self.joints, self.sticks, self.middle) def reset(self): self.parts = theme.PARTS.copy() self.sticks = theme.STICKS.copy() - self.joints = _initjoints() + self.joints = self._initjoints() self.middle = (theme.DRAWWIDTH/2, theme.DRAWHEIGHT/3) self.setjoints() @@ -38,23 +36,10 @@ class ScreenFrame: self.joints = x.joints.copy() self.setjoints() - def get_scaled_sticks(self): - out = self.sticks.copy() - for key in out: - (angle,len) = out[key] - newlen = int(len * .2) - out[key] = (angle,newlen) - return out - - def get_scaled_joints(self, x, y): - out = _initjoints() - _setjoints(out, self.get_scaled_sticks(), (x, y)) - return out - def getrotatepoint(self): (angle,len) = self.sticks['TORSO'] x,y = self.middle - (rx,ry) = _getpoints(x,y,angle,int(len/2.0)) + (rx,ry) = self._getpoints(x,y,angle,int(len/2.0)) return (rx,ry) def inrotate(self, x, y): @@ -81,30 +66,3 @@ class ScreenFrame: for jname in self.joints: (jx, jy) = self.joints[jname] self.joints[jname] = (jx+dx, jy+dy) - -def _initjoints(): - joints = {} - for stickname in theme.JOINTS: - jname = theme.JOINTS[stickname] - joints[jname] = (0,0) - return joints - -def _setjoints(joints, sticks, middle): - # have to traverse in order because - # parent joints must be set right - for stickname in theme.STICKLIST: - (angle,len) = sticks[stickname] - jname = theme.JOINTS[stickname] - (x,y) = model.getparentjoint(jname, joints, middle) - parents = model.getparentsticks(stickname) - panglesum = 0 - for parentname in parents: - (pangle,plen) = sticks[parentname] - panglesum += pangle - (nx,ny) = _getpoints(x,y,angle+panglesum,len) - joints[jname] = (nx,ny) - -def _getpoints(x,y,angle,len): - nx = int(round(x + (len * math.cos(math.radians(angle))))) - ny = int(round(y - (len * math.sin(math.radians(angle))))) - return (nx,ny) |