19 Jun

#### Updated version of connection representation and discussion of how to deal with different cases in place function

How to represent the three major types (four subtypes) of connection

1. edge-edge: addConnection((faceB,edgeB), (faceA,edgeA), orientation=front-front/front-back, offset=x, angle=x)

initial placement: faceA is placed in the x-y plance of an x-y-z coordinate, edgeA is placed along the x-axis. Similarly, faceB is placed in the x-y plance of an x-y-z coordinate, edgeB is placed along the x-axis. If A and B has front-front orientation, then edgeB will offset toward the positive direction of x-axis; if A and B has front-back orientation, then edgeB will offset toward the negative direction of x-axis.

a. faceA, edgeA

b. faceB, edgeB

c. orientation: front-front vs front-back

d. offset: x (only offset along the x-axis is allowed)

e. angle: x (only rotation around the x-axis is allowed)

1. edge-edge-offset (can be regarded as an extension of edge-edge, or a special case of edge-face. We differentiate it from edge-face or edge-edge connection because it is highly useful and common for real-life furniture design, which makes it deserve a special treatment.): addInsertion((faceB,edgeB), (faceA,edgeA), orientation=front-front/front-back, offset=(x,y), angle=(x,z))

initial placement: the same as edge-edge

a. faceA, edgeA

b. faceB, edgeB

c. orientation: front-front vs front-back

d. offset: (x,y) (can offset along the x-axis and the y-axis)

e. angle: (x=90*k,y) (can rotate around the x-axis or the y-axis)

1. edge-face: addEdgeToFace((faceB,edgeB), (faceA), orientation=front-front/front-back, offset=(x,y), angle=(x,z), rotation=alpha)

initial placement: faceA is placed in the x-y plane of an x-y-z coordinate, centering at (0,0,0). faceB is also placed in the x-y plane of an x-y-z coordinate, with its edgeB ???

a. faceA

b. faceB, edgeB

c. orientation: front-front vs front-back

d. offset: (x,y) (can offset along the x-axis and the y-axis)

e. angle: (x,z) (can rotate around the x-axis or the z-axis)

f. rotation: alpha (faceB can rotation within the x-y plane around the z-axis clockwise with an angle of alpha)

1. face-face: addEdgeToFace((faceB), (faceA), orientation=front-front/front-back, offset=(x,y,z), angle=(x,y,z), rotation=alpha)

initial placement: Both faceA and faceB are placed within the x-y plane of an x-y-z coordinated, centering at (0,0,0).

a. faceA

b. faceB

c. orientation: front-front vs front-back

d. offset: (x,y,z)

e. angle: (x,y,z)

f. rotation: alpha (faceB can rotation within the x-y plane around the z-axis clockwise with an angle of alpha)