# I'd like to set up a UI for a 2D square to access the internet— any ideas? [closed]

I have a friend who is a square (i.e. he lives in a 2 dimensional plane on the surface of a table that I keep in my bedroom). He has decent hearing and understands English, but I'm getting tired of trying to explain this whole 3-dimensional thing to him in person. I'm wondering if I could just set up an API so he could access the internet then he could find things out for himself. Preferably he would be able to engage with GUIs, so that he could engage in forums such as this one.

Any suggestions for the most practical way of setting up such an UI? The square is able to speak and move around in the plane. He is also able to hear sounds and to see reflections off of walls (shape edges) when I project different light onto them.

Edit: @AlexP is right. I should have said UI. I've fixed it above.

Also, I should clarify, I'll be building the UI in 3-space so no worries about technical challenges of building in 2 dimensions.

There have been some good responses, but ideally I'd like for him to be able to interact with graphics. Any suggestions on how that could be accomplished?

## closed as off-topic by Aify, L.Dutch♦, Mołot, rek, sphenningsMay 25 '18 at 14:52

This question appears to be off-topic. The users who voted to close gave this specific reason:

• "This question does not appear to be about worldbuilding, within the scope defined in the help center." – Mołot, rek, sphennings
If this question can be reworded to fit the rules in the help center, please edit the question.

• What does "API" mean in this question? It most certainly does not mean Application Programming Interface. – AlexP May 24 '18 at 17:42
• are you trying to set up a flatland 2.0? – L.Dutch May 24 '18 at 18:21
• Rather a (G)UI than an API? The latter define inter-process communication, you want a user interface, I guess. – Karl May 24 '18 at 18:39
• Can't he just crawl over a touchscreen, engaging visible controls when needed? – Alexander May 24 '18 at 19:16
• "Engage in forums", so we can explain everything to him? xkcd.com/1897 – Karl May 24 '18 at 20:33

### Hilbert Curves

Your square friend experiences the table as a 1-dimensional strip. You browse the web in a 2-dimensional browser. So it seems to me you just need to convert the 2-d array of pixels in your browser to a 1-dimensional array of pixels and place them on the the table. As un-intuitive as it sounds, this is possible with something called a space filling curve. Here's an example called a hilbert curve:

The advantage of doing the map this way is that $(x,y)$ points that are close in the 2-d map are still close in the 1-d map. So locations of buttons, text, etc are consistent (if occasionally disjointed) when scrolling. Also, the 2-d array need not have the same number of points as the 1-d array, as evident in the animation.

### Example

I whipped up an example of what this might look like. Consider the following $64 \times 64$ image (blown up for appearance):

Now let's apply a hilbert transformation to take the $64 \times 64 = 4096$ stretch of pixels:
( I duplicated it 256 times in a row so nobody would have to look at an image 1 pixel tall). Looks like a 1-d cat meme to me ;)

### Keyboard and mouse

The keyboard is pretty easy; take a keyboard and lay the keys out in a 1-d array. The mouse input is a little trickier. You either have the option of mapping the mouse to the 1-d display or keeping the mouse mapped to the 2-d display and allowing your square friend to operate the mouse by moving on the 2-d table. Personally, I think it would find the 1-d mouse-map more intuitive.

• +1 For generating a 1-D cat-meme. It will probably take a while for my friend to read pictures like that, but I think he'll figure it out. – danxinnoble May 27 '18 at 0:29

The input should be entirely sound-based. Your friend should restrict his browsing to some large text-based source where the text has a predictable format. For example Wikipedia. Then you write a text-to-speech program that takes any page he specifies and reads it out for him.

You set up 'buttons' on the table. . .

. . . where a light sensor notices the change in colour when he moves into the area. This allows him to input a string of characters for which page he wants next, as well as skip forward and backwards through the narration.

• So how does he select hyperlinks in text as the text is narrated? – cms May 25 '18 at 11:51
• He doesn't select hyperlinks. – Daron May 25 '18 at 13:06

We understand data on the internet usually through a computer screen, essentially a 2D object. Your friend exists and thinks in 2D, but can only perceive 1D, assuming he cant see through walls (we exist in 3D, but only see 2D. Depth perceptions helps a lot here). The best way I can think of to send data in a way that he can read is through Morse code.

If you have a network set up that allows him to visit pages, then any text on those pages could be converted into Morse code, and put onto a piece of paper on the edge of the table, allowing your friend to read it.

Alternatively, if he can speak/hear, then a text to speech system would likely be much simpler for you to make and for your friend to get used to.

