# Geometry

To be able to determine the directions of the axes and the order of the x, y and z axes, the right-hand rule is applied: Spread the first three fingers of your right hand, as seen below. By virtue of the right-hand rule, your thumb becomes the positive x axis, the index finger, which is at a right angle from the thumb, becomes the positive y axis and the middle finger becomes the z axis. The position of the middle finger is of decisive importance. It points in the positive z direction. No matter how you rotate your right hand, the positive direction of the z axis is determined by the right-hand rule. All basic elements in cadwork have an axis system. Except for the auxiliary element, room and surfaces, the elements are defined by an axis. The axis spans between point 1 and point 2. The orientation of the axis is defined by the vectors x, y, z. ## Vector Geometry

A vector indicates a quantity, such as velocity or force, that has direction and length.Vectors in 3D coordinate systems are represented with an ordered set of three realnumbers.

Two vectors are the same if they have the same magnitude and direction. This means that if we take a vector and translate it to a new position (without rotating it), then the vector we obtain at the end of this process is the same vector we had in the beginning.

Vector or point
A vector defines a direction and length. A point defines a location.  a point --> point_3d(100,400,250) a vector --> point_3d(1., 0., 0.) A cadwork point_3d list can be accessed like a simple python list.

``````import  cadwork                                 # import module

print(point)                                 # prints x coordinate
print(point)                                 # prints y coordinate
print(point)                                 # prints z coordinate
``````

The coordinates of a cadwork point_3d object can also be accessed by its .x, .y and .z attributes.

``````import  cadwork                                # import module

print(point.x)                                 # prints x coordinate
print(point.y)                                 # prints y coordinate
print(point.z)                                 # prints z coordinate
``````

### Point_3d methods

``````point_3d + point_3d

point_3d - point_3d

point_3d * float

point_3d / float

point_3d += point_3d

point_3d -= point_3d

point_3d *= float

point_3d /= float

-point_3d

point_3d == point_3d

point_3d != point_3d

# dot product or scalar product
point_3d.dot(point_3d)

# cross product or vector product
# operation on two vectors in a three-dimensional oriented Euclidean vector space
point_3d.cross(point_3d)

# vector magnitude or length
point_3d.magnitude()

# A normalized vector maintains its direction but its Length becomes 1
point_3d.normalized()

# distance between two points
point_3d.distance(point_3d)
`````` ``````import  cadwork                                 # import module

vector_x = cadwork.point_3d(1., 0., 0.)         # define vector
distance = 1500.0                               # moving distance

moved_point = point + (vector_x * distance)
``````

### cross product ``````import cadwork

ab = a.cross(b)
# ab = [0.000000, 0.000000, 1.000000]
``````

### angle between two 3D vectors ``````import math     as m                                 # import module