<
Kingdom of Pattern
>

Geometry

Kingdom of Pattern defines geometric types (implemented as prototypes) and methods that are directly accessible in any context. Geometic objects are used in the course of geometric computations, but do not have a visible form. shapes, covered in the next section, are the visible elements.

The geometric types and their properties and methods are specified below.

Point

Constructor:

Point.mk(x:number>,y:number>)

Properties of Point p,

p.x:number;
p.y:number;

Methods for Point p,

p.plus(q:Point):Point; // returns the vector sum p and q
p.difference(q:Point):Point; // returns the vector subtraction of q from p
p.distance(q:Point):number; // returns distance from p to q
p.normalize():Point; // returns p shrunk or extended to a unit vector with the same direction
p.normal():Point; // returns a vector which is orthogonal to p
p.times(s:number):Point; // return p scaled by s

LineSegment

LineSegment.mk(end0:Point,end1:Point)

Properties of LineSegment s,

s.end0:Point;
s.end1:Point;

Methods for LineSegment s,

s.length():number;
s.pointAlong(n:number):Point; // for 0<=n<=1, returns the point fraction n of the way from end0 to end1

Rectangle

Rectangle.mk(corner:Point:extent:Point)

Properties of Rectangle r,

s.corner:Point;
s.extent:Point;

Methods for Rectangle r,

r.contains(p:Point):boolean;

Circle

Circle.mk(center:Point,radius:number)

Properties of Circle c,

c.center:Point
c.radius:number;

Point3d

Constructor:

Point3d.mk(x:number,y:number,z:number)

Properties of Point3d p,

p.x:number;
p.y:number;
p.z:number;

Methods for Point3d p,

p.plus(q:Point):Point3d; // returns the vector sum p and q
p.difference(q:Point):Point3d;; // returns the vector subtraction of q from p
p.distance(q:Point):number; // returns distance from p to q
p.times(s:number):Point3d;; // return p scaled by s

Camera

Constructor:

Camera.mk(focalPoint:Point3d,focalLength:number,scaling:number,axis:string)

axis should be one of "x", "y", "z"

Properties of Camera c,

c.focalPoint
c.focalLength:number;
p.scaling:number;
p.axis:string; // one of 'x','y','z'

Methods for Camera c,

c.project(p:Point3d); // returns the projection of p onto the focal plane