Exemple #1
0
def get_keypad(numRings, rng):
    """places rings at the 9 'keypad' positions"""
    positions = (
        RingTracks.center,
        RingTracks.up, RingTracks.down,
        RingTracks.left, RingTracks.right,
        RingTracks.ul, RingTracks.ur,
        RingTracks.lr, RingTracks.ll,
        )
    tracks = []
    usedPositions = [None,]
    posScale = 0.7 + (rng.random() * 0.2)
    for i in range(0, numRings):
        # choose an unused position
        pos = None
        while pos in usedPositions:
            pos = rng.choice(positions)
        usedPositions.append(pos)

        # scale the positions
        scaledPos = [0,0]
        scaledPos[0] = pos[0] * posScale
        scaledPos[1] = pos[1] * posScale
        action = RingAction.RingActionStaticPos(scaledPos)
        track = RingTrack.RingTrack([action], [1.])
        tracks.append(track)

    # no per-track time offsets; period doesn't matter either
    return tracks, None, 1.
def get_keypad(numRings, rng):
    positions = (RingTracks.center,
     RingTracks.up,
     RingTracks.down,
     RingTracks.left,
     RingTracks.right,
     RingTracks.ul,
     RingTracks.ur,
     RingTracks.lr,
     RingTracks.ll)
    tracks = []
    usedPositions = [None]
    posScale = 0.7 + rng.random() * 0.2
    for i in range(0, numRings):
        pos = None
        while pos in usedPositions:
            pos = rng.choice(positions)

        usedPositions.append(pos)
        scaledPos = [0, 0]
        scaledPos[0] = pos[0] * posScale
        scaledPos[1] = pos[1] * posScale
        action = RingAction.RingActionStaticPos(scaledPos)
        track = RingTrack.RingTrack([action], [1.0])
        tracks.append(track)

    return tracks, None, 1.0
Exemple #3
0
def get_plus(numRings, rng):
    """make rings move in and out from center in a plus pattern"""
    up = RingTracks.getPlusUpRingActions
    down = RingTracks.getPlusDownRingActions
    left = RingTracks.getPlusLeftRingActions
    right = RingTracks.getPlusRightRingActions

    actionSets = {
        # this pattern is not used for 1 ring
        2: [[up, down],
            [left, right]],
        3: [[up, left, right],
            [left, up, down],
            [down, left, right],
            [right, up, down]],
        4: [[up, down, left, right]],
        }

    tracks = []
    actionSet = rng.choice(actionSets[numRings])
    for i in range(0, numRings):
        actions, durations = actionSet[i]()
        track = RingTrack.RingTrack(actions, durations)
        tracks.append(track)

    return tracks, [0] * numRings, plusPeriod
Exemple #4
0
def __get_Slots(numRings, rng, vertical=1):
    tracks = []
    tOffsets = []

    # calculate fixed positions (X for vertical, Y for horizontal)
    fpTab = []
    for i in range(numRings):
        fpTab.append(PythonUtil.lineupPos(i, numRings, 2./3))
    # move all of the fixed positions by a random amount,
    # staying within bounds
    offset = 1 - fpTab[-1]
    offset = (rng.random() * (offset*2)) - offset
    fpTab = map(lambda x: x+offset, fpTab)
    
    for i in range(0,numRings):
        if vertical:
            getActionsFunc = RingTracks.getVerticalSlotActions
        else:
            getActionsFunc = RingTracks.getHorizontalSlotActions
        actions, durations = getActionsFunc(fpTab[i])
        track = RingTrack.RingTrack(actions, durations)
        tracks.append(track)
        tOffsets.append((float(i)/numRings) * .5)

    return tracks, tOffsets, fullCirclePeriod
Exemple #5
0
def get_horizInfinity(numRings, rng):
    tracks = []
    for i in range(0, numRings):
        (actions, durations) = RingTracks.getHorizontalInfinityRingActions()
        track = RingTrack.RingTrack(actions, durations)
        tracks.append(track)
    
    return (tracks, infinityTOffsets[numRings - 1], infinityPeriod)
Exemple #6
0
def get_vertInfinity(numRings, rng):
    tracks = []
    for i in range(0, numRings):
        actions, durations = RingTracks.getVerticalInfinityRingActions()
        track = RingTrack.RingTrack(actions, durations)
        tracks.append(track)

    return (tracks, infinityTOffsets[numRings - 1], infinityPeriod)
Exemple #7
0
def get_horizInfinity(numRings, rng):
    """make the rings move in a sideways 8 pattern"""
    tracks = []
    for i in range(0, numRings):
        actions, durations = RingTracks.getHorizontalInfinityRingActions()
        track = RingTrack.RingTrack(actions, durations)
        tracks.append(track)

    return tracks, infinityTOffsets[numRings-1], infinityPeriod
