# Program Listing for File Triangle2D.m

↰ Return to documentation for file (`Triangle2D.m`)

    classdef Triangle2D < handle
      %> MATLAB class wrapper for the underlying C++ class
      properties (SetAccess = private, Hidden = true)
        objectHandle; % Handle to the underlying C++ class instance
      end

      methods
        %>
        %> Create a new C++ class instance for the triangle object
        %>
        %> **Usage:**
        %>
        %> \rst
        %> .. code-block:: matlab
        %>
        %>    ref = Triangle2D();
        %>    ref = Triangle2D( x0, y0, x1, y1, x2, y2 );
        %>    ref = Triangle2D( p0, p1, p2 );
        %>
        %> \endrst
        %>
        %> **On output:**
        %>
        %> - `ref`: reference handle to the object instance
        %>
        function self = Triangle2D( varargin )
          self.objectHandle = Triangle2DMexWrapper( 'new', varargin{:} );
        end
        % - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
        %> Destroy the C++ class instance
        function delete( self )
          Triangle2DMexWrapper( 'delete', self.objectHandle );
        end
        % - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
        function obj = obj_handle( self )
          obj = self.objectHandle;
        end
        % - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
        function str = is_type( ~ )
          str = 'Triangle2D';
        end
        % - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
        function build( self, varargin )
          Triangle2DMexWrapper( 'build', self.objectHandle, varargin{:} );
        end
        % - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
        %> move the triangle by `(tx,ty)`
        function translate( self, tx, ty )
          Triangle2DMexWrapper( 'translate', self.objectHandle, tx, ty );
        end
        % - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
        %> scale triangle by `sc` factor
        function scale( self, sc )
          Triangle2DMexWrapper( 'scale', self.objectHandle, sc );
        end
        % - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
        function [p1,p2,p3] = points( self )
          [p1,p2,p3] = Triangle2DMexWrapper( 'points', self.objectHandle );
        end
        % - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
        %> Rotate the triangle by angle with center of rotation `(cx,cy)`
        %>
        %> **Usage:**
        %>
        %> \rst
        %> .. code-block:: matlab
        %>
        %>    ref.rotate(angle, cx, cy)
        %>
        %> \endrst
        %>
        %> **On input:**
        %>
        %> - `angle`: the angle of rotation
        %> - `cx`, `cy`: coordinates of the centre of rotation
        %>
        function rotate( self, angle, cx, cy )
          Triangle2DMexWrapper('rotate', self.objectHandle, angle, cx, cy );
        end
        % - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
        function icode = isInside( self, x, y )
          icode = Triangle2DMexWrapper( 'isInside', self.objectHandle, x, y );
        end
        % - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
        function dst = distanceMin( self, x, y )
          dst = Triangle2DMexWrapper( 'distanceMin', self.objectHandle, x, y );
        end
        % - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
        function dst = distanceMax( self, x, y )
          dst = Triangle2DMexWrapper( 'distanceMax', self.objectHandle, x, y );
        end
        % - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
        function info( self )
          Triangle2DMexWrapper( 'info', self.objectHandle );
        end
        % - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
        function yesno = overlap( self, obj )
          yesno = Triangle2DMexWrapper( 'overlap', self.objectHandle, obj.obj_handle() );
        end
        % - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
        function plot( self, color, varargin )
          [p1,p2,p3] = self.points();
          x = [p1(1),p2(1),p3(1),p1(1)];
          y = [p1(2),p2(2),p3(2),p1(2)];
          fill( x, y, color );
          plot( x, y, varargin{:} );
        end
        % - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
        function plot2( self, varargin )
          [p1,p2,p3] = self.points();
          x = [p1(1),p2(1),p3(1),p1(1)];
          y = [p1(2),p2(2),p3(2),p1(2)];
          fill( x, y, varargin{:} );
        end
      end
    end