[Dojo-interest] Is this at all possible with dojo.gfx ordojoingeneral?

Peter Svensson psvensson at gmail.com
Tue Apr 29 19:38:00 UTC 2008


NP. I'll port it when I can find the time. If anyone else have their hands
free, please go ahead :)

Cheers,
PS

On Tue, Apr 29, 2008 at 8:23 PM, Michael Schall <mike.schall at gmail.com>
wrote:

> As I researched the jsviz library, my current needs of multiple edges
> between 2 entities is not currently supported.  I still think seeing this in
> dojo would be awesome, I will not be able to work on it for a while.
>
> On Thu, Apr 24, 2008 at 11:50 AM, Peter Svensson <psvensson at gmail.com>
> wrote:
>
> > Craig, you're absolutely right. That's a very good idea. Take the file
> > Spring.js, for instance;
> >
> > /* Licensed under the Apache License, Version 2.0 (the "License");
> >  * you may not use this file except in compliance with the License.
> >  * You may obtain a copy of the License at
> >  *
> >  *     http://www.apache.org/licenses/LICENSE-2.0
> >  *
> >  * Unless required by applicable law or agreed to in writing, software
> >  * distributed under the License is distributed on an "AS IS" BASIS,
> >  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
> > implied.
> >  * See the License for the specific language governing permissions and
> >  * limitations under the License.
> >  *
> >  * Author: Kyle Scholz      http://kylescholz.com/
> >  * Copyright: 2006-2007
> >  */
> >
> > /**
> >  * Spring
> >  *
> >  * @author Kyle Scholz
> >  *
> >  * @version 0.3
> >  *
> >  * A Spring Force between two Particle.
> >  *
> >  * @param {Particle} a  - A Particle.
> >  * @param {Particle} b  - The other Partilce.
> >  * @param {Number} springConstant - The Spring constant.
> >  * @param {Number} dampingConstant  - The damping constant.
> >  * @param {Number} r  - The rest length of the Spring.
> >  */
> > var Spring = function( a, b, springConstant, dampingConstant, restLength
> > ) {
> >     this.init( a, b, springConstant, dampingConstant, restLength );
> > }
> > Spring.prototype = {
> >
> >     /*
> >      * Initialize the Spring Force.
> >      *
> >      * @param {Particle} a  - A Particle.
> >      * @param {Particle} b  - The other Partilce.
> >      * @param {Number} springConstant - The Spring constant.
> >      * @param {Number} dampingConstant  - The damping constant.
> >      * @param {Number} restLength  - The length of the Spring at rest.
> >      */
> >     init: function( a, b, springConstant, dampingConstant, restLength )
> > {
> >         this['springConstant'] = springConstant;
> >
> >         this['damping'] = dampingConstant;
> >
> >         this['restLength'] = restLength;
> >
> >         this['a'] = a;
> >
> >         this['b'] = b;
> >
> >         // The force exerted by the Spring on the X axis.
> >         this.forceX = 0;
> >
> >         // The force exerted by the Spring on the Y axis.
> >         this.forceY = 0;
> >     },
> >
> >     /*
> >      * Apply a spring force based on distance between particles.
> >      */
> >     apply: function() {
> >
> >         // Determine the current length of the spring
> >         var dx = this.a.positionX - this.b.positionX;
> >         var dy = this.a.positionY - this.b.positionY;
> >         var springLength = Math.sqrt( dx*dx + dy*dy );
> >
> >         if ( springLength == 0 ) {
> >             dx = 0;
> >             dy = 0;
> >         } else {
> >             dx *= (1/springLength);
> >             dy *= (1/springLength);
> >         }
> >
> >         // Determine the spring force
> >         var springForce = -(springLength - this.restLength) *
> > this.springConstant;
> >
> >         // Determine the damping force
> >         var vx = this.a.velocityX - this.b.velocityX;
> >         var vy = this.a.velocityY - this.b.velocityY;
> >         var dampingForce = -this.damping * (dx * vx + dy * vy);
> >
> >         // Determine the sum force
> >         var force = springForce + dampingForce;
> >
> >         // Apply force to vectors
> >         dx *= force;
> >         dy *= force;
> >
> >         // Get the difference since last application
> >         var dfx = dx - this.forceX;
> >         var dfy = dy - this.forceY;
> >
> >         if (!this.a.fixed && !this.a.selected) {
> >             this.a.forceX += dfx;
> >             this.a.forceY += dfy;
> >         }
> >
> >         if (!this.b.fixed && !this.b.selected) {
> >             this.b.forceX -= dfx;
> >             this.b.forceY -= dfy;
> >         }
> >
> >         // Update the spring force
> >         this.forceX = dx;
> >         this.forceY = dy;
> >     }
> > }
> >
> >
> > This could probably be integrated with dojox.fx, I think
> >
> > Cheers,
> > PS
> >
> >
> > On Thu, Apr 24, 2008 at 5:57 PM, Craig L. Ching <cching at mqsoftware.com>
> > wrote:
> >
> > > > What I would recommend to do first is to take the base file and
> > > create
> > > a
> > > > dijit out of it. take a small custom dijit example, and convert all
> > > > function definitions from foo.prototype.bar = function() .. to
> > > bar:
> > > > function(){ .. },  ...
> > > >
> > >
> > > Just a quick comment, I'm assuming that there are some good
> > > force-directed graph layout algorithms in the code (I haven't looked
> > > at
> > > it at all, so pardon me if I'm wrong), wouldn't those go well in a
> > > separate dojox project?  I'm asking because I recently wrote a
> > > force-directed graph layout implementation for use with dojo, but I'd
> > > love to use this instead.
> > >
> > > A dijit would be wonderful, but I'm guessing there are some other
> > > reusable components under the hood.
> > >
> > > > Cheers,
> > > > PS
> > >
> > > Cheers,
> > > Craig
> > > _______________________________________________
> > > FAQ: http://dojotoolkit.org/support/faq
> > > Book: http://dojotoolkit.org/docs/book
> > > Forums: http://dojotoolkit.org/forum
> > > Dojo-interest at dojotoolkit.org<http://dojotoolkit.org/forumDojo-interest@dojotoolkit.org>
> > > http://turtle.dojotoolkit.org/mailman/listinfo/dojo-interest
> > >
> >
> >
> > _______________________________________________
> > FAQ: http://dojotoolkit.org/support/faq
> > Book: http://dojotoolkit.org/docs/book
> > Forums: http://dojotoolkit.org/forum
> > Dojo-interest at dojotoolkit.org<http://dojotoolkit.org/forumDojo-interest@dojotoolkit.org>
> > http://turtle.dojotoolkit.org/mailman/listinfo/dojo-interest
> >
> >
>
> _______________________________________________
> FAQ: http://dojotoolkit.org/support/faq
> Book: http://dojotoolkit.org/docs/book
> Forums: http://dojotoolkit.org/forum
> Dojo-interest at dojotoolkit.org<http://dojotoolkit.org/forumDojo-interest@dojotoolkit.org>
> http://turtle.dojotoolkit.org/mailman/listinfo/dojo-interest
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://turtle.dojotoolkit.org/pipermail/dojo-interest/attachments/20080429/2134f32e/attachment.html 


More information about the Dojo-interest mailing list