I don’t think ‘isometric angles’ is even a term, but I’m referring to how an angle should *appear* like in isometric view.

The image below describes the situation.

# Problem

Given an angle (75deg and 45deg depicted in red arrows above), what is computed angle if the circle was compressed by *half* (ie an isometric view). The small ellipse depict a circle in isometric view.

The yellow arrows depict the scaling effect of the point on the big white circle and is projected to touch the *isometric circle*.

The green arrows represent the vectors whose angles I am computing.

# Solution

I must apologise to any potential researcher that this solution is entirely homemade and there might be more elegant solutions out there.

- With a given angle, determine the normalised length of the Adjacent side

. This is done by**A**`cos(angle)`

. - The length of the
enables the measurement of the Opposite side`A`

.`O`

is computed by multiply`O`

with the tan() ratio of the angle:`A`

`O = tan(angle)*A`

- Now that
**O**has been found out (the yellow arrow line depicted above), scale the length down as per the isometric projection. For simplicity, I’m scaling it by half (eg for 256×125 tile):`O2=O/2`

- Then recompute the ratio of the known
**A**and new**O2**:`ratio=O2/A`

- The new ratio can be used to determine angle using atan():
`new_angle=atan(ratio)`

- If angle reaches 90, then
**A**has no length, and this corresponds with the nominal orthographic angle. - If angle reaches 180, then
**O**has no length, and so the same thing. - If angle > 90 and < 180 the result of
`A=cos(angle)`

will be negative. The same with`tan(angle)`

. - If angle > 180 and < 270 then A=cos(angle) will be negative still, but tan(angle) will be positive.
- If angle > 270 and < 360 then A=cos(angle) will be positive, and tan(angle) will be negative.
- When result angle is reached, modify the value based on the
*quadrant*of the original angle:- If cos(angle) is
**negative**, and tan(angle) is**negative**, add 180 degrees. (Quadrant 2) - If cos(angle) is
**negative**, and tan(angle) is**positive**, add 180 degrees. (Quadrant 3) - If cos(angle) is
**positive**, and tan(angle) is**negative**, add 360 degrees. (Quadrant 4) - If cos(angle) is
**positive**, and tan(angle) is**positive**, then keep result. (Quadrant 1)

- If cos(angle) is

# C2 angle

The images above show 45 degrees as pointing NE. In C2, however, it’s pointing SE. But this orientation allowed me to understand what was going on.

# C2 Implementation

Thus.

To reverse the operation, to get the orthogonal angle from an isometric angle, reverse tile’s width/height in O2: `O2=O/(SquareTx.Height/SquareTx.Width)`

## One thought on “Converting angles to isometric angles”