PTB fin de extraer

1. Orden de Dibujo Demostración : Esta demostración explica alrededor del dibujo secuencial. Esto es clave para la elaboración de varios objetos a objetos superpuestos la pantalla, por ejemplo.

diagrama esquemático

 

Enlaces de referencia: http://peterscarfe.com/drawingorderdemo.html

% Abra una en la ventana de la pantalla y el color de negro 
[ventana, windowRect] = PsychImaging ( ' OpenWindow ' , ScreenNumber, negro); 

% Obtener el tamaño de la ventana en la pantalla en píxeles 
[screenXpixels, screenYpixels] = Pantalla ( ' WindowSize ' , ventana); 

% Obtener coordinar el centro de la ventana en píxeles 
[xcenter, ycenter] = RectCenter (windowRect); 

% Hacer una base de Rect de 200 por 200 píxeles. 
baseRect = [ 0  0  200  200]; 

% Centro de las plazas laterales mano izquierda en posiciones en la pantalla. 
leftBackRect = CenterRectOnPointd (baseRect, screenXpixels * 0.25 , ycenter); 
leftForwardRect = CenterRectOnPointd (baseRect, ... 
    screenXpixels * 0,25 + 100 , ycenter + 100 ); 

% Haga lo mismo de los cuadrados del lado derecho, pero no concatonate éstas
 % en una sola matriz. Esta es dispensada estaremos acercando a estos tanto en una
 sola línea de código%. Para más detalles drawRect utilizar la pantalla? 
rightBackRect =CenterRectOnPointd (baseRect, ... 
    screenXpixels * 0.75 , ycenter); 
rightForwardRect = CenterRectOnPointd (baseRect, ... 
    screenXpixels * 0,75 + 100 , ycenter + 100 ); 
rightRects = [rightBackRect; rightForwardRect] ' ; 

% Nosotros hacemos lo mismo de los colores de las rectas. Póngalos en una matriz para 
% dibujo 
rightRectColors = [ 1  0  0 ; 0  1  0 ] ' ;

% Dibujar los cuadrados del lado izquierdo en la pantalla, que hacemos  esta secuencialmente
 % con dos líneas de código, uno para cada rectángulo. 
Pantalla ( ' fillRect ' , ventana, [ 1  0  0 ], leftBackRect); 
Pantalla ( ' fillRect ' , ventana, [ 0  1  0 ], leftForwardRect); 

% Ahora dibujamos las dos plazas del lado derecho de la pantalla. Nosotros obtenemos los
 % mismos resultados como  si nos basamos en dos líneas separadas, sin embargo, de manera eficiente
 % Llamar ambos cuadradosen una sola línea de código. Tenga en cuenta, que como se ha detallado anteriormente,
 % que acheive la misma ordenación de las plazas mediante la colocación de las coordenadas del
 % cuadrada queremos llamar por primera vez en la primera matriz. 
Pantalla ( ' fillRect ' , ventana, rightRectColors, rightRects); 

% Tirón a la pantalla. Este comando se nutre básicamente todos nuestros anteriores
 comandos% en la pantalla. Vea demostraciones posteriores en la sección de animación en más
 % datos detallados. Y la forma de demos en  esta sección sobre cómo dibujar múltiples
 % rects a la vez. 
Pantalla ( ' tirón ', ventana);

 

 

 

2. Contraste Simultáneo ilusión Demostración : Esta demostración se basa en la "Orden de Dibujo Demo" dibujando un simple ilusión contraste simultáneo, esta vez con todos los objetos de dibujo en una sola línea de código.

Enlaces de referencia: http://peterscarfe.com/ptbtutorials.html

diagrama esquemático

% Abra una en la ventana de la pantalla y el color de negro 
[ventana, windowRect] = PsychImaging ( ' OpenWindow ' , ScreenNumber, gris); 

% Obtener el tamaño de la ventana en la pantalla en píxeles 
[screenXpixels, screenYpixels] = Pantalla ( ' WindowSize ' , ventana); 

% Obtener coordinar el centro de la ventana en píxeles 
[xcenter, ycenter] = RectCenter (windowRect); 

% Hacer una base de Rect de 1 / 2 pantalla dimensión Y para los blancos y negros
 cuadrados% de fondo, y1 / 6  para los cuadrados grises delanteras. Esto producirá
 % un illustion simultánea de contraste estándar , donde las dos más pequeñas grises
 % plazas, aunque la misma luminancia aparecerá diferentes tonos de gris
 % debido a ser de diferentes orígenes. La que está en el fondo blanco
 % cuadrada se verá más oscuro que el que está en el fondo cuadrado blanco. 