• Or just binary. ;-) – Karl May 24 '18 at 18:40

A 2 Dimensional Being Cant Comprehend the 3rd Dimension....

To a 2 dimensional being you will only ever be a line segment with width corresponding to the amount of material in which your body bisects his plane of perception. To a 2 dimensional being a sphere would simply be a growing and shrinking circle as it passed through his plane of perception. There is no way he could ever possibly perceive or understand what more than 2 dimensions were without himself becoming a 3 dimensional being.

...So we Will have to Translate Things to His Perceptions

As far as setting up a computer interface for him to both read and access data it would need to be translated from out spatial perceptions into his. I'm thinking a laser projected keyboard would need to be adapted into 2 dimensional symbols that he could decipher as letters of our alphabet.

I'm thinking a braille like system of lines and dashes corresponding to letters from our alphabet (he will have to learn to read this system too.) The computer would translate them into his version of braille as well as translate his input back into normal letters for the computer's use. For images you would "slice" a 3 dimensional rendering up and display them to him from top to bottom one slice at a time. He will never have a fully complete comprehension or understanding of what 3d actually is, but you now have given your flat friend a method by which he can interact with our world beyond sound.

I think the 3d rendering slicer program could be adopted from 3D printing software. It could be adapted to be projected to him a slice at a time instead of being printed a slice at a time.

• Fair point. Though the internet is mostly 2D. So while there is content that the square will have trouble understanding, I think there should be a way that he could interact with most of it. – danxinnoble May 24 '18 at 18:02
• OK, but how does this answer the API question? – Mołot May 24 '18 at 18:23
• Correct Molot, I submitted a partial upload. Thanks for catching that. Will revise. – TCAT117 May 24 '18 at 19:18
• Yet we can comprehend hypercubes and render 3D and 2D approximations of them... Your answer was flagged as low-quality, and while I won't recommend for deletion I think your answer is overly simplistic/naïve to such a degree that it's wrong. – rek May 24 '18 at 19:28
• That's because hyper cubes are one of the rare poly-types which are able to be represented in any number of existing dimensions. – TCAT117 May 24 '18 at 19:33

It should actually be no problem for a fully abled square, a bit trickier for a disabled square.

While someone like Stephen Hawkins, RIP, was indeed 3-dimensional, his physical ability to use a computer with standard inputs was limited to say the least. Luckily, we have designed various systems and devices to allow those with physical disabilities to use computers.

The first step is the output, because you can't interact with a system if you have no feedback.

I would presume, perhaps wrongly, that a 2D screen to a 2D character is the same than one of those fancy sci-fi 3D displays to a human, it might be overkill and unnecessarily complicated but should be comprehensible still.

In case your 2D pal cannot make visual sense of the screen, there are accessibility options on Windows (and I would assume other systems) to describe what's on the screen. I've never used them, so I can't really vouch for them, but they are designed for people with visual impairment and I assume they work well enough.

Now we'll assume your square has a good idea of what's on the screen. If he doesn't, chances are even turning him into a 3-dimensional being won't help.

If your square can move, that movement can be detected (with a camera for instance, or something like a DDR mat), you effectively have a mouse pointer. If your square can speak on top of that, you need to set up a command for left click, right click, double click, etc. then setup a commercially available speech-to-text software for typing. That would be the easiest, most straightforward way to interact with a computer screen.

In the case, your square can't move or speak, you'll have to tailor something around his specific abilities. Basic controls you'll need to map are selection (e.g. click), changing selection (e.g. moving the cursor, alt+tabbing), typing (which implies a vocabulary of commands for each letter plus some special characters, alternatively sounds or syllables instead of individual characters), and that should be enough to navigate the web.

Remember that people with disabilities still would like to use computers, and that we have come up with solutions for them. Some of them may be native to your system, some might be commercially available, some might be more DYI, but it should still be doable.

Obviously, someone who uses these should have more insight on their strengths and limitations than me.

If your square can see, even if only 1-dimensionally, he will probably have experience with viewing 2-dimensional space, just as we can get a good grasp of the three dimensions around us only by means of our 2D seeing.
This means you could put a sheet of semi-transparent material in your cube's plane of life, onto which you project your computer screen (maybe with a magnifier applied). By moving around a little, the square could probably guess what's in the plane.

If that is too difficult for him, you could even try projecting the image onto some mist that the square can move around in freely to "scan" it. This would probably still feel more natural to him than artificial slicing.