How Does It Work

In the visualisation activities of this kit four players work together to construct a 3D arrangement of blocks where each player only has information about one view of the arrangement. This is in essence a co-operative activity, but a competitive edge can easily be added by setting up the activity as a timed task, or having two or more groups of children compete to see who can complete the activity first. As the level of complexity increases, so does the co-operation needed within groups. 

Your kit will contain enough materials for one group of four players to work together at a time. In the classroom context, by purchasing more kits, you can involve more groups of children at the same time. 

How Does It Work

Set up and look sharp!

The visualisation grid is placed in the middle of the table. Four players (A, B, C and D) sit around the table, each facing the grid from their point of view (perspective).

One set of cards is selected and shared out. Each player receives the card that corresponds to their view (A, B, C or D). Players should only look at their own cards.

By selecting the blocks they need, the players work together to place the blocks on the grid to make the arrangement on the cards. The players have completed the task when each player is satisfied that the arrangement looks correct from their point of view (perspective).

Set up and look sharp!

GeoGenius History

GeoGenius' history began in 2004 with teacher and educationalist Aarnout Brombacher. Aarnout has accumulated extensive expertise on how geometry stimulates a child's development.

Aarnout developed the GeoGenius Visualisation Kit because he believes that visualisation processes are very important in the development of geometrical understanding. A GeoGenuis Visualisation Kit is not only educational but also fun to play with.

The kit gives children the chance to work together to construct a 3D arrangement of blocks, from a 2D viewing card, where each player only has information about one view of the arrangement.

Click here to visit Brombacher & Associates

Spatial Understanding Helps:

  • The development of mathematics
  • An appreciation of asthetics
  • An understanding of science
  • Reasoning in a deductive manner
