# How Generel Perspective projection works (-JG)?

**URL:** <https://forum.generic-mapping-tools.org/t/how-generel-perspective-projection-works-jg/2095>\
**Category:** Q&A\
**Created:** [September 15, 2021, 2:49pm UTC](https://forum.generic-mapping-tools.org/t/how-generel-perspective-projection-works-jg/2095 "2021-09-15T14:49:03Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![Esteban82](https://yyz1.discourse-cdn.com/flex047/user_avatar/forum.generic-mapping-tools.org/esteban82/32/54_2.png) [@Esteban82](https://forum.generic-mapping-tools.org/u/Esteban82)\
**Post date:** [September 15, 2021, 2:49pm UTC](https://forum.generic-mapping-tools.org/t/how-generel-perspective-projection-works-jg/2095/1 "2021-09-15T14:49:03Z")

</div>

I make this map with a [perspective projection (-JG)](https://docs.generic-mapping-tools.org/latest/cookbook/map-projections.html#perspective-projection-jg-jg).

`gmt grdimage @earth_relief_15m -Rd -JG-58:26/-34:36/9000/0/0/0/90/60/13.4c -B0 -C -png map`

 ![mapa](https://canada1.discourse-cdn.com/flex047/uploads/gmt/original/2X/d/d1602be810e14238ffa43e941bf9ff006758cb8e.jpeg)

I don’t understand well how Width and Height parameters works (below I copy the definition). In the map I used 90 and 60 and I get an stretch map. Is it ok?

The _Width_ and _Height_ of the viewpoint in degrees. This number depends on whether you are looking with the naked eye (in which case the view is about 60° wide), or with binoculars, for example.

---

<div class="post-metadata">

**Author:** ![pwessel](https://yyz1.discourse-cdn.com/flex047/user_avatar/forum.generic-mapping-tools.org/pwessel/32/30_2.png) [@pwessel](https://forum.generic-mapping-tools.org/u/pwessel)\
**Post date:** [September 15, 2021, 11:17pm UTC](https://forum.generic-mapping-tools.org/t/how-generel-perspective-projection-works-jg/2095/2 "2021-09-15T23:17:07Z")

</div>

Yes, it is needlessly complicated. The general perspective projection was implemented in GMT 4 by a very motivated guy who no longer is involved. Hence he made decisions that we now live with, such as the very ugly **-JG** syntax with all those parameters. On our long list of things to do we can add:

1. Refresh that syntax with modifier flags and default values (so all those 0/0/0 things can go away unless you really want twist, etc.
2. Add a clear description of these parameters with a sketch and a few examples showing the effects.

I think (1) is long overdue and should probably happen first. I will give it a think. I am guessing the standard **-JG** syntax stays and then the extra parameters should be set via optional modifiers. We will of course support the original mess in backwards compatibility mode.
