Point
The documentation assumes the following variable is defined, it is recommended to use the same convention on user code:
var Px = Cx.Point;
var p = Px(x,y);p.x p.y
p.set(x,y); // Modify inplacep.set(point); // p := pointp.clone(); // return Px(p)p.isEqual(point); // return p == pointp.isNear(point,eps); // return p ~= pointp.isZero(); // return x == 0 && y == 0p.add(point); // p += pointp.substract(point); // p -= pointp.scalarMultiply(alpha); // p *= alphap.sm(alpha); // Shortcut for scalarMultiplyp.translate(offset); // p += offset, same as addp.translate(dx,dy); // x += dx, y += dyp.translated(offset);p.translated(dx,dy);p.transform(transform); // p := transform.apply(p)p.transformed(transform); // return transform.apply(p)p.toSVG(); // return 'x y'p.toXmlString(); // return 'x y'p.textualize(); // return 'x y'p.toCore(); // return { X: x, Y: y }p.norm2(); // return x2 + y2p.norm(); // return sqrt( norm2 ) p.normalize(); // p := p.normalized()p.normalized(); // return p / normp.perpendicular(); // return orthogonal vectorp.confined(bounds);p.confined(lx,ly,hx,hy);p.confine(bounds);p.confine(lx,ly,hx,hy);p.angle(); // return angle with respect to the x axisp.angle_rad(); // return angle in radians
Px.areEqual(pa,pb); // return pa == pbPx.fromXmlString(cdlPoint); // 'x y' => PxPx.fromCore(pointModel); // {X,Y} => PxPx.distance(pa,pb); // return euclidean distance between pointsPx.distance2(pa,pb); // return squared euclidean distance Px.minus(p); // return -pPx.add(pa,pb); // return pa + pbPx.substract(pa,pb); // return pa - pbPx.scalarMultiply(p,alpha); // return p * alphaPx.sm(p,alpha); // Shortcut for Px.scalarMultiply Px.dotProduct(pa,pb); // return pa * pbPx.crossProductZ(pa,pb); // return pa ^ pb Px.interpolate(pa,pb,t); // return pa * t + pb * (1-t)Px.isInsidePolygon(point,polygon);
Matrix
The documentation assumes the following variable is defined, it is recommended to use the same convention on user code:
var Mx = Cx.Matrix;
var m = Mx(s00,s01,s10,s11, dx,dy);m.s00 m.s01 m.dxm.s10 m.s11 m.dy
m.apply(point); // return m * pointm.apply(x,y); // return m * Px(x,y)m.clone(); // return Mx(m); m.isEqual(matrix); // return m == matrixm.isNear(matrix,eps); // return m ~= matrixm.isIdentity();m.isAlmostIsotropic(); // Only rotation and isometric scaling m.appended(matrix); // return m * matrixm.determinant(); // return s00 * s11 - s01 * s10m.scaleFactor(); // return sqrt(abs(determinant)) m.angle(); // return rotation angle m.invert();m.inverted(); m.toCssString(unit); // return 'matrix(s00,s01,s10,s11,dx unit,-dy unit)'m.toMatrix22String(); // return 's00 s01 s10 s11'm.toMatrixString(); // return 's00 s01 s10 s11 dx dy' m.textualize(); // return 's00 s01 s10 s11 dx dy' m.toCore(); // return { S00, S01, S10, S11, DX, DY }
// Only for matrix22Mx.add(m1,m2); // return m1 + m2Mx.substract(m1,m2); // return m1 - m2Mx.scalarMultiply(matrix,alpha); // return matrix * alpha
Mx.sm(matrix,alpha); // scalarMultiply shortcutMx.multiply(ml,mr); // return ml * mrMx.concat(m1,m2,m3,...); // return m1 * m2 * m3 * ...Mx.invert(matrix); // return matrix ^ -1
Mx.translate(offset); // return translation matrixMx.translate(dx, dy); // return translation matrixMx.scale(sx, sy, deg); // return scaling matrixMx.scaleFrom(point, sx, sy, deg); // return scaling matrixMx.rotate(deg); // return rotation matrixMx.rotateAround(point, deg); // retrun rotation matrixMx.shear(sx, sy, deg); // return shear matrixMx.shearAround(point, sx, sy, deg); // return shear matrixMx.transformAround(point, matrix); // return general matrix
Mx.stringToMatrix22(string); // 's00 s01 s10 s11' => MatrixMx.fromCore(m); return { S00, S01, S10, S11, DX, DY } => Matrix
Bounds
var b = Cx.Bounds(lx, ly, hx, hy);b.lx b.ly b.hx b.hy
b.clone(); b.isEqual(bounds); // return b == boundsb.lx_ly();b.lx_hy();b.hx_ly();b.hx_hy();b.center();b.area();b.width();b.height(); b.translated(offset);b.translated(x,y); b.translate(offset);b.translate(x,y);b.scaled(sx,sy);b.scale(sx,sy);b.inflated(dw,dh);b.inflate(dw,dh);b.contains(point); return ( point inside b )b.contains(x,y);b.interpolate(x,y); // return Px( lx + x width, ly + y height )b.deinterpolate(point); // return {x,y} such that point.x == lx + x width // point.y == ly + y heightb.toXmlString();b.textualize();
Cx.Bounds.fromBox(box); // { x, y, width, height } => Cx.BoundsCx.Bounds.fromXmlString(s); // 'lx ly hx hy' => Cx.BoundsCx.Bounds.fromCore(m); // { LX, LY, HX, HY } => Cx.Bounds
Cx.Bounds.ofPoints(points); // return points boundsCx.Bounds.ofPointsAfter(points,transform);Cx.Bounds.ofThings(things); // return things boundsCx.Bounds.ofThingsAfter(things,transform);
Cx.Bounds.overlapPercentage(ba, bb)Cx.Bounds.horizontalOverlapPercentage(ba, bb)Cx.Bounds.areOverlapping(ba,bb)Cx.Bounds.intersection(ba, bb)Cx.Bounds.union(boundsArray)
Frame
var f = Cx.Frame(p0,p1,p2,p3);f.p0 f.p1 f.p2 f.p3
f.clone();f.isEqual(frame); // return f == framef.bounds();f.center();f.width(); // return distance(p0,p1)f.height(); // return distance(p0,p3)f.width2(); // return distance2(p0,p1)f.height2(); // return distance2(p0,p3)f.minSideLength2();f.translate(dx,dy);f.translated(dx,dy);f.transform(t);f.transformed(t);f.interpolate(ax,ay);f.toXmlString();f.contains(point);f.extend(olx,oly,ohx,ohy);f.extended(olx,oly,ohx,ohy);f.angle(); // p0 p1 angle
Cx.Frame.fromRect(x,y,width,height);Cx.Frame.fromBounds(bounds)Cx.Frame.around(center,width,height);
Cx.Frame.fromXmlString(s); // 'p0x p0y ... ' => Cx.FrameCx.Frame.areOverlapping(fa,fb);Cx.Frame.overlapPercentage(fa,fb);