Points along a displacement vector – Part 1

Tuesday, November 18th, 2008 | examples

I thought it might be helpful to teach a bit about vectors.

In this example, you’ll see a starting point (the green sphere) and an ending point (the red sphere). The displacement vector between the sphere is going from the starting point to the ending point.

You find the displacement vector by subtracting the ending point’s x, y, and z from the starting point’s x, y, and z. Then you can easily add points along the vector in a loop as demonstrated in the code:

View example
source

package {
 
	import org.papervision3d.core.math.Number3D;
	import org.papervision3d.materials.WireframeMaterial;
	import org.papervision3d.objects.primitives.Sphere;
	import org.papervision3d.view.BasicView;
 
	[SWF(width="640", height="480", backgroundColor="#000000", frameRate="60")]
	public class PointsAlongAVector extends BasicView
	{
 
		private const NUM_POINTS:int = 10;
		public function PointsAlongAVector()
		{
			var pointA:Sphere = new Sphere(new WireframeMaterial(0x00cc00), 500);
			pointA.x = -1000;
			pointA.y = -800;
			pointA.z = 500;
 
			var pointB:Sphere = new Sphere(new WireframeMaterial(0xcc0000), 500);
			pointB.x = 12000;
			pointB.y = 8000;
			pointB.z = 20000;
 
			scene.addChild(pointA);
			scene.addChild(pointB);
 
			//we're going from A to B
			//so subtract A from B
			var vector:Number3D = 
			new Number3D
			(
				pointB.x - pointA.x,
				pointB.y - pointA.y,
				pointB.z - pointA.z
			);	
 
			for(var i:int = 0; i < NUM_POINTS; i++)
			{
				var pointAlongVector:Sphere = new Sphere(null, 50, 4, 4);
				//take the starting point (pointA) 
				//add the vector and multiply it by
				//the proportion of the current time through the loop (i)
				//over the total number of times through the loop (NUM_POINTS)
				pointAlongVector.x = pointA.x + (vector.x * i / NUM_POINTS);
				pointAlongVector.y = pointA.y + (vector.y * i / NUM_POINTS);
				pointAlongVector.z = pointA.z + (vector.z * i / NUM_POINTS);
 
				scene.addChild(pointAlongVector);
			}			
 
			//nothing's moving, so we only render once
			singleRender();
		}
	}
}

Tags: , ,

  • Trevor
    awesome, i happen to need this on the project i'm working on! cheers
blog comments powered by Disqus

Search

Recommended Books

Speaking at FITC Toronto

 

November 2008
M T W T F S S
    Dec »
 12
3456789
10111213141516
17181920212223
24252627282930

Preferred Video Tutorial Resolution

  • 1024x768 (53%, 85 Votes)
  • 1280x1024 (15%, 24 Votes)
  • 1920x1080 (15%, 24 Votes)
  • 800x600 (13%, 20 Votes)
  • 480x320 (4%, 6 Votes)
  • 640x480 (0%, 2 Votes)

Total Voters: 160

Loading ... Loading ...