Properties
Static environments
environments
: RelationEnvironment[] = [{ //Horizontal pointsname: "horizontal",filter: new FilterString(":2+point"),create: function(figures) {let ys: Variable[] = [];for(let point of figures.point) {ys.push(point._y);}return [new RelationEqual("horizontal", ...ys)];}},{ //Vertical pointsname: "vertical",filter: new FilterString(":2+point"),create: function(figures) {let xs: Variable[] = [];for(let point of figures.point) {xs.push(point._x);}return [new RelationEqual("vertical", ...xs)];}},{ //Horizontal linesname: "horizontal",filter: new FilterString(":1+line"),create: function(figures) {let relations: RelationEqual[] = [];for(let line of figures.line) {relations.push(new RelationEqual("horizontal", line.p0._y, line.p1._y));}return relations;}},{ //Vertical linesname: "vertical",filter: new FilterString(":1+line"),create: function(figures) {let relations: RelationEqual[] = [];for(let line of figures.line) {relations.push(new RelationEqual("vertical", line.p0._x, line.p1._x));}return relations;}},{ //Coincident pointname: "coincident",filter: new FilterString(":2+point"),create: function(figures) {let xs: Variable[] = [];let ys: Variable[] = [];for(let point of figures.point) {xs.push(point._x);ys.push(point._y);}return [new RelationEqual("vertical", ...xs),new RelationEqual("horizontal", ...ys),];}},{ //Equal radiusname: "equal radius",filter: new FilterString(":2+circle"),create: function(figures) {let rs: Variable[] = [];for(let circle of figures.circle) {rs.push(circle._r);}return [new RelationEqual("equal radius", ...rs)];}},{ //Concentricname: "concentric",filter: new FilterString(":2+circle,1+circle&*point"),create: function(figures) {let xs: Variable[] = [];let ys: Variable[] = [];for(let circle of figures.circle) {xs.push(circle.c._x);ys.push(circle.c._y);}for(let point of figures.point) {xs.push(point._x);ys.push(point._y);}return [new RelationEqual("vertical", ...xs),new RelationEqual("horizontal", ...ys)];}},{ //Point on circlename: "point on circle",filter: new FilterString(":circle&1+point"),create: function(figures) {return [new RelationPointsOnCircle(figures.circle[0], ...figures.point)];}},{ //Intersection between circlesname: "circle intersection",filter: new FilterString(":point&2+circle"),create: function(figures) {let p = figures.point[0];let relations = [];for(let circle of figures.circle) {relations.push(new RelationPointsOnCircle(circle, p));}return relations;}},{ //Co-linear pointsname: "colinear",filter: new FilterString("line as 2 point:3+point"),create: function(figures) {let points = figures.point;for(let line of figures.line) {points.push(line.p0);points.push(line.p1);}return [new RelationColinearPoints(...points)];}},{ //Midpointname: "midpoint",filter: new FilterString(":point&line"),create: function(figures) {return [new RelationMidpoint(figures.point[0], figures.line[0])];}},{ //Intersection between linesname: "line intersection",filter: new FilterString(":point&2+line"),create: function(figures) {let p = figures.point[0];let relations = [];for(let line of figures.line) {relations.push(new RelationColinearPoints(p, line.p0, line.p1));}return relations;}},{ //Equal length linesname: "equal length",filter: new FilterString(":2+line"),create: function(figures) {return [new RelationEqualLength(...figures.line)];}},{ //Tangent Circlesname: "tangent circles",filter: new FilterString(":2circle"),create: function(figures) {return [new RelationTangentCircle(figures.circle[0], figures.circle[1])];}},{ //Tangent Linename: "tangent line",filter: new FilterString(":1circle&1line"),create: function(figures) {return [new RelationTangentLine(figures.line[0], figures.circle[0])];}},]
Methods
Static getSatisfiedEnvironments
Static sortFigureSelection