# Formula to split screen in 4 diagonal zones

I need a formula to split the screen into 4 pieces. From the top left corner to the bottom right one and from the bottom left corner to the top right one. So they are diagonaly split.

``````if (m_MousePositionX * m_pythagoras < m_HalfScreenWidth && m_MousePositionY * m_pythagoras < m_HalfScreenHeight)
``````

etc…
Still cant get a correct formula after couple of hours
As you can see i try to call functions depandend on where my mouse position is (Left, top, right or bottom zone of the screen)

Try this:

``````// Convert mouse cursor pos to normalised range: -1 to +1
float x = (m_MousePositionX-m_HalfScreenWidth)/m_HalfScreenWidth;
float y = (m_MousePositionY-m_HalfScreenHeight)/m_HalfScreenHeight;

if (Mathf.Abs(x) > Mathf.Abs(y))
{
if (x>0.0f)
{
// right
}
else
{
//left
}
}
else
{
if (y>0.0f)
{
// up
}
else
{
// down
}
}
``````

Vector3 ConvertMousePosToCardinalDirection(Vector3 m_MousePosition)

``````if (Vector3.Dot(m_MousePosition.normalized, Vector3.right) >= 0.5f)
return Vector3.right;

else if (Vector3.Dot(m_MousePosition.normalized, Vector3.left) >= 0.5f)
return Vector3.left;

else if (Vector3.Dot(m_MousePosition.normalized, Vector3.forward) > 0.5f)
return Vector3.forward;

else
return Vector3.back;
``````

or you could do

``````Vector3 ConvertMousePosToCardinalDirections (float m_MousePositionX, float m_MousePositionY)

if (Mathf.Abs(m_MousePositionX) > Mathf.Abs(m_MousePositionY))
{
if (m_MousePositionX < 0)
return Vector3.left;
else
return Vector3.right;
}
else
{
if (m_MousePositionY < 0)
return Vector3.back;
else
return Vector3.forward;;
}
``````

and change back to down, and forward to up as needed