drawTriangle: Difference between revisions

From Bohemia Interactive Community
Jump to navigation Jump to search
m (Text replacement - "<tt>([^= ]+)<\/tt>" to "{{hl|$1}}")
m (Text replacement - "[[Image:" to "[[File:")
(10 intermediate revisions by the same user not shown)
Line 6: Line 6:
|gr1= GUI Control - Map
|gr1= GUI Control - Map


|descr= [[Image:drawTriangle.jpg|right|250px]]
|descr= [[File:drawTriangle.jpg|right|250px]]
Draws one to multiple triangles on the map.
Draws one to multiple triangles on the map.
{{Feature | informative | When {{hl|fill}} param is absent or is an empty string "", the triangle is drawn with lines of the color set in {{hl|color}} param.
{{Feature | informative | When {{hl|fill}} param is absent or is an empty string "", the triangle is drawn with lines of the color set in {{hl|color}} param.
Line 15: Line 15:
|p1= map: [[Control]] - map control
|p1= map: [[Control]] - map control


|p2= vertices: [[Array]] of [[Position]]s - triangle(s) vertices in multiple of 3, see {{HashLink|#Example 1}} - if [[Position3D]] is provided for a vertex, its z value is ignored
|p2= vertices: [[Array]] of [[Position]]s - triangle(s) vertices in multiple of 3, see {{Link|#Example 1}} - if [[Position#Introduction|Position3D]] is provided for a vertex, its z value is ignored


|p3= color: [[Array]] in format [[Color|Color (RGBA)]]
|p3= color: [[Array]] in format [[Color|Color (RGBA)]]
Line 23: Line 23:
|r1= [[Nothing]]
|r1= [[Nothing]]


|x1= <code>[[findDisplay]] 12 [[displayCtrl]] 51 [[ctrlAddEventHandler]] ["Draw",  
|x1= <sqf>
findDisplay 12 displayCtrl 51 ctrlAddEventHandler ["Draw",  
{
{
_this [[select]] 0 [[drawTriangle]]
_this select 0 drawTriangle  
[
[
[
[
{{cc|triangle 1 start}}
// triangle 1 start
[[player]] [[getRelPos]] [100, 0],
player getRelPos [100, 0],
[[player]] [[getRelPos]] [100, -135],
player getRelPos [100, -135],
[[player]] [[getRelPos]] [100, 135]
player getRelPos [100, 135]
{{cc|triangle 1 end}}
// triangle 1 end
],
],
[1,0,0,0.5],
[1,0,0,0.5],
"#(rgb,1,1,1)color(1,1,1,1)"
"#(rgb,1,1,1)color(1,1,1,1)"
];
];
}];</code>
}];
</sqf>


|seealso= [[drawArrow]], [[drawEllipse]], [[drawIcon]], [[drawLine]], [[drawPolygon]], [[drawRectangle]]
|seealso= [[drawArrow]] [[drawEllipse]] [[drawIcon]] [[drawLine]] [[drawPolygon]] [[drawRectangle]]
}}
}}


Line 45: Line 47:
|user= Killzone_Kid
|user= Killzone_Kid
|timestamp= 20170716153600
|timestamp= 20170716153600
|text= Example [https://www.youtube.com/watch?v=gSiuLdUeq0M YouTube video] <code>_ctrl = findDisplay 12 displayCtrl 51;
|text= Example [https://www.youtube.com/watch?v{{=}}gSiuLdUeq0M YouTube video]
<spoiler>
<sqf>
ctrl = findDisplay 12 displayCtrl 51;
_ctrl setVariable ["data", [1, "#(rgb,1,1,1)color(1,1,1,1)", 1000, position player,  
_ctrl setVariable ["data", [1, "#(rgb,1,1,1)color(1,1,1,1)", 1000, position player,  
{
{
Line 75: Line 80:
_alpha = linearConversion [_dist, 0, _dist - _size, 1, 0];
_alpha = linearConversion [_dist, 0, _dist - _size, 1, 0];
_map drawEllipse [_pos, _size * 2, _size * 2, 0, [0,0,1,_alpha], _fill];
_map drawEllipse [_pos, _size * 2, _size * 2, 0, [0,0,1,_alpha], _fill];
_map drawTriangle [<nowiki/>[_pos getPos [_size, -_size], _size, _size] call _fn, [1,0,0,_alpha], _fill];
_map drawTriangle [[_pos getPos [_size, -_size], _size, _size] call _fn, [1,0,0,_alpha], _fill];
_map drawTriangle [<nowiki/>[_pos getPos [_size, -_size + 120], _size, _size] call _fn, [0,1,0,_alpha], _fill];
_map drawTriangle [[_pos getPos [_size, -_size + 120], _size, _size] call _fn, [0,1,0,_alpha], _fill];
_map drawTriangle [<nowiki/>[_pos getPos [_size, -_size - 120], _size, _size] call _fn, [1,1,0,_alpha], _fill];
_map drawTriangle [[_pos getPos [_size, -_size - 120], _size, _size] call _fn, [1,1,0,_alpha], _fill];
}];
}];


openMap true;</code>
openMap true;
</sqf>
</spoiler>
}}
}}


Line 86: Line 93:
|user= Killzone_Kid
|user= Killzone_Kid
|timestamp= 20181113210500
|timestamp= 20181113210500
|text= Drawing holes ([https://www.youtube.com/watch?v=XZRtXsBFLAg video]): <code>t = time;
|text= Drawing holes ({{Link|https://www.youtube.com/watch?v{{=}}XZRtXsBFLAg|video}}):
<spoiler>
<sqf>
t = time;
i = 0;
i = 0;
tex = "#(rgb,1,1,1)color(1,1,1,0.5)";
tex = "#(rgb,1,1,1)color(1,1,1,0.5)";
Line 138: Line 148:
openMap true;
openMap true;
mapAnimAdd [0, 0.15, [500,500,0]];
mapAnimAdd [0, 0.15, [500,500,0]];
mapAnimCommit;</code>
mapAnimCommit;
</sqf>
</spoiler>
}}
}}

Revision as of 23:09, 20 November 2023

Hover & click on the images for description

Description

Description:
drawTriangle.jpg

Draws one to multiple triangles on the map.

When fill param is absent or is an empty string "", the triangle is drawn with lines of the color set in color param. In order to draw color-filled triangle of the same color as color param, set fill param to opaque white procedural texture"#(rgb,1,1,1)color(1,1,1,1)".
Groups:
GUI Control - Map

Syntax

Syntax:
map drawTriangle [vertices, color, fill]
Parameters:
map: Control - map control
vertices: Array of Positions - triangle(s) vertices in multiple of 3, see Example 1 - if Position3D is provided for a vertex, its z value is ignored
color: Array in format Color (RGBA)
fill: String - (Optional, default "") fill texture file or Procedural Textures. See note in description for more info.
Return Value:
Nothing

Examples

Example 1:
findDisplay 12 displayCtrl 51 ctrlAddEventHandler ["Draw", { _this select 0 drawTriangle [ [ // triangle 1 start player getRelPos [100, 0], player getRelPos [100, -135], player getRelPos [100, 135] // triangle 1 end ], [1,0,0,0.5], "#(rgb,1,1,1)color(1,1,1,1)" ]; }];

Additional Information

See also:
drawArrow drawEllipse drawIcon drawLine drawPolygon drawRectangle

Notes

Report bugs on the Feedback Tracker and/or discuss them on the Arma Discord or on the Forums.
Only post proven facts here! Add Note
Killzone_Kid - c
Posted on Jul 16, 2017 - 15:36 (UTC)
Example YouTube video

ctrl = findDisplay 12 displayCtrl 51; _ctrl setVariable ["data", [1, "#(rgb,1,1,1)color(1,1,1,1)", 1000, position player, { params ["_p", "_r", "_a", "_sr", "_ba"]; _sr = _r * 0.382; _pb = _p getPos [_sr, _a + 180]; [ _p getPos [_r, _a], _p getPos [_sr, _a + 36], _p getPos [_sr, _a - 36], _pb, _p getPos [_r, _a - 72], _p getPos [_r, _a + 72], _p getPos [_r, _a - 144], _p getPos [_sr, _a - 108], _pb, _p getPos [_r, _a + 144], _p getPos [_sr, _a + 108], _pb ] }]]; _ctrl ctrlRemoveAllEventHandlers "Draw"; _ctrl ctrlAddEventHandler ["Draw", { _map = _this select 0; _data = _map getVariable "data"; _data params ["_i", "_fill", "_dist", "_pos", "_fn"]; _data set [0, _i + 1]; _size = _i % _dist; if (_size == 0) then { _data set [0, 1]; _data set [1, ["#(rgb,1,1,1)color(1,1,1,1)", ""] select (random 1 < 0.3)]; _data set [2, 250 + round random 750]; }; _alpha = linearConversion [_dist, 0, _dist - _size, 1, 0]; _map drawEllipse [_pos, _size * 2, _size * 2, 0, [0,0,1,_alpha], _fill]; _map drawTriangle [[_pos getPos [_size, -_size], _size, _size] call _fn, [1,0,0,_alpha], _fill]; _map drawTriangle [[_pos getPos [_size, -_size + 120], _size, _size] call _fn, [0,1,0,_alpha], _fill]; _map drawTriangle [[_pos getPos [_size, -_size - 120], _size, _size] call _fn, [1,1,0,_alpha], _fill]; }]; openMap true;

↑ Back to spoiler's top
Killzone_Kid - c
Posted on Nov 13, 2018 - 21:05 (UTC)
Drawing holes (video):

t = time; i = 0; tex = "#(rgb,1,1,1)color(1,1,1,0.5)"; col = [1,1,1,1]; findDisplay 12 displayCtrl 51 ctrlAddEventHandler ["Draw", { if (time > t) then { col = [random 1, random 1, random 1, 1]; tex = [ "\A3\ui_f\data\map\markerbrushes\vertical_ca.paa", "\A3\ui_f\data\map\markerbrushes\bdiagonal_ca.paa", "\A3\ui_f\data\map\markerbrushes\cross_ca.paa", "\A3\ui_f\data\map\markerbrushes\diaggrid_ca.paa", "\A3\ui_f\data\map\markerbrushes\fdiagonal_ca.paa", "\A3\ui_f\data\map\markerbrushes\grid_ca.paa", "\A3\ui_f\data\map\markerbrushes\horizontal_ca.paa", "#(rgb,1,1,1)color(1,1,1,0.5)" ] select (i % 8); t = time + 0.5; i = i + 1; }; _this select 0 drawTriangle [ [ [0,0],[100,500],[400,400], [0,0],[400,400],[500,100], [0,0],[500,100],[1000,0], [1000,0],[500,100],[600,400], [1000,0],[600,400],[900,500], [1000,0],[900,500],[1000,1000], [1000,1000],[900,500],[600,600], [1000,1000],[600,600],[500,900], [1000,1000],[500,900],[0,1000], [0,1000],[500,900],[400,600], [0,1000],[400,600],[100,500], [0,1000],[100,500],[0,0] ], col, tex ]; _this select 0 drawPolygon [[[0,0,0],[0,1000,0],[1000,1000,0],[1000,0,0]], col]; _this select 0 drawPolygon [[[100,500,0],[400,600,0],[500,900,0],[600,600,0],[900,500,0],[600,400,0],[500,100,0],[400,400,0]], col]; }]; openMap true; mapAnimAdd [0, 0.15, [500,500,0]]; mapAnimCommit;

↑ Back to spoiler's top