User Rating 0.0 โ˜…โ˜…โ˜…โ˜…โ˜…
Total Usage 0 times
Presets:
Enter coordinates and press Convert
Cartesian Isometric Point
Is this tool helpful?

Your feedback helps us improve.

โ˜… โ˜… โ˜… โ˜… โ˜…

About

Isometric projection maps three-dimensional space onto a two-dimensional plane using a fixed viewing angle. The standard 2:1 ratio projects a Cartesian point (x, y) into isometric space by rotating the axes 45ยฐ and scaling the vertical axis by a factor of 0.5. Getting this transform wrong means tile misalignment, click-target drift, and broken pathfinding in any isometric game engine. This tool computes the exact forward and inverse projection so you can validate coordinates without debugging render loops.

The conversion assumes a true 2:1 isometric ratio where the tile width is twice the tile height. This matches the convention used by most 2D game frameworks (Phaser, LibGDX, Tiled). Note: this tool operates in screen-space coordinates. If your engine applies a camera offset or viewport scaling, you must subtract those before feeding values here. Pro tip: batch-convert your tilemap origin points first, then spot-check edge tiles to catch off-by-one errors early.

isometric coordinates cartesian converter coordinate transformation game development isometric projection 2D math coordinate system

Formulas

The isometric projection used here follows the standard 2:1 diamond (staggered) convention. The forward transform converts Cartesian coordinates into isometric screen space:

isox = cartx โˆ’ carty
isoy = cartx + carty2

The inverse transform recovers Cartesian coordinates from isometric screen positions:

cartx = 2 โ‹… isoy + isox2
carty = 2 โ‹… isoy โˆ’ isox2

In matrix form, the forward projection is:

isoxisoy = 1โˆ’10.50.5 โ‹… cartxcarty

Where cartx and carty are the original Cartesian coordinates, isox is the horizontal screen offset, and isoy is the vertical screen offset. The matrix has determinant โˆ’1, confirming it is invertible. The factor of 12 on the second row produces the characteristic 2:1 width-to-height diamond ratio.

Reference Data

PropertyCartesian SystemIsometric System (2:1)
Axis OrientationOrthogonal (90ยฐ)Rotated 45ยฐ, scaled vertically
Tile ShapeSquareDiamond (rhombus)
Width : Height Ratio1 : 12 : 1
x-axis directionRight โ†’Down-right ↘
y-axis directionUp โ†‘Down-left ↙
Forward Transform: isox - cartx โˆ’ carty
Forward Transform: isoy - (cartx + carty) รท 2
Inverse Transform: cartx(2 โ‹… isoy + isox) รท 2 -
Inverse Transform: carty(2 โ‹… isoy โˆ’ isox) รท 2 -
Common Tile Sizes32ร—32, 64ร—64 px64ร—32, 128ร—64 px
Use Case: RPGsTop-down viewPseudo-3D depth illusion
Use Case: StrategyGrid-based movementSimCity / Civilization style
Use Case: ArchitectureFloor plansTechnical axonometric drawings
Rotation Matrix Angle0ยฐ45ยฐ
Vertical Scale Factor1.00.5
Determinant of Transform1โˆ’1 (reflection + scale)
Invertible?Yes (identity)Yes (non-singular matrix)
Pixel-Perfect atAny integerEven x + y sums
Mouse Hit DetectionSimple AABBPoint-in-diamond test required
Scrolling ComplexityLinear offsetDiamond-shaped viewport culling
Z-Order SortingBy y coordinateBy cartx + carty
Origin ConventionBottom-left or top-leftTop center of map diamond

Frequently Asked Questions

The 2:1 ratio means tile width is exactly twice tile height. This produces diamond tiles whose edges align perfectly on a pixel grid at integer coordinates, avoiding sub-pixel rendering artifacts. A true 30ยฐ dimetric projection would use a ratio of approximately 1.732:1, which causes fractional pixel positions and visible seam lines in tile-based rendering. The 2:1 convention sacrifices geometric accuracy for pixel-perfect alignment.
Negative isometric coordinates are mathematically valid and represent positions to the upper-left of the origin in screen space. The inverse transform handles them correctly. However, if your game engine uses unsigned tile indices, you must apply an offset: add half the map width to iso_x and half the map height to iso_y before indexing into your tile array.
No. This tool implements strictly the 2:1 isometric (equal-measure) projection. Dimetric projections use two different axis scales, and trimetric projections use three. Those require different transformation matrices with custom angle parameters. The formulas here assume exactly 45ยฐ rotation with 0.5 vertical scaling.
The raw coordinate transform is independent of tile size. To convert from tile indices to pixel positions, multiply by tile dimensions after the transform: screen_x = iso_x ร— (tileWidth / 2) and screen_y = iso_y ร— (tileHeight / 2). The tool's optional tile size field applies this scaling automatically.
The tool uses a mathematical origin where the Cartesian y-axis points upward and x-axis points rightward. In screen space (where y increases downward), the isometric y-component is effectively inverted. If your engine uses screen-space y-down convention, negate the cart_y input or invert the iso_y output depending on your pipeline stage.
Mouse coordinates are in screen space (Cartesian). You must apply the inverse transform to convert screen pixel position to isometric tile index. Common errors include forgetting to subtract the camera/viewport offset before transforming, or using integer truncation instead of Math.floor for negative coordinates, which rounds toward zero rather than downward.