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