   Creating shotgun rays - Disc point picking with transformation doesn't work as intended.
  I'm trying to create random rays in a specific radius to give the impression of a shotgun blast.  This is the way I am currently attempting it:[For each shotgun ray]- Pick a random point on a disc with a radius of 0.5f. (Local space centered around 0,0,0)- Create a camera world transform using the camera's orientation and position- Transform the random point on the disc using the camera world transform- Create the ray using the point as the origin...I'm currently stuck on two things.  1) How do I create the direction of the ray using the transformed point?2) Why aren't the disc points transforming correctly?In relation to the second question I can create 3 random points on a disc using: Vector3 pointA = MathTools.DiscPointPickingCentre(0.5f); Vector3 pointB = MathTools.DiscPointPickingCentre(0.5f); Vector3 pointC = MathTools.DiscPointPickingCentre(0.5f);where the DiscPointPickingCentre method is as follows:   /// <summary>   /// Generates a random point on a disc with the concentration of points in the centre   /// <para>See: http://mathworld.wolfram.com/DiskPointPicking.html </para>   /// </summary>   /// <param name="radius">Radius of the disc</param>   /// <returns>A random point on the disc</returns>   public static Vector3 DiscPointPickingCentre(float radius)   {  radius = Random.NextFloat(0f, radius);  float theta = Random.NextFloat(0f, TWOPI - EPSILON);  Vector3 point = new Vector3();  point.X = radius * (float)Math.Cos(theta);  point.Y = radius * (float)Math.Sin(theta);  point.Z = 0f;  return point;   }The points are then transformed by the camera transform: Matrix cameraWorld = Matrix.CreateFromQuaternion(activeCamera.Orientation); cameraWorld.Translation = activeCamera.Position; pointA = Vector3.Transform(pointA, cameraWorld); pointB = Vector3.Transform(pointB, cameraWorld); pointC = Vector3.Transform(pointC, cameraWorld);If I create a plane out of the three transformed points: CollisionDetection.Plane plane = new CollisionDetection.Plane(pointA, pointB, pointC); plane.Normal.Normalize();then the plane's normal is very different to the camera forward (or backward) vector, which tells me something is not right.Where might I be going wrong and is this the standard method for creating shotgun rays, or have I overcomplicated things?   