Whoops! There was an error.
ErrorException (E_WARNING)
file_put_contents(): Only 0 of 220 bytes written, possibly out of free disk space ErrorException thrown with message "file_put_contents(): Only 0 of 220 bytes written, possibly out of free disk space" Stacktrace: #7 ErrorException in /home/livegeogeniusco/vendor/laravel/framework/src/Illuminate/Filesystem/Filesystem.php:122 #6 file_put_contents in /home/livegeogeniusco/vendor/laravel/framework/src/Illuminate/Filesystem/Filesystem.php:122 #5 Illuminate\Filesystem\Filesystem:put in /home/livegeogeniusco/vendor/laravel/framework/src/Illuminate/Session/FileSessionHandler.php:83 #4 Illuminate\Session\FileSessionHandler:write in /home/livegeogeniusco/vendor/laravel/framework/src/Illuminate/Session/Store.php:128 #3 Illuminate\Session\Store:save in /home/livegeogeniusco/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php:87 #2 Illuminate\Session\Middleware\StartSession:terminate in /home/livegeogeniusco/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php:218 #1 Illuminate\Foundation\Http\Kernel:terminateMiddleware in /home/livegeogeniusco/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php:189 #0 Illuminate\Foundation\Http\Kernel:terminate in /home/livegeogeniusco/public_html/index.php:60
7
ErrorException
/
vendor
/
laravel
/
framework
/
src
/
Illuminate
/
Filesystem
/
Filesystem.php
122
6
file_put_contents
/
vendor
/
laravel
/
framework
/
src
/
Illuminate
/
Filesystem
/
Filesystem.php
122
5
Illuminate
\
Filesystem
\
Filesystem
put
/
vendor
/
laravel
/
framework
/
src
/
Illuminate
/
Session
/
FileSessionHandler.php
83
4
Illuminate
\
Session
\
FileSessionHandler
write
/
vendor
/
laravel
/
framework
/
src
/
Illuminate
/
Session
/
Store.php
128
3
Illuminate
\
Session
\
Store
save
/
vendor
/
laravel
/
framework
/
src
/
Illuminate
/
Session
/
Middleware
/
StartSession.php
87
2
Illuminate
\
Session
\
Middleware
\
StartSession
terminate
/
vendor
/
laravel
/
framework
/
src
/
Illuminate
/
Foundation
/
Http
/
Kernel.php
218
1
Illuminate
\
Foundation
\
Http
\
Kernel
terminateMiddleware
/
vendor
/
laravel
/
framework
/
src
/
Illuminate
/
Foundation
/
Http
/
Kernel.php
189
0
Illuminate
\
Foundation
\
Http
\
Kernel
terminate
/
public_html
/
index.php
60
/
home
/
livegeogeniusco
/
vendor
/
laravel
/
framework
/
src
/
Illuminate
/
Filesystem
/
Filesystem.php
     *
     * @param  string  $path
     * @return string
     */
    public function hash($path)
    {
        return md5_file($path);
    }
 
    /**
     * Write the contents of a file.
     *
     * @param  string  $path
     * @param  string  $contents
     * @param  bool  $lock
     * @return int
     */
    public function put($path, $contents, $lock = false)
    {
        return file_put_contents($path, $contents, $lock ? LOCK_EX : 0);
    }
 
    /**
     * Prepend to a file.
     *
     * @param  string  $path
     * @param  string  $data
     * @return int
     */
    public function prepend($path, $data)
    {
        if ($this->exists($path)) {
            return $this->put($path, $data.$this->get($path));
        }
 
        return $this->put($path, $data);
    }
 
    /**
     * Append to a file.
Arguments
  1. "file_put_contents(): Only 0 of 220 bytes written, possibly out of free disk space"
    
/
home
/
livegeogeniusco
/
vendor
/
laravel
/
framework
/
src
/
Illuminate
/
Filesystem
/
Filesystem.php
     *
     * @param  string  $path
     * @return string
     */
    public function hash($path)
    {
        return md5_file($path);
    }
 
    /**
     * Write the contents of a file.
     *
     * @param  string  $path
     * @param  string  $contents
     * @param  bool  $lock
     * @return int
     */
    public function put($path, $contents, $lock = false)
    {
        return file_put_contents($path, $contents, $lock ? LOCK_EX : 0);
    }
 
    /**
     * Prepend to a file.
     *
     * @param  string  $path
     * @param  string  $data
     * @return int
     */
    public function prepend($path, $data)
    {
        if ($this->exists($path)) {
            return $this->put($path, $data.$this->get($path));
        }
 
        return $this->put($path, $data);
    }
 
    /**
     * Append to a file.
Arguments
  1. "/home/livegeogeniusco/storage/framework/sessions/A1AtrfyBHkA818hw4IccuP4SW2RUG6sDVt0Ujxq9"
    
  2. "a:3:{s:6:"_token";s:40:"LQrTsQ469YJarGIjfowjXiZeyZipDHdEzJEFvoh6";s:9:"_previous";a:1:{s:3:"url";s:62:"https://www.geogenius.co.za/visualisation_kit/how-does-it-work";}s:6:"_flash";a:2:{s:3:"old";a:0:{}s:3:"new";a:0:{}}}"
    
  3. 2
    
/
home
/
livegeogeniusco
/
vendor
/
laravel
/
framework
/
src
/
Illuminate
/
Session
/
FileSessionHandler.php
    /**
     * {@inheritdoc}
     */
    public function read($sessionId)
    {
        if ($this->files->exists($path = $this->path.'/'.$sessionId)) {
            if (filemtime($path) >= Carbon::now()->subMinutes($this->minutes)->getTimestamp()) {
                return $this->files->get($path, true);
            }
        }
 
        return '';
    }
 
    /**
     * {@inheritdoc}
     */
    public function write($sessionId, $data)
    {
        $this->files->put($this->path.'/'.$sessionId, $data, true);
 
        return true;
    }
 
    /**
     * {@inheritdoc}
     */
    public function destroy($sessionId)
    {
        $this->files->delete($this->path.'/'.$sessionId);
 
        return true;
    }
 
    /**
     * {@inheritdoc}
     */
    public function gc($lifetime)
    {
        $files = Finder::create()
Arguments
  1. "/home/livegeogeniusco/storage/framework/sessions/A1AtrfyBHkA818hw4IccuP4SW2RUG6sDVt0Ujxq9"
    
  2. "a:3:{s:6:"_token";s:40:"LQrTsQ469YJarGIjfowjXiZeyZipDHdEzJEFvoh6";s:9:"_previous";a:1:{s:3:"url";s:62:"https://www.geogenius.co.za/visualisation_kit/how-does-it-work";}s:6:"_flash";a:2:{s:3:"old";a:0:{}s:3:"new";a:0:{}}}"
    
  3. true
    
/
home
/
livegeogeniusco
/
vendor
/
laravel
/
framework
/
src
/
Illuminate
/
Session
/
Store.php
     *
     * @param  string  $data
     * @return string
     */
    protected function prepareForUnserialize($data)
    {
        return $data;
    }
 
    /**
     * Save the session data to storage.
     *
     * @return bool
     */
    public function save()
    {
        $this->ageFlashData();
 
        $this->handler->write($this->getId(), $this->prepareForStorage(
            serialize($this->attributes)
        ));
 
        $this->started = false;
    }
 
    /**
     * Prepare the serialized session data for storage.
     *
     * @param  string  $data
     * @return string
     */
    protected function prepareForStorage($data)
    {
        return $data;
    }
 
    /**
     * Age the flash data for the session.
     *
     * @return void
Arguments
  1. "A1AtrfyBHkA818hw4IccuP4SW2RUG6sDVt0Ujxq9"
    
  2. "a:3:{s:6:"_token";s:40:"LQrTsQ469YJarGIjfowjXiZeyZipDHdEzJEFvoh6";s:9:"_previous";a:1:{s:3:"url";s:62:"https://www.geogenius.co.za/visualisation_kit/how-does-it-work";}s:6:"_flash";a:2:{s:3:"old";a:0:{}s:3:"new";a:0:{}}}"
    
/
home
/
livegeogeniusco
/
vendor
/
laravel
/
framework
/
src
/
Illuminate
/
Session
/
Middleware
/
StartSession.php
        if ($this->sessionConfigured()) {
            $this->storeCurrentUrl($request, $session);
 
            $this->addCookieToResponse($response, $session);
        }
 
        return $response;
    }
 
    /**
     * Perform any final actions for the request lifecycle.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Symfony\Component\HttpFoundation\Response  $response
     * @return void
     */
    public function terminate($request, $response)
    {
        if ($this->sessionHandled && $this->sessionConfigured() && ! $this->usingCookieSessions()) {
            $this->manager->driver()->save();
        }
    }
 
    /**
     * Start the session for the given request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Contracts\Session\Session
     */
    protected function startSession(Request $request)
    {
        return tap($this->getSession($request), function ($session) use ($request) {
            $session->setRequestOnHandler($request);
 
            $session->start();
        });
    }
 
    /**
     * Get the session implementation from the manager.
/
home
/
livegeogeniusco
/
vendor
/
laravel
/
framework
/
src
/
Illuminate
/
Foundation
/
Http
/
Kernel.php
     * @return void
     */
    protected function terminateMiddleware($request, $response)
    {
        $middlewares = $this->app->shouldSkipMiddleware() ? [] : array_merge(
            $this->gatherRouteMiddleware($request),
            $this->middleware
        );
 
        foreach ($middlewares as $middleware) {
            if (! is_string($middleware)) {
                continue;
            }
 
            list($name) = $this->parseMiddleware($middleware);
 
            $instance = $this->app->make($name);
 
            if (method_exists($instance, 'terminate')) {
                $instance->terminate($request, $response);
            }
        }
    }
 
    /**
     * Gather the route middleware for the given request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return array
     */
    protected function gatherRouteMiddleware($request)
    {
        if ($route = $request->route()) {
            return $this->router->gatherRouteMiddleware($route);
        }
 
        return [];
    }
 
    /**
Arguments
  1. Request {
      #json: null
      #convertedFiles: null
      #userResolver: Closure {
        class: "Illuminate\Auth\AuthServiceProvider"
        this: AuthServiceProvider { …}
        parameters: {
          $guard: {
            default: null
          }
        }
        use: {
          $app: Application { …}
        }
      }
      #routeResolver: Closure {
        class: "Illuminate\Routing\Router"
        this: Router { …}
        use: {
          $route: Route { …}
        }
      }
      +attributes: ParameterBag {}
      +request: ParameterBag {#1}
      +query: ParameterBag {#1}
      +server: ServerBag {}
      +files: FileBag {}
      +cookies: ParameterBag {}
      +headers: HeaderBag {}
      #content: null
      #languages: null
      #charsets: null
      #encodings: null
      #acceptableContentTypes: array:4 [
        0 => "text/html"
        1 => "application/xhtml+xml"
        2 => "application/xml"
        3 => "*/*"
      ]
      #pathInfo: "/visualisation_kit/how-does-it-work"
      #requestUri: "/visualisation_kit/how-does-it-work"
      #baseUrl: ""
      #basePath: null
      #method: "GET"
      #format: null
      #session: Store {}
      #locale: null
      #defaultLocale: "en"
      -isHostValid: true
      -isForwardedValid: true
      basePath: ""
      format: "html"
    }
    
  2. Response {}
    