Exemple #8
0
def get_evenCircle(numRings, rng):
    tracks = []
    tOffsets = []
    for i in range(0, numRings):
        (actions, durations) = RingTracks.getCircleRingActions()
        track = RingTrack.RingTrack(actions, durations)
        tracks.append(track)
        tOffsets.append(float(i) / numRings)
    
    return (tracks, tOffsets, fullCirclePeriod)
Exemple #9
0
def get_evenCircle_withStationaryCenterRings(numRings, rng):
    tracks = []
    tOffsets = []
    numCenterRings = rng.randint(1, numRings - 1)
    positions = getTightCircleStaticPositions(numCenterRings)
    for i in range(0, numCenterRings):
        action = RingAction.RingActionStaticPos(positions[i])
        track = RingTrack.RingTrack([action])
        tracks.append(track)
        tOffsets.append(0)

    numOuterRings = numRings - numCenterRings
    for i in range(0, numOuterRings):
        actions, durations = RingTracks.getCircleRingActions()
        track = RingTrack.RingTrack(actions, durations)
        tracks.append(track)
        tOffsets.append(float(i) / numOuterRings)

    return (tracks, tOffsets, fullCirclePeriod)
Exemple #10
0
def get_followCircle(numRings, rng):
    tracks = []
    tOffsets = []
    for i in range(0, numRings):
        actions, durations = RingTracks.getCircleRingActions()
        track = RingTrack.RingTrack(actions, durations)
        delay = 0.12
        tracks.append(track)
        tOffsets.append(float(i) * delay)

    return (tracks, tOffsets, fullCirclePeriod)
Exemple #11
0
def get_evenCircle(numRings, rng):
    """make the rings move in a circle, evenly spaced"""
    tracks = []
    tOffsets = []
    for i in range(0, numRings):
        actions, durations = RingTracks.getCircleRingActions()
        track = RingTrack.RingTrack(actions, durations)
        tracks.append(track)
        tOffsets.append(float(i)/numRings)

    return tracks, tOffsets, fullCirclePeriod
Exemple #12
0
def get_followCircle(numRings, rng):
    """make the rings follow each other closely in a circle"""
    tracks = []
    tOffsets = []
    for i in range(0, numRings):
        actions, durations = RingTracks.getCircleRingActions()
        track = RingTrack.RingTrack(actions, durations)
        delay = 0.12
        tracks.append(track)
        tOffsets.append(float(i)*delay)

    return tracks, tOffsets, fullCirclePeriod
Exemple #13
0
def get_evenCircle_withStationaryCenterRings(numRings, rng):
    """make some rings move in a circle, evenly spaced,
    with others in a small, stationary circle around (0,0)"""
    tracks = []
    tOffsets = []
    numCenterRings = rng.randint(1,numRings-1)
    # add the stationary center rings
    positions = getTightCircleStaticPositions(numCenterRings)
    for i in range(0, numCenterRings):
        action = RingAction.RingActionStaticPos(positions[i])
        track = RingTrack.RingTrack([action])
        tracks.append(track)
        tOffsets.append(0)

    numOuterRings = numRings - numCenterRings
    for i in range(0, numOuterRings):
        actions, durations = RingTracks.getCircleRingActions()
        track = RingTrack.RingTrack(actions, durations)
        tracks.append(track)
        tOffsets.append(float(i)/numOuterRings)

    return tracks, tOffsets, fullCirclePeriod
def get_plus(numRings, rng):
    up = RingTracks.getPlusUpRingActions
    down = RingTracks.getPlusDownRingActions
    left = RingTracks.getPlusLeftRingActions
    right = RingTracks.getPlusRightRingActions
    actionSets = {2: [[up, down], [left, right]], 3: [[up, left, right], [left, up, down], [down, left, right], [right, up, down]], 4: [[up, down, left, right]]}
    tracks = []
    actionSet = rng.choice(actionSets[numRings])
    for i in range(0, numRings):
        actions, durations = actionSet[i]()
        track = RingTrack.RingTrack(actions, durations)
        tracks.append(track)

    return (
     tracks, [0] * numRings, plusPeriod)
Exemple #15
0
def __get_Slots(numRings, rng, vertical = 1):
    tracks = []
    tOffsets = []
    fpTab = []
    for i in range(numRings):
        fpTab.append(PythonUtil.lineupPos(i, numRings, 2.0 / 3))
    
    offset = 1 - fpTab[-1]
    offset = rng.random() * offset * 2 - offset
    fpTab = map(lambda x: x + offset, fpTab)
    for i in range(0, numRings):
        if vertical:
            getActionsFunc = RingTracks.getVerticalSlotActions
        else:
            getActionsFunc = RingTracks.getHorizontalSlotActions
        (actions, durations) = getActionsFunc(fpTab[i])
        track = RingTrack.RingTrack(actions, durations)
        tracks.append(track)
        tOffsets.append((float(i) / numRings) * 0.5)
    
    return (tracks, tOffsets, fullCirclePeriod)