Example Code: Random Area Distribution: Difference between revisions
Jump to navigation
Jump to search
Lou Montana (talk | contribs) m (Text replacement - "\{\{ArgTitle *\| *([^\|]+) *\| *([1-6]) *\|" to "{{ArgTitle|$2|$1|") |
Lou Montana (talk | contribs) m (Some wiki formatting) |
||
Line 10: | Line 10: | ||
}} | }} | ||
<sqf> | |||
private _center = getPosATL player; // disc center definition | |||
private _radius = 50; // radius definition | |||
// random radius | |||
private _angle = random 360; // angle definition (0..360) | |||
private _distance = random _radius; // distance from the center definition (0..radius) | |||
private _position = _center getPos [_distance, _angle]; | |||
// random position | |||
private _angle = random 360; // angle definition (0..360) | |||
private _randomSquareRoot = sqrt random 1; // random square-root to obtain a non-linear 0..1 value | |||
private _distance = _radius * _randomSquareRoot; // distance from the center definition (0..radius) | |||
private _position = _center getPos [_distance, _angle]; | |||
// Gaussian normal distribution | |||
private _angleHalf = random 180; | |||
private _randomGauss = random [-1, 0, 1]; | |||
private _distance = _radius * _randomGauss; | |||
private _position = _center getPos [_distance, _angleHalf]; | |||
</sqf> | |||
Line 36: | Line 38: | ||
}} | }} | ||
<sqf> | |||
private ["_center", "_radius", "_angle", "_distance", "_offset", "_position"]; // private definitions | |||
_center = getPosATL player; // disc center definition | |||
private _radius = 50; // radius definition | |||
// random radius | |||
_angle = random 360; | |||
_distance = random _radius; | |||
_offset = [sin _angle * _distance, cos _angle * _distance, 0]; | |||
_position = [_center, _offset] call BIS_fnc_vectorAdd; | |||
// random position | |||
_angle = random 360; | |||
_distance = _radius * sqrt random 1; | |||
_offset = [sin _angle * _distance, cos _angle * _distance, 0]; | |||
_position = [_center, _offset] call BIS_fnc_vectorAdd; | |||
</sqf> | |||
Line 58: | Line 62: | ||
}} | }} | ||
<sqf> | |||
private ["_center", "_radius", "_angle", "_distance", "_offset", "_position"]; // private definitions | |||
_center = getPos player; // disc center definition - getPosASL can be used in Armed Assault | |||
private _radius = 50; // radius definition | |||
// random radius | |||
_angle = random 360; | |||
_distance = random _radius; | |||
_offset = [sin _angle * _distance, cos _angle * _distance]; | |||
_position = [(_center select 0) + (_offset select 0), (_center select 1) + (_offset select 1)]; | |||
// random position | |||
_angle = random 360; | |||
_distance = _radius * sqrt random 1; | |||
_offset = [sin _angle * _distance, cos _angle * _distance, 0]; | |||
_position = [(_center select 0) + (_offset select 0), (_center select 1) + (_offset select 1)]; | |||
</sqf> | |||
Revision as of 18:45, 2 April 2022
Originally from Commy2's forum post, also fully translated on Dedmen's sqf.ovh post.
Arma 3
private _center = getPosATL player; // disc center definition
private _radius = 50; // radius definition
// random radius
private _angle = random 360; // angle definition (0..360)
private _distance = random _radius; // distance from the center definition (0..radius)
private _position = _center getPos [_distance, _angle];
// random position
private _angle = random 360; // angle definition (0..360)
private _randomSquareRoot = sqrt random 1; // random square-root to obtain a non-linear 0..1 value
private _distance = _radius * _randomSquareRoot; // distance from the center definition (0..radius)
private _position = _center getPos [_distance, _angle];
// Gaussian normal distribution
private _angleHalf = random 180;
private _randomGauss = random [-1, 0, 1];
private _distance = _radius * _randomGauss;
private _position = _center getPos [_distance, _angleHalf];
Arma 2
private ["_center", "_radius", "_angle", "_distance", "_offset", "_position"]; // private definitions
_center = getPosATL player; // disc center definition
private _radius = 50; // radius definition
// random radius
_angle = random 360;
_distance = random _radius;
_offset = [sin _angle * _distance, cos _angle * _distance, 0];
_position = [_center, _offset] call BIS_fnc_vectorAdd;
// random position
_angle = random 360;
_distance = _radius * sqrt random 1;
_offset = [sin _angle * _distance, cos _angle * _distance, 0];
_position = [_center, _offset] call BIS_fnc_vectorAdd;
private ["_center", "_radius", "_angle", "_distance", "_offset", "_position"]; // private definitions
_center = getPos player; // disc center definition - getPosASL can be used in Armed Assault
private _radius = 50; // radius definition
// random radius
_angle = random 360;
_distance = random _radius;
_offset = [sin _angle * _distance, cos _angle * _distance];
_position = [(_center select 0) + (_offset select 0), (_center select 1) + (_offset select 1)];
// random position
_angle = random 360;
_distance = _radius * sqrt random 1;
_offset = [sin _angle * _distance, cos _angle * _distance, 0];
_position = [(_center select 0) + (_offset select 0), (_center select 1) + (_offset select 1)];
Operation Flashpoint
private ["_center", "_radius", "_angle", "_distance", "_offset", "_position"] // private definitions _center = getPos player // disc center definition _radius = 50 // radius definition // random radius _angle = random 360 _distance = random _radius _offset = [sin _angle * _distance, cos _angle * _distance] _position = [(_center select 0) + (_offset select 0), (_center select 1) + (_offset select 1)] // random position _angle = random 360 _distance = _radius * sqrt random 1 _offset = [sin _angle * _distance, cos _angle * _distance, 0] _position = [(_center select 0) + (_offset select 0), (_center select 1) + (_offset select 1)]