Skip to content
Snippets Groups Projects
Select Git revision
  • 03ee87b35abdb8b92e8b55ec040fa943f9a6786c
  • master default protected
  • LUFA-170418
  • LUFA-151115
  • LUFA-140928
  • LUFA-140302
  • LUFA-130901
  • LUFA-130901-BETA
  • LUFA-130303
  • LUFA-120730
  • LUFA-120730-BETA
  • LUFA-120219
  • LUFA-120219-BETA
  • LUFA-111009
  • LUFA-111009-BETA
  • LUFA-110528
  • LUFA-110528-BETA
17 results

makefile

Blame
  • LatticeCAM.js 3.67 KiB
    /**
     * Created by aghassaei on 6/23/15.
     */
    
    
    define(['lattice', 'three'], function(lattice, THREE){
    
        var camMethods = {
    
            showCellAtIndex: function(index){
                var latticeIndex = (new THREE.Vector3()).subVectors(index, this.get("cellsMin"));//index is probably a json object from gcode comment
                var cell = this.cells[latticeIndex.x][latticeIndex.y][latticeIndex.z];
                if (cell) cell.show();
                else console.warn("placing a cell that does not exist");
            },
    
            rasterCells: function(order, callback, var1, var2, var3, cells){//used for CAM raster x/y/z in any order permutation
                //order is of form 'XYZ'
                var firstLetter = order.charAt(0);
                order = order.substr(1);
                var isNeg = false;
                if (firstLetter == "-") {
                    isNeg = true;
                    firstLetter = order.charAt(0);
                    order = order.substr(1);
                }
                if (!cells) cells = this.cells;//grab cells once at beginning and hold onto it in case changes are made while looping
                var newVarOrder;
                var newVarDim;
                if (firstLetter == 'X'){
                    newVarOrder = 0;
                    newVarDim = cells.length;
                } else if (firstLetter == 'Y'){
                    newVarOrder = 1;
                    newVarDim = cells[0].length;
                } else if (firstLetter == 'Z'){
                    newVarOrder = 2;
                    newVarDim = cells[0][0].length;
                } else if (firstLetter == ""){
                    this._rasterCells(order, callback, var1, var2, var3, cells);
                    return;
                }
                if (var3 == null) var3 = {order: newVarOrder, dim: newVarDim, neg:isNeg};
                else if (var2  == null) var2 = {order: newVarOrder, dim: newVarDim, neg:isNeg};
                else var1 = {order: newVarOrder, dim: newVarDim, neg:isNeg};
                this.rasterCells(order, callback, var1, var2, var3, cells);
            },
    
            _rasterCells: function(order, callback, var1, var2, var3, cells){
                for (var i=this._getRasterLoopInit(var1);this._getRasterLoopCondition(i,var1);i+=this._getRasterLoopIterator(var1)){
                    for (var j=this._getRasterLoopInit(var2);this._getRasterLoopCondition(j,var2);j+=this._getRasterLoopIterator(var2)){
                        for (var k=this._getRasterLoopInit(var3);this._getRasterLoopCondition(k,var3);k+=this._getRasterLoopIterator(var3)){
                            if (var1.order == 0){
                                if (var2.order == 1) callback(cells[i][j][k], i, j, k);
                                else if (var2.order == 2) callback(cells[i][k][j], i, k, j);
                            } else if (var1.order == 1){
                                if (var2.order == 0) callback(cells[j][i][k], j, i, k);
                                else if (var2.order == 2) callback(cells[k][i][j], k, i, j);
                            } else {
                                if (var2.order == 0) callback(cells[j][k][i], j, k, i);
                                else if (var2.order == 1) {
                                    callback(cells[k][j][i], k, j, i);
                                }
                            }
    
                        }
                    }
                }
            },
    
            _getRasterLoopInit: function(variable){
                if (variable.neg) return variable.dim-1;
                return 0;
            },
    
            _getRasterLoopCondition: function(iter, variable){
                if (variable.neg) return iter>=0;
                return iter<variable.dim;
            },
    
            _getRasterLoopIterator: function(variable){
                if (variable.neg) return -1;
                return 1;
            }
        };
    
        _.extend(lattice, camMethods);
    
        return lattice;
    });