RotationZWidget Class Reference

The RotationZWidget JavaScript class. A rotatable circle widget around the z axis. More...

Signals

void valueChanged (float z)
 
- Signals inherited from WidgetBase
void dragStarted (QScriptValue dragContext)
 signal called on mouse down when picking this widget with the Transform tool More...
 
void drag (QScriptValue dragContext)
 signal called when this widget is dragged with the Transform tool More...
 
void dragEnded ()
 signal called on mouse up after having manipulated this widget with the Transform tool More...
 

Additional Inherited Members

- Public Slots inherited from WidgetBase
Attributedata (int index=0)
 

Detailed Description

The RotationZWidget JavaScript class. A rotatable circle widget around the z axis.

A rotation script widget along the z axis. This widget offers a circle in the YZ axis. The circle can be picked and dragged by the user to generate a rotation around the z axis. The following properties are supported by the widget:

Property Type Default Value Description
data String - The name of the automatically generated double floating point attribute (if none is provided)
data Attribute - An attribute of double (floating point) type that can be shared with another widget or node.
radius float 1 The radius of the circle in fields.
width float 0.03 The width between the external and internal circles (band) in fields.
color ColorRGBA 0, 0, 255, 120 The colour of the circle manipulator.
selection_color ColorRGBA light blue The colour of the circle manipulator when selected.

The following components constitute the widget:

Component Type
attribute DOUBLE
drag_manipulator ROTATION_Z
painter CIRCLE_Z
picker MONO
local_transformation ROTATION_Z

Connect to this scriptWidget valueChanged signal to be notified when a modification has been applied to the widget.

{
var Controller.controls = [];
var myRotationZdWidget = new RotationZWidget(
{
data : "myRotation",
radius : 2,
radius : 0.05,
color : ColorRGBA(0,255,0, 120),
selected_color : ColorRGBA(0,255,0, 120)
} );
// Register a callback for when a transformation tool value changes.
myRotationZdWidget.valueChanged.connect(myRotationChanged);
Controller.controls.push(myRotationZdWidget);
}

In the callback function, convert the widget value into an action.

function myRotationChanged(newRotation)
{
// Create a rotation matrix based on the 3D rotation of the widget.
var zaxis = new Vector3d( 0,0,1 );
var rotationMatrix = new Matrix4x4();
rotationMatrix.rotateDegrees( newRotation, zaxis );
// Rotate the original position of a series of pegs
for(var i=0; i < myPegs.length; ++i)
{
var newPosition = rotationMatrix.multiply(myPegs[i].position);
node.setTextAttr(myPegs[i].path, "POSITION.X", frame.current(), newPosition.x);
node.setTextAttr(myPegs[i].path, "POSITION.Y", frame.current(), newPosition.y);
node.setTextAttr(myPegs[i].path, "POSITION.Z", frame.current(), newPosition.z);
}
}

Member Function Documentation

◆ valueChanged

void RotationZWidget::valueChanged ( float  z)
signal