Viewing distance

parent dfb8a8ff
......@@ -127,6 +127,7 @@ var wink;
var space_press;
var space_release;
var rectangleClock;
var text_angle;
var text;
var polygon;
var key_resp;
......@@ -280,16 +281,28 @@ async function experimentInit() {
// Initialize components for Routine "rectangle"
rectangleClock = new util.Clock();
text_angle = new visual.TextStim({
win: psychoJS.window,
name: 'text_angle',
text: '',
font: 'Arial',
units: 'norm',
pos: [0, 0.8], height: 0.075, wrapWidth: 1.5, ori: 0,
languageStyle: 'LTR',
color: new util.Color('white'), opacity: 1,
depth: -1.0
});
text = new visual.TextStim({
win: psychoJS.window,
name: 'text',
text: "This shape should be a 5 cm square.\nComponent size (5*x_scale, 5*y_scale) set every repeat.\nThe circle should have a visual angle of 10 degrees using\nsize (10 * visual_angle * x_scale, 10 * visual_angle * y_scale)\nPress space to continue'",
text: "This shape should be a 5 cm square.\nComponent size (5*x_scale, 5*y_scale) set every repeat.\n\nPress space to continue'",
font: 'Arial',
units: 'norm',
pos: [0, (- 0.8)], height: 0.075, wrapWidth: 1.5, ori: 0,
languageStyle: 'LTR',
color: new util.Color('white'), opacity: 1,
depth: -1.0
depth: -2.0
});
polygon = new visual.Rect ({
......@@ -301,7 +314,7 @@ async function experimentInit() {
colorSpace: 'rgb',
lineColor: new util.Color([1, 1, 1]),
fillColor: new util.Color([1, 1, 1]),
opacity: 0.5, depth: -2, interpolate: true,
opacity: 0.5, depth: -3, interpolate: true,
});
key_resp = new core.Keyboard({psychoJS: psychoJS, clock: new util.Clock(), waitForStart: true});
......@@ -315,7 +328,7 @@ async function experimentInit() {
colorSpace: 'rgb',
lineColor: new util.Color('red'),
fillColor: new util.Color('red'),
opacity: undefined, depth: -4, interpolate: true,
opacity: undefined, depth: -5, interpolate: true,
});
spot_2 = new visual.Polygon({
......@@ -327,7 +340,7 @@ async function experimentInit() {
colorSpace: 'rgb',
lineColor: new util.Color('red'),
fillColor: new util.Color('red'),
opacity: undefined, depth: -5, interpolate: true,
opacity: undefined, depth: -6, interpolate: true,
});
circle_10 = new visual.Polygon({
......@@ -339,7 +352,7 @@ async function experimentInit() {
colorSpace: 'rgb',
lineColor: new util.Color('white'),
fillColor: new util.Color('white'),
opacity: 1.0, depth: -6, interpolate: true,
opacity: 1.0, depth: -7, interpolate: true,
});
// Initialize components for Routine "end"
......@@ -650,7 +663,7 @@ function blind_spotRoutineBegin(snapshot) {
head.setSize([(3 * x_scale), (5 * y_scale)]);
fixation_cross.setPos([(((- 5) * x_scale) * sides[eyes_loop.thisN]), 0]);
fixation_cross.setSize([x_scale, y_scale]);
wink.setPos([(((- 5) * x_scale) * sides[eyes_loop.thisN]), (y_scale * 1.5)]);
wink.setPos([(((- 5) * x_scale) * sides[eyes_loop.thisN]), (y_scale * 1.1)]);
wink.setSize([((2.17 * x_scale) * sides[eyes_loop.thisN]), (1.58 * y_scale)]);
space_press.keys = undefined;
space_press.rt = undefined;
......@@ -910,6 +923,7 @@ function blind_spotRoutineEnd(snapshot) {
var visual_angle;
var validCount;
var viewing_distance;
var angle_text;
var _key_resp_allKeys;
var rectangleComponents;
......@@ -939,8 +953,10 @@ function rectangleRoutineBegin(snapshot) {
}
visual_angle = (((visual_angle / validCount) / 15) / x_scale);
console.log("visual_angle cm", visual_angle);
angle_text = (util.round((visual_angle * 1000)) / 1000).toString();
viewing_distance = ((Math.sin(((Math.PI * 15) / 180)) * visual_angle) * 15);
angle_text = (("You are viewing from a distance of about " + (util.round((viewing_distance * 10)) / 10).toString()) + " cm.");
text_angle.setText((angle_text + "\n\nThe circle should have a visual angle of 10 degrees using size (10 * visual_angle * x_scale, 10 * visual_angle * y_scale)"));
polygon.setSize([(5 * x_scale), (5 * y_scale)]);
key_resp.keys = undefined;
key_resp.rt = undefined;
......@@ -952,6 +968,7 @@ function rectangleRoutineBegin(snapshot) {
circle_10.setSize([((x_scale * visual_angle) * 10), ((y_scale * visual_angle) * 10)]);
// keep track of which components have finished
rectangleComponents = [];
rectangleComponents.push(text_angle);
rectangleComponents.push(text);
rectangleComponents.push(polygon);
rectangleComponents.push(key_resp);
......@@ -979,6 +996,16 @@ function rectangleRoutineEachFrame() {
fixation_cross.setSize([((5 * x_scale) * (0.75 + (Math.sin((t * 4)) * 0.25))), ((5 * y_scale) * (0.75 + (Math.sin((t * 6)) * 0.25)))]);
// *text_angle* updates
if (t >= 0.0 && text_angle.status === PsychoJS.Status.NOT_STARTED) {
// keep track of start time/frame for later
text_angle.tStart = t; // (not accounting for frame time here)
text_angle.frameNStart = frameN; // exact frame index
text_angle.setAutoDraw(true);
}
// *text* updates
if (t >= 0.0 && text.status === PsychoJS.Status.NOT_STARTED) {
// keep track of start time/frame for later
......
......@@ -135,6 +135,7 @@ var wink;
var space_press;
var space_release;
var rectangleClock;
var text_angle;
var text;
var polygon;
var key_resp;
......@@ -288,16 +289,28 @@ async function experimentInit() {
// Initialize components for Routine "rectangle"
rectangleClock = new util.Clock();
text_angle = new visual.TextStim({
win: psychoJS.window,
name: 'text_angle',
text: '',
font: 'Arial',
units: 'norm',
pos: [0, 0.8], height: 0.075, wrapWidth: 1.5, ori: 0,
languageStyle: 'LTR',
color: new util.Color('white'), opacity: 1,
depth: -1.0
});
text = new visual.TextStim({
win: psychoJS.window,
name: 'text',
text: "This shape should be a 5 cm square.\nComponent size (5*x_scale, 5*y_scale) set every repeat.\nThe circle should have a visual angle of 10 degrees using\nsize (10 * visual_angle * x_scale, 10 * visual_angle * y_scale)\nPress space to continue'",
text: "This shape should be a 5 cm square.\nComponent size (5*x_scale, 5*y_scale) set every repeat.\n\nPress space to continue'",
font: 'Arial',
units: 'norm',
pos: [0, (- 0.8)], height: 0.075, wrapWidth: 1.5, ori: 0,
languageStyle: 'LTR',
color: new util.Color('white'), opacity: 1,
depth: -1.0
depth: -2.0
});
polygon = new visual.Rect ({
......@@ -309,7 +322,7 @@ async function experimentInit() {
colorSpace: 'rgb',
lineColor: new util.Color([1, 1, 1]),
fillColor: new util.Color([1, 1, 1]),
opacity: 0.5, depth: -2, interpolate: true,
opacity: 0.5, depth: -3, interpolate: true,
});
key_resp = new core.Keyboard({psychoJS: psychoJS, clock: new util.Clock(), waitForStart: true});
......@@ -323,7 +336,7 @@ async function experimentInit() {
colorSpace: 'rgb',
lineColor: new util.Color('red'),
fillColor: new util.Color('red'),
opacity: undefined, depth: -4, interpolate: true,
opacity: undefined, depth: -5, interpolate: true,
});
spot_2 = new visual.Polygon({
......@@ -335,7 +348,7 @@ async function experimentInit() {
colorSpace: 'rgb',
lineColor: new util.Color('red'),
fillColor: new util.Color('red'),
opacity: undefined, depth: -5, interpolate: true,
opacity: undefined, depth: -6, interpolate: true,
});
circle_10 = new visual.Polygon({
......@@ -347,7 +360,7 @@ async function experimentInit() {
colorSpace: 'rgb',
lineColor: new util.Color('white'),
fillColor: new util.Color('white'),
opacity: 1.0, depth: -6, interpolate: true,
opacity: 1.0, depth: -7, interpolate: true,
});
// Initialize components for Routine "end"
......@@ -656,7 +669,7 @@ function blind_spotRoutineBegin(snapshot) {
head.setSize([(3 * x_scale), (5 * y_scale)]);
fixation_cross.setPos([(((- 5) * x_scale) * sides[eyes_loop.thisN]), 0]);
fixation_cross.setSize([x_scale, y_scale]);
wink.setPos([(((- 5) * x_scale) * sides[eyes_loop.thisN]), (y_scale * 1.5)]);
wink.setPos([(((- 5) * x_scale) * sides[eyes_loop.thisN]), (y_scale * 1.1)]);
wink.setSize([((2.17 * x_scale) * sides[eyes_loop.thisN]), (1.58 * y_scale)]);
space_press.keys = undefined;
space_press.rt = undefined;
......@@ -915,6 +928,7 @@ function blind_spotRoutineEnd(snapshot) {
var visual_angle;
var validCount;
var viewing_distance;
var angle_text;
var _key_resp_allKeys;
var rectangleComponents;
......@@ -944,8 +958,10 @@ function rectangleRoutineBegin(snapshot) {
}
visual_angle = (((visual_angle / validCount) / 15) / x_scale);
console.log("visual_angle cm", visual_angle);
angle_text = (util.round((visual_angle * 1000)) / 1000).toString();
viewing_distance = ((Math.sin(((Math.PI * 15) / 180)) * visual_angle) * 15);
angle_text = (("You are viewing from a distance of about " + (util.round((viewing_distance * 10)) / 10).toString()) + " cm.");
text_angle.setText((angle_text + "\n\nThe circle should have a visual angle of 10 degrees using size (10 * visual_angle * x_scale, 10 * visual_angle * y_scale)"));
polygon.setSize([(5 * x_scale), (5 * y_scale)]);
key_resp.keys = undefined;
key_resp.rt = undefined;
......@@ -957,6 +973,7 @@ function rectangleRoutineBegin(snapshot) {
circle_10.setSize([((x_scale * visual_angle) * 10), ((y_scale * visual_angle) * 10)]);
// keep track of which components have finished
rectangleComponents = [];
rectangleComponents.push(text_angle);
rectangleComponents.push(text);
rectangleComponents.push(polygon);
rectangleComponents.push(key_resp);
......@@ -983,6 +1000,16 @@ function rectangleRoutineEachFrame() {
fixation_cross.setSize([((5 * x_scale) * (0.75 + (Math.sin((t * 4)) * 0.25))), ((5 * y_scale) * (0.75 + (Math.sin((t * 6)) * 0.25)))]);
// *text_angle* updates
if (t >= 0.0 && text_angle.status === PsychoJS.Status.NOT_STARTED) {
// keep track of start time/frame for later
text_angle.tStart = t; // (not accounting for frame time here)
text_angle.frameNStart = frameN; // exact frame index
text_angle.setAutoDraw(true);
}
// *text* updates
if (t >= 0.0 && text.status === PsychoJS.Status.NOT_STARTED) {
// keep track of start time/frame for later
......
......@@ -186,8 +186,8 @@
<Param val="" valType="extendedCode" updates="constant" name="Before JS Experiment"/>
<Param val="" valType="extendedCode" updates="constant" name="Begin Experiment"/>
<Param val="" valType="extendedCode" updates="constant" name="Begin JS Experiment"/>
<Param val="fixation_cross.setPos([0, 0]);&amp;#10;fixation_cross.setColor(blue);&amp;#10;fixation_cross.setAutoDraw(true);&amp;#10;circle_10.setFillColor(transparent);&amp;#10;visual_angle = 0;&amp;#10;validCount = 0;&amp;#10;for (var Idx, _pj_c = 0, _pj_a = util.range(4), _pj_b = _pj_a.length; (_pj_c &lt; _pj_b); _pj_c += 1) {&amp;#10; Idx = _pj_a[_pj_c];&amp;#10; if ((Math.abs(blind_spots[Idx]) &gt; 0)) {&amp;#10; visual_angle += Math.abs(blind_spots[Idx]);&amp;#10; validCount += 1;&amp;#10; }&amp;#10;}&amp;#10;visual_angle = (((visual_angle / validCount) / 15) / x_scale);&amp;#10;console.log(&quot;visual_angle cm&quot;, visual_angle);&amp;#10;angle_text = (util.round((visual_angle * 1000)) / 1000).toString();&amp;#10;" valType="extendedCode" updates="constant" name="Begin JS Routine"/>
<Param val="fixation_cross.setPos([0,0])&amp;#10;fixation_cross.setColor(blue)&amp;#10;fixation_cross.setAutoDraw(True)&amp;#10;circle_10.setFillColor(transparent)&amp;#10;visual_angle = 0&amp;#10;validCount = 0&amp;#10;for Idx in range (4):&amp;#10; if abs(blind_spots[Idx]) &gt; 0:&amp;#10; visual_angle += abs(blind_spots[Idx])&amp;#10; validCount += 1&amp;#10;visual_angle = visual_angle / validCount / 15 / x_scale&amp;#10;print('visual_angle cm',visual_angle)&amp;#10;angle_text = str(round(visual_angle * 1000) / 1000)" valType="extendedCode" updates="constant" name="Begin Routine"/>
<Param val="fixation_cross.setPos([0, 0]);&amp;#10;fixation_cross.setColor(blue);&amp;#10;fixation_cross.setAutoDraw(true);&amp;#10;circle_10.setFillColor(transparent);&amp;#10;visual_angle = 0;&amp;#10;validCount = 0;&amp;#10;for (var Idx, _pj_c = 0, _pj_a = util.range(4), _pj_b = _pj_a.length; (_pj_c &lt; _pj_b); _pj_c += 1) {&amp;#10; Idx = _pj_a[_pj_c];&amp;#10; if ((Math.abs(blind_spots[Idx]) &gt; 0)) {&amp;#10; visual_angle += Math.abs(blind_spots[Idx]);&amp;#10; validCount += 1;&amp;#10; }&amp;#10;}&amp;#10;visual_angle = (((visual_angle / validCount) / 15) / x_scale);&amp;#10;console.log(&quot;visual_angle cm&quot;, visual_angle);&amp;#10;viewing_distance = ((Math.sin(((Math.PI * 15) / 180)) * visual_angle) * 15);&amp;#10;angle_text = ((&quot;You are viewing from a distance of about &quot; + (util.round((viewing_distance * 10)) / 10).toString()) + &quot; cm.&quot;);&amp;#10;" valType="extendedCode" updates="constant" name="Begin JS Routine"/>
<Param val="fixation_cross.setPos([0,0])&amp;#10;fixation_cross.setColor(blue)&amp;#10;fixation_cross.setAutoDraw(True)&amp;#10;circle_10.setFillColor(transparent)&amp;#10;visual_angle = 0&amp;#10;validCount = 0&amp;#10;for Idx in range (4):&amp;#10; if abs(blind_spots[Idx]) &gt; 0:&amp;#10; visual_angle += abs(blind_spots[Idx])&amp;#10; validCount += 1&amp;#10;visual_angle = visual_angle / validCount / 15 / x_scale&amp;#10;print('visual_angle cm',visual_angle)&amp;#10;viewing_distance = sin(pi*15/180)*visual_angle*15&amp;#10;angle_text = &quot;You are viewing from a distance of about &quot; + str(round(viewing_distance * 10) / 10) + &quot; cm.&quot;" valType="extendedCode" updates="constant" name="Begin Routine"/>
<Param val="Auto-&gt;JS" valType="str" updates="None" name="Code Type"/>
<Param val="fixation_cross.setSize([5*x_scale*(.75+sin(t*4)*.25),5*y_scale*(.75+sin(t*6)*.25)])&amp;#10;" valType="extendedCode" updates="constant" name="Each Frame"/>
<Param val="fixation_cross.setSize([((5 * x_scale) * (0.75 + (Math.sin((t * 4)) * 0.25))), ((5 * y_scale) * (0.75 + (Math.sin((t * 6)) * 0.25)))]);&amp;#10;" valType="extendedCode" updates="constant" name="Each JS Frame"/>
......@@ -198,6 +198,31 @@
<Param val="False" valType="bool" updates="None" name="disabled"/>
<Param val="code" valType="code" updates="None" name="name"/>
</CodeComponent>
<TextComponent name="text_angle" plugin="None">
<Param val="white" valType="str" updates="constant" name="color"/>
<Param val="rgb" valType="str" updates="constant" name="colorSpace"/>
<Param val="1" valType="num" updates="constant" name="contrast"/>
<Param val="False" valType="bool" updates="None" name="disabled"/>
<Param val="" valType="code" updates="None" name="durationEstim"/>
<Param val="" valType="str" updates="constant" name="flip"/>
<Param val="Arial" valType="str" updates="constant" name="font"/>
<Param val="LTR" valType="str" updates="None" name="languageStyle"/>
<Param val="0.075" valType="code" updates="constant" name="letterHeight"/>
<Param val="text_angle" valType="code" updates="None" name="name"/>
<Param val="1" valType="code" updates="constant" name="opacity"/>
<Param val="0" valType="code" updates="constant" name="ori"/>
<Param val="(0, .8)" valType="list" updates="constant" name="pos"/>
<Param val="False" valType="bool" updates="None" name="saveStartStop"/>
<Param val="" valType="code" updates="None" name="startEstim"/>
<Param val="time (s)" valType="str" updates="None" name="startType"/>
<Param val="0.0" valType="code" updates="None" name="startVal"/>
<Param val="duration (s)" valType="str" updates="None" name="stopType"/>
<Param val="" valType="code" updates="constant" name="stopVal"/>
<Param val="True" valType="bool" updates="None" name="syncScreenRefresh"/>
<Param val="$angle_text + &quot;\n\nThe circle should have a visual angle of 10 degrees using size (10 * visual_angle * x_scale, 10 * visual_angle * y_scale)&quot;" valType="str" updates="set every repeat" name="text"/>
<Param val="norm" valType="str" updates="None" name="units"/>
<Param val="1.5" valType="code" updates="constant" name="wrapWidth"/>
</TextComponent>
<TextComponent name="text" plugin="None">
<Param val="white" valType="str" updates="constant" name="color"/>
<Param val="rgb" valType="str" updates="constant" name="colorSpace"/>
......@@ -219,7 +244,7 @@
<Param val="duration (s)" valType="str" updates="None" name="stopType"/>
<Param val="" valType="code" updates="constant" name="stopVal"/>
<Param val="True" valType="bool" updates="None" name="syncScreenRefresh"/>
<Param val="This shape should be a 5 cm square.&amp;#10;Component size (5*x_scale, 5*y_scale) set every repeat.&amp;#10;The circle should have a visual angle of 10 degrees using&amp;#10;size (10 * visual_angle * x_scale, 10 * visual_angle * y_scale)&amp;#10;Press space to continue'" valType="str" updates="constant" name="text"/>
<Param val="This shape should be a 5 cm square.&amp;#10;Component size (5*x_scale, 5*y_scale) set every repeat.&amp;#10;&amp;#10;Press space to continue'" valType="str" updates="constant" name="text"/>
<Param val="norm" valType="str" updates="None" name="units"/>
<Param val="1.5" valType="code" updates="constant" name="wrapWidth"/>
</TextComponent>
......@@ -563,7 +588,7 @@
<Param val="wink" valType="code" updates="None" name="name"/>
<Param val="" valType="num" updates="constant" name="opacity"/>
<Param val="0" valType="num" updates="constant" name="ori"/>
<Param val="(-5*x_scale*sides[eyes_loop.thisN], y_scale*1.5)" valType="list" updates="set every repeat" name="pos"/>
<Param val="(-5*x_scale*sides[eyes_loop.thisN], y_scale*1.1)" valType="list" updates="set every repeat" name="pos"/>
<Param val="True" valType="bool" updates="None" name="saveStartStop"/>
<Param val="(2.17*x_scale*sides[eyes_loop.thisN],1.58*y_scale)" valType="list" updates="set every repeat" name="size"/>
<Param val="" valType="code" updates="None" name="startEstim"/>
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment