Parametric design in MoI?

 From:  Karsten (KMRQUS)
7713.297 In reply to 7713.292 
Hello Max,

I'm not sure that the pushFrame works:

pointArray.prototype.pushFrame = function(frame)
{
var rx=ry=rz=0;
if ( frame.zaxis.y === 0 && frame.zaxis.z === 0) { ry = ( frame.xaxis.z > 0 )?90:-90; }
else
{
rx = Math.atan2(frame.zaxis.y, frame.zaxis.z);
ry = -Math.asin(frame.zaxis.x);
rz = Math.atan2(frame.xaxis.z*Math.sin(rx)-frame.xaxis.y*Math.cos(rx), frame.xaxis.x*Math.cos(ry)+(frame.xaxis.y*Math.sin(rx)+frame.xaxis.z*Math.cos(rx))*Math.sin(ry));
}

this.data.push(frame.origin.x); this.data.push(frame.origin.y); this.data.push(frame.origin.z);
this.data.push(rx); this.data.push(ry); this.data.push(rz);
this.data.push(1);
this.xlength++;
}
I'm missing the conversion to deg?
What works for me at the moment is something like:

pointArray.prototype.pushFrame = function (frame)
{
this.data.push(frame.origin.x);
this.data.push(frame.origin.y);
this.data.push(frame.origin.z);

var rx=ry=rz=0;
if ( frame.zaxis.y === 0 && frame.zaxis.z === 0) { ry = ( frame.xaxis.z > 0 )?Math.PI/4:-Math.PI/4; }
else
{
rx = Math.atan2(frame.zaxis.y, frame.zaxis.z);
ry = -Math.asin(Math.round(frame.zaxis.x*10000)/10000);
rz = Math.atan2(frame.xaxis.z*Math.sin(rx)-frame.xaxis.y*Math.cos(rx), frame.xaxis.x*Math.cos(ry)+(frame.xaxis.y*Math.sin(rx)+frame.xaxis.z*Math.cos(rx))*Math.sin(ry));
}
/////////////////////////
this.data.push(rx * 180 / Math.PI);
this.data.push(ry * 180 / Math.PI);
this.data.push(rz * 180 / Math.PI);

this.data.push(1);
// this.xlength++;
}
Although, for the gimbal lock is a calculation vor rx or rz is missing?? e.g. rz = Math.atan2(frame.yaxis.z,frame.yaxis.y); with rx=0;???

Nevertheless, tomorrow is a new day!
Karsten