Main Content

sim3d.graphics.Arrow

Create arrow actor

Since R2024a

    Description

    Use the sim3d.graphics.Arrow object to create an actor object with N number of arrow elements in the 3D environment for annotation and visualization of relevant vector data during simulation. After you create a sim3d.graphics.Arrow object, you can modify the aspects of the arrow actor by setting property values.

    Creation

    Description

    actor = sim3d.graphics.Arrow() creates a default arrow actor object in the 3D environment.

    actor = sim3d.graphics.Arrow(Name=Value) specifies options using one or more optional name-value arguments. For example, to create an arrow actor at the position (0,1,0), set Translation to [0 1 0].

    example

    Input Arguments

    expand all

    Name-Value Arguments

    Specify optional pairs of arguments as Name1=Value1,...,NameN=ValueN, where Name is the argument name and Value is the corresponding value. Name-value arguments must appear after other arguments, but the order of the pairs does not matter.

    Example: arrow = sim3d.graphics.Arrow(ActorName='Arrow',Translation=[3 4 3],Color=[1 1 0]) creates an actor object with a single arrow element, the specified actor name, position and color.

    Example: arrows = sim3d.graphics.Arrow(ActorName='Arrows',Translation=[3 2 3; 3 5 3; 3 3 3],Color=[1 1 0; 1 0 0; 0 1 0]) creates an actor object with three arrow elements by specifying the actor name, positions and colors.

    Name of actor, specified as a character array or string. If you do not specify an actor name, then the software assigns the actor an autogenerated name. Use this argument to set the name of the sim3d.graphics.Arrow object.

    Note

    If you specify the same name as an actor that already exists, then the software appends actor name you specify with a unique identifier.

    Relative translation (x,y,z) of the actor object to its parent actor, specified as a real N-by-3 array, in m. N specifies the number of elements created using the sim3d.graphics.Arrow object. When you add an actor to the 3D environment, the default parent actor is the Scene Origin at (0,0,0).

    Example: Translation=[3 4 3]

    Example: Translation=[3 2 3; 3 5 3; 3 3 3]

    Data Types: double

    Relative rotation (roll, pitch, yaw) of the actor object to its parent actor, specified as a real N-by-3 array, in rad.

    Example: Rotation=[0 pi/2 -pi/4]

    Example: Rotation=[0 pi/2 -pi/4; 0 pi/2 -pi/4; 0 pi/2 -pi/4]

    Data Types: double

    Relative scale in x, y, and z coordinates of the actor object to its parent actor, specified as a real N-by-3 array.

    Example: Scale=[1 2 1]

    Example: Scale=[2 2 2; 2 2 2; 2 2 2]

    Data Types: double

    Base color of actor, specified as real N-by-3 array of RGB triplet values. An RGB triplet is a three-element row vector whose elements specify the intensities of the red, green, and blue components of the color. The intensities must be in the range [0, 1].

    Example: Color=[0 1 0]

    Example: Color=[1 0 0; 0 0 1; 1 1 0]

    Data Types: double

    Total length of arrow including the arrow head, specified as real positive N-by-1 vector, in m.

    Example: Length=2

    Example: Length=[0.5; 0.5; 0.5]

    Data Types: double

    Option to hide the actor from the 3D environment scene, specified as 0 (false) if the actor is visible in the scene or 1 (true) if the actor is hidden in the scene. For N number of elements, specify as a logical N-by-1 vector.

    Example: Hidden=1

    Example: Hidden=[1; 0; 1]

    Properties

    expand all

    Parent of actor, specified as a handle to the parent actor object. After you add an actor to the sim3d.World object, the default parent actor is the Scene Origin at (0,0,0). Use this property to set any actor in the 3D environment as the parent actor of a sim3d.graphics.Arrow object.

    This property is read-only.

    Children of actor, specified as a structure. Each field of the structure contains a handle to the child of a sim3d.graphics.Arrow object.

    Parent world, specified as a handle to the parent sim3d.World object. You can use this property only if the sim3d.graphics.Arrow object is added to the parent sim3d.World object.

    Actor orientation representation in the 3D environment, specified as one of the listed values. The values are not case-sensitive.

    • 'Default' – World coordinate system

    • 'MATLAB' – MATLAB® coordinate system

    • 'ISO8855' – ISO 8855 standard coordinate system

    • 'AERO' – SAE coordinate system

    • 'VRML' – X3D ISO standard coordinate system

    • 'SAE' – SAE coordinate system

    To display the actor transformation in the specified coordinate system, set this property first, and then set the transform properties Translation, Rotation, and Scale. For more details on the different coordinate systems, see Coordinate Systems in Simulink 3D Animation.

    Data Types: string

    Relative translation (x,y,z) of the actor object to its parent actor, specified as a real N-by-3 array, in m. N specifies the number of elements created using the sim3d.graphics.Arrow object. When you add an actor to the 3D environment, the default parent actor is the Scene Origin at (0,0,0).

    Example: arrow.Translation = [1 2 1]

    Example: arrows.Translation = [1 4 2; 1 3 2; 1 2 2]

    Relative rotation (roll, pitch, yaw) of the actor object to its parent actor, specified as a real N-by-3 array, in rad.

    Example: arrow.Rotation = [0 pi/2 pi/8]

    Example: arrows.Rotation = [pi/2 pi/4 pi/2; 0 pi/4 pi/2; pi pi/2 0]

    Relative scale in x, y, and z coordinates of the actor object to its parent actor, specified as a real N-by-3 array.

    Example: arrow.Scale = [2 2 2]

    Example: arrows.Scale = [2 2 2; 2 2 2; 2 2 2]

    Base color of actor, specified as real N-by-3 array of RGB triplet values. An RGB triplet is a three-element row vector whose elements specify the intensities of the red, green, and blue components of the color. The intensities must be in the range [0, 1].

    Example: arrow.Color = [0 1 0]

    Example: arrows.Color = [1 0 0; 0 0 1; 1 1 0]

    Data Types: double

    Total length of arrow including the arrow head, specified as real positive N-by-1 vector, in m.

    Example: arrow.Length = 2

    Example: arrows.Length = [0.5; 0.5; 0.5]

    Data Types: double

    Option to hide the actor from the 3D environment scene, specified as 0 (false) if the actor is visible in the scene or 1 (true) if the actor is hidden in the scene. For N number of elements, specify as a logical N-by-1 vector.

    Example: arrow.Hidden = 1

    Example: arrows.Hidden = [1; 0; 1]

    Examples

    collapse all

    Create arrows and text labels in the 3D environment. First, create a box actor. Then, create arrows and text label objects and attach them to the actor. Finally, view the annotated actor in the Simulation 3D Viewer window.

    Create 3D Environment

    Create a world object using sim3d.World.

    world = sim3d.World();

    Create Actor

    Create a box actor in the 3D environment using the sim3d.Actor object and add the box actor to the world.

    box = sim3d.Actor(ActorName='Box');
    createShape(box,'box',[0.5 0.5 0.5]);
    box.Color = [1 1 0];
    add(world,box);

    Create Arrows

    Create three arrows using the sim3d.graphics.Arrow object and set the ActorName of the object. To position the arrows in the 3D environment, set the Translation argument with a 3-by-3 array value. Set the Rotation and Color properties for each arrow and add the object to the world.

    arrows = sim3d.graphics.Arrow( ...
        ActorName='Arrows', ...
        Translation=[0.25 0 0; 0 0.25 0; 0 0 0.25]);
    arrows.Rotation = [0 0 0; 0 0 pi/2; 0 pi/2 0];
    arrows.Color = [1 0 0; 0 1 0; 0 0 1];
    add(world,arrows,box);

    Create Text

    Create three text labels using the sim3d.graphics.Text object and set the ActorName of the object. To position the text labels in the 3D environment, set the Translation argument with a 3-by-3 array value. Set the Color property of each text label and the String property with the display text. Add the object to the world.

    texts = sim3d.graphics.Text( ...
        ActorName='Texts', ...
        Translation=[1.25 0 0; 0 1.25 0; 0 0 1.25]);
    texts.Color = [1 0 0; 0 1 0; 0 0 1];
    texts.String = ["X";"Y";"Z"];
    add(world,texts,box);

    Run Simulation

    Set the Simulation 3D Viewer window point of view and run the simulation.

    viewport = createViewport(world,Translation=[-3 4 1]);
    viewport.Rotation = [0 0 -pi/4];
    sampletime = 0.01;
    stoptime = 5;
    run(world,sampletime,stoptime);

    Annotated box actor with arrows along the x,y, and z directions and text labels on the axes.

    delete(world);

    Version History

    Introduced in R2024a