// Mot.h - Structures oscillator, parameters, and integration definition
// Poject MOT
// Kazanovich June 2005
#include "basinc.h"
#define RANDOMIZE_ON
#define TRAJSAVE_ON
#define FOMEGA "traj\\omega.tra" // file for frequencies trajectories
#define FTETA "traj\\teta.tra" // file for phase trajectories
#define FAMP "traj\\amp.tra" // file for amplitudes trajectories
#define CFOMEGA "traj\\omega_cont.tra" // file for frequencies trajectories
#define CFTETA "traj\\teta_cont.tra" // file for phase trajectories
#define CFAMP "traj\\amp_cont.tra" // file for amplitudes trajectories
const int nrows = 30; // size of the image
const int ncolumns = 60;
const int nobj = 10; // number of objects
const int noaf = 5; // the number of objects in the attention focus
enum activity
{
active, // working oscillator
dead // non-working oscillator
};
enum object_type {distractor, target};
enum movement_type {without_intersection, with_intersection};
struct object // circle on the plane
{
enum object_type type; // type of object
int cx, cy; // coordinates of the center of the object
int priority; // layer number occupied by the object, = 1, 2, ...
};
struct image
{
struct object obj[nobj]; // objects in the image
int r; // radius (half size) of an object
double intens[nrows][ncolumns]; // intensities of pixels
double saliency[nrows][ncolumns]; // saliency of the pixel
};
struct connections
{
int ncon; // the number of connections
int source[4]; // list of osccillators influencing
// the given oscillator
};
struct oscillator // Osc description
{
double omega0; // natural frequency
double omega; // current frequency
double teta; // current phase
double amp; // amplitude
enum activity state;// oscillator activity state
double noise; // noise added to oscillator phases
};
struct network
{
struct oscillator *osc;
};
struct parameters // Network parameters
{
//Parameters of CO
double camp; // initial amplitude of the CO
double comega; // initial value of natural frequency
double cteta; // initial value of phase
// Parameters of the network
long n; // n = nx*ny
// Parameters of POs
double amp; // initial amplitude of POs
// weihjts
double COtoCOw; // connection weight between COs
double COtoCOw_expos; // connection weight between COs during exposition
double COtoPOw; // connection weight from CO to POs
double POtoCOw; // connection weight from POs to the CO
double POtoPOlocw; // local connection weight
double POtoPOcolw; // connection weight between POs in the same column
};
struct integration // Integration parameters
{
double eps; // precision
double h1; // initial step
double hmin; // minimal step
double dt; // time interval for integration step
double maxt; // time segment for integration
double expos; // Initial exposition (objects are motionless)
double probe; // time for probing (objects are motionless)
enum movement_type move_type; // with/without intersection
int movement_dt;// time interval between movements
// Parameters of function g in CO's equation
double ga1; // segments of streght line y = ax + b
double ga2;
double gb2;
double ga3;
double gb3;
double gs1; // coordinates of segment ends
double gs2; // (s1,q1), (s2,q2) (s3,0)
double gs3;
double gq1;
double gq2;
// Parameters for eq. for amplitudes
double beta1;
double beta2;
double beta_CO;
double gamma;
double ksi;
double eta;
double dzeta;
double gamma1;
double dzeta1;
// Parameters for eq. for natural frequencies
double alpha;
// Parameters for oscillator state
double resthresh; // resonance threshold
int nresmin; // min normalization parameter in the eq for the CO
double noise; // gaussian noise amplitude
};
struct imageproc
{
// Parameters to controle the strength connection from POs to CO
double intenstarget; // the value of intensity for a target
double intensdistract; // the value of intensity for a distractor
double highsaliency; // saliency for a lighted object
double normalsaliency; // saliency for a normal object
double lowsaliency; // saliency for a nonlighted object during exposition
};