Source code used to draw miscellaneous examples for "curly_bracket" documentation
% Draw miscellaneous examples of "curly_bracket"s. % Bracket "A". % -- Include a color gradient across the bracket. Make the color % be a function of distance from the "Position" point on the % bracket. % -- Our approach is to draw the bracket, save the graphics % handles returned by davinci(), then use the graphics % handles to modify the two patch objects that make up % the bracket. px = 0; % Position x-coordinate. py = -0.5; % Position y-coordinate. h = davinci( 'curly_bracket', 'Position', [px py], 'Height', 3, ... 'Width', 10, ... 'Rotation', -90 ); % Loop over the two half-brackets. name = { 'half_bracket_1' 'half_bracket_2' }; for i = 1: 2 % Extract the vertex coordinates. vc = h.(name{i}).Vertices; % Determine the # of vertices. sz = size( vc ); N = sz(1); % N = # of vertices on this half-bracket's patch object. % Compute the distance of each vertex from the bracket's "Position" point. dist = sqrt( (vc(:,1)-px).^2 + (vc(:,2)-py).^2 ); % Normalize this distance, so the distances are all in the range 0 to 1. dist = dist ./ max(dist(:)); % Replicate "dist" three times so it is N x 3. dist = repmat( dist, 1, 3 ); % Set the color of all N vertices to a slightly darkened red ([.85 0 0]). color = repmat( [.85 0 0], N, 1 ); % Multiply the normalized distance by the color [.85 0 0]. color = color .* dist; % Adjust the patch object. h.(name{i}).set( 'FaceVertexCData', color, 'FaceColor', 'interp', 'EdgeColor', 'k' ) end hold on % Brackets "B" thru "F" illustrate different ratios of Height/Width. % Bracket "B". davinci( 'curly_bracket', 'Position', [5 3], 'Height', 0.5, ... 'Width', 5 ); % Bracket "C". davinci( 'curly_bracket', 'Position', [5 1], 'Height', 1, ... 'Width', 5 ); % Bracket "D". davinci( 'curly_bracket', 'Position', [5 -1], 'Height', 2, ... 'Width', 5 ); % Bracket "E". davinci( 'curly_bracket', 'Position', [5 -3], 'Height', 2, ... 'Width', 3 ); % Bracket "F". davinci( 'curly_bracket', 'Position', [5 -5], 'Height', 2, ... 'Width', 2 ); % Bracket "G". % -- Set "FaceColor" to yellow and include a rim around the bracket. davinci( 'curly_bracket', 'Position', [9 2], 'Height', 1, ... 'Width', 5, ... 'Rotation', -90, ... 'FaceColor', 'y', ... 'EdgeColor', 'k' ); % Bracket "H". % -- Set "FaceColor" to orange and include a rim around the bracket. davinci( 'curly_bracket', 'Position', [12 2], 'Height', 1, ... 'Width', 5, ... 'Rotation', 90, ... 'FaceColor', [1 .5 0], ... % Orange. 'EdgeColor', 'k' ); % Bracket "I". % -- Set the "FaceColor" to white and include a rim around the bracket. davinci( 'curly_bracket', 'Position', [9 -3.2], 'Height', 2, ... 'Width', 4.5, ... 'Rotation', -90, ... 'FaceColor', 'w', ... 'EdgeColor', 'k' ); % Bracket "J". % -- Include a transparency gradient across the bracket. Make the % transparency ("alpha") be a function of distance from the % "Position" point on the bracket. % -- Our approach is to draw the bracket, save the graphics % handles returned by davinci(), then use the graphics % handles to modify the two patch objects that make up % the bracket. px = 15; % Position x-coordinate. py = -.5; % Position y-coordinate. h = davinci( 'curly_bracket', 'Position', [px py], 'Height', 3, ... 'Width', 10, ... 'Rotation', 90 ); % Loop over the two half-brackets. for i = 1: 2 % Extract the vertex coordinates. vc = h.(name{i}).Vertices; % Compute the distance of each vertex from the bracket's "Position" point. dist = sqrt( (vc(:,1)-px).^2 + (vc(:,2)-py).^2 ); % Normalize this distance, so the distances are all in the range 0 to 1. dist = dist ./ max(dist(:)); % Adjust the patch object. h.(name{i}).set( 'FaceVertexAlphaData', dist, 'FaceAlpha', 'interp' ); end daspect( [1 1 1] ) hold off