backDim = screenYpixels / 2 ; 
baseRectBack = [ 0  0 backDim backDim]; 

frontDim = screenYpixels / 6 ; 
baseRectFront = [ 0  0frontDim frontDim]; 

% Posición los rectángulos en la pantalla 
backLeftRect = CenterRectOnPointd (baseRectBack, ... 
    xcenter - backDim / 2 , ycenter); 
backRightRect = CenterRectOnPointd (baseRectBack, ... 
    xcenter + backDim / 2 , ycenter); 

frontLeftRect = CenterRectOnPointd (baseRectFront, ... 
    xcenter - backDim / 2 , ycenter); 
frontRightRect = CenterRectOnPointd (baseRectFront, ... 
    xcenter + backDim / 2 , ycenter); 

%Hacer una marix de todo el rect coordenadas 
allRects = [backLeftRect; backRightRect; frontLeftRect; frontRightRect] ' ; 

% Nosotros hacemos lo mismo de los colores de las rectas. Póngalos en una matriz para 
% dibujo 
allColors = [blanco blanco blanco; negro negro negro; ... 
    gris gris; gris gris] ' ; 

% Extraer todas las rectas en una línea de código 
de la pantalla ( ' fillRect ' , ventana, allColors, allRects); 

% Tirón a la pantalla. Este comando se nutre básicamente todos nuestros anteriores
% Comandos en la pantalla. Vea demostraciones posteriores en la sección de animación en más
 % datos detallados. Y la forma de demos en  esta sección sobre cómo dibujar múltiples
 % rects a la vez. 
Pantalla ( ' tirón ' , ventana);

 

 

3. Cuadrados semitransparente de demostración : muestra cómo hacer formas semitransparente con el "alfa" del canal, de manera que pueda parcialmente "ver a través de las formas" a los que están detrás. De nuevo, el orden de las operaciones es la clave.

Enlaces de referencia: http://peterscarfe.com/semitransparentsquaresdemo.html

diagrama esquemático

 

 

% Abra una en la ventana de pantalla 
[ventana, windowRect] = PsychImaging ( ' OpenWindow ' , ScreenNumber, blanco); 

% Obtener el tamaño de la pantalla en la ventana 
[screenXpixels, screenYpixels] = Pantalla ( ' WindowSize ' , ventana); 

% Conjunto de funciones de mezcla para mezcla alfa 
Pantalla ( ' BlendFunction ' , ventana, ' GL_SRC_ALPHA ' , ' GL_ONE_MINUS_SRC_ALPHA ' ); 

% Obtener coordinar el centro de la ventana 
[xcenter, ycenter] =RectCenter (windowRect); 

% Hacer una base de Rect de 400 por 400 pixeles 
baseRect = [ 0  0  400  400 ]; 

% Posiciones de pantalla X de los tres rectángulos 
squareXpos = [xcenter - 200 xcenter + 200 xcenter]; 
squareYpos = [ycenter ycenter ycenter + 200 ]; 
numSqaures = longitud (squareXpos); 

% Ajuste los colores de rojo, verde y azul, con el cuarto valor es el
 % " alfa "valor. Esto también lleva a un valor entre 0 y 1 como un
 color normal%, sin embargo ahora 0 = totalmente transparente y 1 = totalmente
 % opaco. Trillizos nuestra RGB son ahora los valores RGBA. 
allColors = [ 1  0  0  1 ; 0  1  0  1 ; 0  0  1  0,5 ] ' ; 

% Haga nuestras coordenadas del rectángulo 
allRects = nan ( 4 , 3 );
para i = 1 : numSqaures
    allRects (:, i) = CenterRectOnPointd (baseRect, ... 
        squareXpos (i), squareYpos (i)); 
final

 % Dibujar la rect a la pantalla 
de la pantalla ( ' fillRect ' , ventana, allColors, allRects); 

% Tirón a la pantalla 
de la pantalla ( ' tirón ' , ventana);

 

 

 

 

 

Nota: Los anteriores usos del código de una función de transposición de la matriz es debido fillRect

       2. La tercera parte del código de [la RGBA] El cuarto parámetro es el valor α, el valor 0 es completamente transparente, el valor 1 es completamente opaco

       significado 3.nan no es un número, NaN (4,3) la generación de una matriz de cuatro filas y tres columnas, en el que cada valor es nan

 

Supongo que te gusta

Origin www.cnblogs.com/zxpsyneuroscience/p/12589963.html
Recomendado
Clasificación