From 50848c7daabcb68364413d71635ae834a46c5f24 Mon Sep 17 00:00:00 2001 From: Val Erastov Date: Mon, 9 Feb 2015 22:21:24 -0800 Subject: [PATCH] Radius equal constraint --- web/app/parametric.js | 27 ++++++++++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) diff --git a/web/app/parametric.js b/web/app/parametric.js index 2b4e105f..5c70898e 100644 --- a/web/app/parametric.js +++ b/web/app/parametric.js @@ -109,10 +109,10 @@ TCAD.TWO.ParametricManager.prototype.tangent = function(objs) { TCAD.TWO.ParametricManager.prototype.rr = function(objs) { var arcs = this._fetchArkCirc(objs, 2); - var prev = arcs[0].r; + var prev = arcs[0]; for (var i = 1; i < arcs.length; ++i) { - this.system.push(new TCAD.TWO.Constraints.Equal(prev, arcs[i].r)); - prev = arcs[i].r; + this.system.push(new TCAD.TWO.Constraints.RR(prev, arcs[i])); + prev = arcs[i]; } this.solve(); this.notify(); @@ -665,4 +665,25 @@ TCAD.TWO.Constraints.Factory[TCAD.TWO.Constraints.Radius.prototype.NAME] = funct return new TCAD.TWO.Constraints.Radius(refs(data[0]), data[1]); }; +// ------------------------------------------------------------------------------------------------------------------ // + +TCAD.TWO.Constraints.RR = function(arc1, arc2) { + this.arc1 = arc1; + this.arc2 = arc2; +}; + +TCAD.TWO.Constraints.RR.prototype.NAME = 'RR'; + +TCAD.TWO.Constraints.RR.prototype.getSolveData = function() { + return [['equal', [this.arc1.r, this.arc2.r], []]]; +}; + +TCAD.TWO.Constraints.RR.prototype.serialize = function() { + return [this.NAME, [this.arc1.id, this.arc2.id]]; +}; + +TCAD.TWO.Constraints.Factory[TCAD.TWO.Constraints.RR.prototype.NAME] = function(refs, data) { + return new TCAD.TWO.Constraints.RR(refs(data[0]), refs(data[1])); +}; + // ------------------------------------------------------------------------------------------------------------------ // \ No newline at end of file