hexagon logo

Some thoughts about vectors

PC-DMIS uses vectors in all features, and in some assignments.

1/ The extention for a vector is .IJK ; .I gives the first component, .J the second and .K the third.

2/ The length of a vector is 1 (1 mm in mm, 1 " in inches). It means that the sum of the squares of the components is 1.

3/ When you use "ANGLEBETWEEN", angle is calculated in degrees between 2 vectors.
Ex : ASSIGN/V1=ANGLEBETWEEN(PL1.IJK,LN1.IJK)
If PL1 and LN1 vectors are <0,0,1>,Anglebetween gives 0° (angle between vectors, not features !), but angle between the plane and the line is 90° !!!

4/ You can create vectors from hits.
Ex : ASSIGN/V1=PT2.XYZ-PT1.XYZ ; It gives the components of the vector PT1PT2 ; Its length is the 3D distance between PT1 and PT2 (ASSIGN/V2=DIST3D({PT1},{PT2}) or ASSIGn/V2=SQRT(DOT(PT2.XYZ-PT1.XYZ,PT2.XYZ-PT1.XYZ)), or ASSIGN/V2=SQRT(DOT(V1,V1))

5/ If you want a classical vector (length =1) along a line between PT1 and PT2, you don't need to create the line, you can use ASSIGN/V3=UNIT(PT2.XYZ-PT1.XYZ) or ASSIGN/V3=UNIT(V1).

6/ Alignment vectors ares calculated in the current alignment, with their name (ASSIGN/V4=AL1.ZAXIS in AL1 gives <0,0,1>, in AL2, it gives the rotation of Z axis between Al2 and Al1)

7/ Cross function (in PC-DMIS, not in the real life !!!) gives a unit vector, perp to the first and the second. ASSIGN/V5=CROSS(LN1.IJK,LN2.IJK) gives a vector perp to both lines. If you need to calculate the distance between 2 cylinders (non coplanar), then you can ASSIGN/V6=DOT(CYL1.XYZ-CYL2.XYZ,CROSS(CYL1.IJK,CYL2.IJK)), which gives directly the good result without any local alignment.

8/ Another way to create a vector, you can use MPOINT function : ASSIGN/V1=MPOINT(10,20,30) construct a point with coordinates <10,20,30> or a vector with the same components. Just to remember that coordinates of a point have the same values than components of a vector from origin to the point, so MPOINT can give a vector !!!

That's all for a monday morning, it's coffee time ! Slight smile
Parents
  • I'll haver a go at answering this...

    When it comes to vectors, PC-Dmis unitises them (that is it gives them a unit length of 1).

    So the vector for 45° is 0.7071, 0.7071, 0 - if you do Pythagoras on that you'll see the hypotenuse is 1 .

    However it will cope with non-unitised vectors. If I want to define a vector point at 45° I can enter the vector as 1,1,0, or 10,10,0 or 100,100,0 - the ratios are the same, so the angle/vector are the same.

    So if you've any two points, the difference between X1 and X2, Y1 and Y2, and Z1 and Z2 is actually the vector of the line between them (easier to picture if you make the first point 0,0,0).


    D'oh. That sounds quite correct. It's not so much PC-DMIS doing this as it is basic trig, PC-DMIS is just taking shortcuts, which is what I missed. JEFMAN does this all before coffee, and apparently I can't function without it. Slight smile

    Thanks
Reply
  • I'll haver a go at answering this...

    When it comes to vectors, PC-Dmis unitises them (that is it gives them a unit length of 1).

    So the vector for 45° is 0.7071, 0.7071, 0 - if you do Pythagoras on that you'll see the hypotenuse is 1 .

    However it will cope with non-unitised vectors. If I want to define a vector point at 45° I can enter the vector as 1,1,0, or 10,10,0 or 100,100,0 - the ratios are the same, so the angle/vector are the same.

    So if you've any two points, the difference between X1 and X2, Y1 and Y2, and Z1 and Z2 is actually the vector of the line between them (easier to picture if you make the first point 0,0,0).


    D'oh. That sounds quite correct. It's not so much PC-DMIS doing this as it is basic trig, PC-DMIS is just taking shortcuts, which is what I missed. JEFMAN does this all before coffee, and apparently I can't function without it. Slight smile

    Thanks
Children
No Data