/
home
/
livegeogeniusco
/
vendor
/
laravel
/
framework
/
src
/
Illuminate
/
Foundation
/
Http
/
Kernel.php
     */
    protected function dispatchToRouter()
    {
        return function ($request) {
            $this->app->instance('request', $request);
 
            return $this->router->dispatch($request);
        };
    }
 
    /**
     * Call the terminate method on any terminable middleware.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Illuminate\Http\Response  $response
     * @return void
     */
    public function terminate($request, $response)
    {
        $this->terminateMiddleware($request, $response);
 
        $this->app->terminate();
    }
 
    /**
     * Call the terminate method on any terminable middleware.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Illuminate\Http\Response  $response
     * @return void
     */
    protected function terminateMiddleware($request, $response)
    {
        $middlewares = $this->app->shouldSkipMiddleware() ? [] : array_merge(
            $this->gatherRouteMiddleware($request),
            $this->middleware
        );
 
        foreach ($middlewares as $middleware) {
            if (! is_string($middleware)) {
Arguments
  1. Request {
      #json: null
      #convertedFiles: null
      #userResolver: Closure {
        class: "Illuminate\Auth\AuthServiceProvider"
        this: AuthServiceProvider { …}
        parameters: {
          $guard: {
            default: null
          }
        }
        use: {
          $app: Application { …}
        }
      }
      #routeResolver: Closure {
        class: "Illuminate\Routing\Router"
        this: Router { …}
        use: {
          $route: Route { …}
        }
      }
      +attributes: ParameterBag {}
      +request: ParameterBag {#1}
      +query: ParameterBag {#1}
      +server: ServerBag {}
      +files: FileBag {}
      +cookies: ParameterBag {}
      +headers: HeaderBag {}
      #content: null
      #languages: null
      #charsets: null
      #encodings: null
      #acceptableContentTypes: array:4 [
        0 => "text/html"
        1 => "application/xhtml+xml"
        2 => "application/xml"
        3 => "*/*"
      ]
      #pathInfo: "/visualisation_kit/how-does-it-work"
      #requestUri: "/visualisation_kit/how-does-it-work"
      #baseUrl: ""
      #basePath: null
      #method: "GET"
      #format: null
      #session: Store {}
      #locale: null
      #defaultLocale: "en"
      -isHostValid: true
      -isForwardedValid: true
      basePath: ""
      format: "html"
    }
    
  2. Response {}
    
/
home
/
livegeogeniusco
/
public_html
/
index.php
|--------------------------------------------------------------------------
| Run The Application
|--------------------------------------------------------------------------
|
| Once we have the application, we can handle the incoming request
| through the kernel, and send the associated response back to
| the client's browser allowing them to enjoy the creative
| and wonderful application we have prepared for them.
|
*/
 
$kernel = $app->make(Illuminate\Contracts\Http\Kernel::class);
 
$response = $kernel->handle(
    $request = Illuminate\Http\Request::capture()
);
 
$response->send();
 
$kernel->terminate($request, $response);
 
Arguments
  1. Request {
      #json: null
      #convertedFiles: null
      #userResolver: Closure {
        class: "Illuminate\Auth\AuthServiceProvider"
        this: AuthServiceProvider { …}
        parameters: {
          $guard: {
            default: null
          }
        }
        use: {
          $app: Application { …}
        }
      }
      #routeResolver: Closure {
        class: "Illuminate\Routing\Router"
        this: Router { …}
        use: {
          $route: Route { …}
        }
      }
      +attributes: ParameterBag {}
      +request: ParameterBag {#1}
      +query: ParameterBag {#1}
      +server: ServerBag {}
      +files: FileBag {}
      +cookies: ParameterBag {}
      +headers: HeaderBag {}
      #content: null
      #languages: null
      #charsets: null
      #encodings: null
      #acceptableContentTypes: array:4 [
        0 => "text/html"
        1 => "application/xhtml+xml"
        2 => "application/xml"
        3 => "*/*"
      ]
      #pathInfo: "/visualisation_kit/how-does-it-work"
      #requestUri: "/visualisation_kit/how-does-it-work"
      #baseUrl: ""
      #basePath: null
      #method: "GET"
      #format: null
      #session: Store {}
      #locale: null
      #defaultLocale: "en"
      -isHostValid: true
      -isForwardedValid: true
      basePath: ""
      format: "html"
    }
    
  2. Response {}
    

Environment & details:

empty
empty
empty
empty
empty
Key Value
CONTEXT_DOCUMENT_ROOT
"/home/livegeogeniusco/public_html"
CONTEXT_PREFIX
""
DOCUMENT_ROOT
"/home/livegeogeniusco/public_html"
GATEWAY_INTERFACE
"CGI/1.1"
HTTPS
"on"
HTTP_ACCEPT
"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"
HTTP_ACCEPT_ENCODING
"gzip"
HTTP_CONNECTION
"Keep-Alive"
HTTP_HOST
"www.geogenius.co.za"
HTTP_USER_AGENT
"CCBot/2.0 (https://commoncrawl.org/faq/)"
HTTP_X_HTTPS
"1"
PATH
"/bin:/usr/bin"
QUERY_STRING
""
REDIRECT_HTTPS
"on"
REDIRECT_SCRIPT_URI
"https://www.geogenius.co.za/visualisation_kit/how-does-it-work"
REDIRECT_SCRIPT_URL
"/visualisation_kit/how-does-it-work"
REDIRECT_SSL_TLS_SNI
"www.geogenius.co.za"
REDIRECT_STATUS
"200"
REDIRECT_UNIQUE_ID
"XBnmvsQpesgAKdsu0n4AAAAH"
REDIRECT_URL
"/visualisation_kit/how-does-it-work"
REMOTE_ADDR
"54.236.180.104"
REMOTE_PORT
"36238"
REQUEST_METHOD
"GET"
REQUEST_SCHEME
"https"
REQUEST_URI
"/visualisation_kit/how-does-it-work"
SCRIPT_FILENAME
"/home/livegeogeniusco/public_html/index.php"
SCRIPT_NAME
"/index.php"
SCRIPT_URI
"https://www.geogenius.co.za/visualisation_kit/how-does-it-work"
SCRIPT_URL
"/visualisation_kit/how-does-it-work"
SERVER_ADDR
"196.41.122.200"
SERVER_ADMIN
"webmaster@geogenius.co.za"
SERVER_NAME
"www.geogenius.co.za"
SERVER_PORT
"443"
SERVER_PROTOCOL
"HTTP/1.1"
SERVER_SIGNATURE
"<address>Apache/2.4.27 (Unix) OpenSSL/1.0.1e-fips mod_bwlimited/1.4 Server at www.geogenius.co.za Port 443</address>\n"
SERVER_SOFTWARE
"Apache/2.4.27 (Unix) OpenSSL/1.0.1e-fips mod_bwlimited/1.4"
SSL_TLS_SNI
"www.geogenius.co.za"
UNIQUE_ID
"XBnmvsQpesgAKdsu0n4AAAAH"
PHP_SELF
"/index.php"
REQUEST_TIME_FLOAT
1545201342.6136
REQUEST_TIME
1545201342
RECAPTCHA_SECRET_KEY
"6LfTg3QUAAAAAIVmlOLINckhzeu26xWKLS4NiQ-q"
RECAPTCHA_SITE_KEY
""
Key Value
CONTEXT_DOCUMENT_ROOT
"/home/livegeogeniusco/public_html"
CONTEXT_PREFIX
""
DOCUMENT_ROOT
"/home/livegeogeniusco/public_html"
GATEWAY_INTERFACE
"CGI/1.1"
HTTPS
"on"
HTTP_ACCEPT
"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"
HTTP_ACCEPT_ENCODING
"gzip"
HTTP_CONNECTION
"Keep-Alive"
HTTP_HOST
"www.geogenius.co.za"
HTTP_USER_AGENT
"CCBot/2.0 (https://commoncrawl.org/faq/)"
HTTP_X_HTTPS
"1"
PATH
"/bin:/usr/bin"
QUERY_STRING
""
REDIRECT_HTTPS
"on"
REDIRECT_SCRIPT_URI
"https://www.geogenius.co.za/visualisation_kit/how-does-it-work"
REDIRECT_SCRIPT_URL
"/visualisation_kit/how-does-it-work"
REDIRECT_SSL_TLS_SNI
"www.geogenius.co.za"
REDIRECT_STATUS
"200"
REDIRECT_UNIQUE_ID
"XBnmvsQpesgAKdsu0n4AAAAH"
REDIRECT_URL
"/visualisation_kit/how-does-it-work"
REMOTE_ADDR
"54.236.180.104"
REMOTE_PORT
"36238"
REQUEST_METHOD
"GET"
REQUEST_SCHEME
"https"
REQUEST_URI
"/visualisation_kit/how-does-it-work"
SCRIPT_FILENAME
"/home/livegeogeniusco/public_html/index.php"
SCRIPT_NAME
"/index.php"
SCRIPT_URI
"https://www.geogenius.co.za/visualisation_kit/how-does-it-work"
SCRIPT_URL
"/visualisation_kit/how-does-it-work"
SERVER_ADDR
"196.41.122.200"
SERVER_ADMIN
"webmaster@geogenius.co.za"
SERVER_NAME
"www.geogenius.co.za"
SERVER_PORT
"443"
SERVER_PROTOCOL
"HTTP/1.1"
SERVER_SIGNATURE
"<address>Apache/2.4.27 (Unix) OpenSSL/1.0.1e-fips mod_bwlimited/1.4 Server at www.geogenius.co.za Port 443</address>\n"
SERVER_SOFTWARE
"Apache/2.4.27 (Unix) OpenSSL/1.0.1e-fips mod_bwlimited/1.4"
SSL_TLS_SNI
"www.geogenius.co.za"
UNIQUE_ID
"XBnmvsQpesgAKdsu0n4AAAAH"
RECAPTCHA_SECRET_KEY
"6LfTg3QUAAAAAIVmlOLINckhzeu26xWKLS4NiQ-q"
RECAPTCHA_SITE_KEY
""
0. Whoops\Handler\PrettyPageHandler