function position()

in src/carousel.js [204:282]


      function position(item) {

        var item_transition = item.transition()
        .ease(d3.easeLinear) 
        .duration(250);        

        item_transition.attr('transform',function(d,i){
          var dist_from_focus = Math.abs(i - carousel_focus);
          var dir_from_focus = Math.sign(i - carousel_focus);
          var x_translate = (svg_width * 0.5 + 0.5 * ((focus_height * 2) - 4)) - ((focus_height * 2) - 4) * (1 - (dist_from_focus * 0.05)) - 2;
          var y_translate = 0;

          if (dist_from_focus == 0) {
            y_translate = center_y - (focus_height * 0.5) - 2;
          }
          else {
            var offset = 0;
            var j = (dir_from_focus == -1) ? 1 : 2;
            var buffer = (dir_from_focus == -1) ? 6 : 10;
            for (j; j <= dist_from_focus; j++){
              offset = offset + buffer + d3.max([0,(focus_height - 4) * (1 - (j * 0.1))]);
            }
            if (dir_from_focus == -1) {              
              y_translate = center_y - ((focus_height - 4) * 0.5) - 4 - offset;
            }
            else {
              y_translate = center_y + ((focus_height - 4) * 0.5) + 2 + offset;
            }
          }

          return 'translate('+ x_translate + ',' + y_translate + ')';
        });
        
        item_transition.select('.carousel_rect')
        .attr('x',0)
        .attr('y',0)     
        .attr('height', function(d,i){
          var dist_from_focus = Math.abs(i - carousel_focus);
          if (dist_from_focus == 0) {            
            return (focus_height - 4);
          }
          else {
            return d3.max([0,(focus_height - 4) * (1 - (dist_from_focus * 0.1))]);
          }
        })
        .attr('width', function(d,i){
          var dist_from_focus = Math.abs(i - carousel_focus);
          return d3.max([0,((focus_height * 2) - 4) * (1 - (dist_from_focus * 0.1))]);
        })
        .style('opacity',function(d,i){
          var dist_from_focus = Math.abs(i - carousel_focus);
          return 1 * (1 - (dist_from_focus * 0.25));
        })        
        .attr('stroke', '#fff');

        item_transition.select('.carousel_text')    
        .attr('y', function(d,i){
          var dist_from_focus = Math.abs(i - carousel_focus);
          if (dist_from_focus == 0) {            
            return focus_height / 2;
          }
          else {
            return d3.max([0,(focus_height - 4) * (1 - (dist_from_focus * 0.1))]) / 2;
          }          
        })
        .attr('x', function(d,i){
          var dist_from_focus = Math.abs(i - carousel_focus);
          return d3.max([0,((focus_height * 2) - 4) * (1 - (dist_from_focus * 0.1))]) / 2;
        })
        .style('font-size',function(d,i){
          var dist_from_focus = Math.abs(i - carousel_focus);
          return 0.7 * (1 - (dist_from_focus * 0.1)) + 'em';
        })
        .style('opacity',function(d,i){
          var dist_from_focus = Math.abs(i - carousel_focus);
          return 0.75 * (1 - (dist_from_focus * 0.25));
        });

      }