Forums > MaxMSP

Circular Path using Jit.anim.path

April 23, 2012 | 8:21 am

I was wondering if there was a way to get a circular path for an object to move around. I know you can set the interpmode to spline on the jit.anim.path to get rounded edges but the append messages used to draw are giving me a hard time and I cannot seem to get a circular looking path. Is it possible to get something that looks like jit.gl.sketch with a framecircle 3 0 360 message being sent to it? Thanks.


May 14, 2012 | 3:24 pm

i made something similar (made a helix spline) with javascript and connected the outlet directly to the jit.anim.path inlet… if you set height to zero, you’ll get a circle.


autowatch = 1;

inlets = 1;
outlets = 1;

var Point3D = function(x,y,z){

this.x = x;
this.y = y;
this.z = z;

this.toString = function(){
return "Point3D[ x: "+this.x+", y: "+this.y+", z: "+this.z+" ]";
}

return this;

}

var Spline3D = function(Point3DArray){
this.points = Point3DArray;
if(typeof(this.points)=="undefined"){
this.points = new Array();
}

return this;
}

var Helix = function(numPoints, numFrequency, radius, height){
this.Points = new Array();
this.radius = radius;
this.height = height;
this.freqency = numFrequency;
this.arcsize = this.freqency / numPoints;
this.stepsize = this.height / numPoints;

for(var i = 0; i < numPoints; i++){
var x = Math.sin(i*this.arcsize * 2 * Math.PI) * this.radius;
var y = i * this.stepsize;
var z = Math.cos(i*this.arcsize * 2 * Math.PI) * this.radius - 65.;

var tmp = new Point3D(x,y,z);
//post(tmp + "n");
this.Points[i] = tmp ;
}

return this;
}

var numPoints = 123.;
var numFrequency = 1.1;
var radius = 30.;
var height = 50.0;

var time_matrix = new JitterMatrix(1,"float32", numPoints);
var point_matrix = new JitterMatrix(3,"float32", numPoints);

var helix = new Helix(numPoints, numFrequency, radius, height);

function fillMatrix(){
for(i=0;i

post(helix.Points[i] + "n");
x = helix.Points[i].x;
y = helix.Points[i].y;
z = helix.Points[i].z;

time_matrix.setcell1d(i,y*0.05);
// if you want to add some randomness to the vertical axis
//y = y - Math.random() * (height/numPoints) *2. - (height / 2.);
point_matrix.setcell(i,"val",x,y,z);

}
}

function pack(mat1, mat2){

var packer = new JitterObject("jit.pack");
packer.offset = [0,0];
packer.jump = [1,3];

var outmat = new JitterMatrix(4,"float32",numPoints);
packer.matrixcalc([mat1,mat2],outmat);
return outmat;

}

fillMatrix();
bang();

function bang(){
outmat = pack(time_matrix,point_matrix);

outlet(0,"jit_matrix",outmat.name);
outlet(0,"play",1);
outlet(0,"rate",-0.5);
outlet(0,"loop",0);
}

now i want to create the jit.anim.path object dynamicly in javascript, but i don’t know how to assign the input matrix to the path object., any suggestions? jit.anim.path.matrixcalc does not work…


Viewing 2 posts - 1 through 2 (of 2 total)