Question
How can I determine the tilt angle of a plane given an X Angle and Y Angle from the Surface Plane tool?
Answer
| Sensor Model | G2xxx, G3xxx |
| Firmware Version | All |
| SDK Version | n/a |
The tilt angle is defined here as the angle between the X-Y plane and the plane measured with the Surface Plane tool.
The tilt angle can also be understood as the angle between the Z axis and the surface normal vector. This allows us to calculate the angle from the dot product of these two vectors. The dot product of the Z axis unit vector and the surface normal is equal to the Z component of the surface normal vector, which is cos(X_Angle) * cos(Y_Angle). The tilt angle can be calculated from the arc-cosine of this value:
tilt = acos(cos(X_Angle) * cos(Y_Angle))
This calculation can be performed in a script, assuming you have added a Surface Plane tool with the default name.
// Gocator script to calculate Surface Plane tilt angle from X and Y Angles.
// This script assumes you have Surface Plane tool added with the default name.
char* toolName = "Surface Plane";
char* xAngleName = "X Angle";
char* yAngleName = "Y Angle";
float degToRad = 3.141593/180;
float radToDeg = 180/3.141593;
// check if the measurement tool exists
if (Measurement_NameExists(toolName, xAngleName)
&& Measurement_NameExists(toolName, yAngleName))
{
// get the X and Y Angle outputs from the tool and convert to radians
float xAngle = degToRad*Measurement_Value(Measurement_Id(toolName, xAngleName));
float yAngle = degToRad*Measurement_Value(Measurement_Id(toolName, yAngleName));
// calculate the tilt in radians
float tiltRad = acos(cos(xAngle)*cos(yAngle));
// set the output
Output_SetAt(0, tiltRad*radToDeg, 1);
}
else
{
// set the output to 0 with a measurement failed decision value
Output_SetAt(0, 0, 0);
}
Comments
0 comments
Please sign in to leave a comment.