Commit cdff42c3 authored by Daniel Kochmański's avatar Daniel Kochmański

pict

parent f07cd320
......@@ -126,7 +126,7 @@ rectangle coordinates are `[25,10], [30,15]`.
* MDPI display device units are dip and they match native units of our
choosing. No transformation is required.
![Graft drawing](https://common-lisp.net/project/mcclim/static/media/ideal-forms/mdpi.png)
![Graft drawing](https://common-lisp.net/project/mcclim/static/media/ideal-forms/mdpi.png)
* Some old displays have density 72PPI. Not all coordinates map exactly to
pixels - we need to round them[^3]. Notice that border is thicker and that
......@@ -138,26 +138,26 @@ rectangle coordinates are `[25,10], [30,15]`.
desktops. Almost all coordinates map perfectly on this screen. Notice the
approximation of the right side of the violet rectangle.
![Lower DPI](https://common-lisp.net/project/mcclim/static/media/ideal-forms/72dpi-96dpi-sbs.png)
![Lower DPI](https://common-lisp.net/project/mcclim/static/media/ideal-forms/72dpi-96dpi-sbs.png)
* Fact that the screen has higher density doesn't mean that coordinates mapping
perfectly on a lower density screen will map well to a higher density
one. Take this HDPI screen. Almost all coordinates are floats while on the
MDPI display they had all integer values.
![HDPI](https://common-lisp.net/project/mcclim/static/media/ideal-forms/hdpi.png)
![HDPI](https://common-lisp.net/project/mcclim/static/media/ideal-forms/hdpi.png)
* Higher resolution makes rectangles look better (borderline is thinner and
distortions are less visible to the eye). Here is XXXHDPI:
![XXXHDPI](https://common-lisp.net/project/mcclim/static/media/ideal-forms/xxxhdpi.png)
![XXXHDPI](https://common-lisp.net/project/mcclim/static/media/ideal-forms/xxxhdpi.png)
* Some printers have a really high DPI, here is imaginary 2560 DPI printer.
Funnily enough its accuracy exceeds our screen density so the red border which
is meant to show the "ideal" rectangle is a little off (it's fine if we scale
the image though).
![HQ Printer](https://common-lisp.net/project/mcclim/static/media/ideal-forms/printer.png)
![HQ Printer](https://common-lisp.net/project/mcclim/static/media/ideal-forms/printer.png)
* Until now we've seen some screens with square pixels (or dots). Let's take a
look at something with a really low density - a character terminal. To make
......@@ -165,7 +165,7 @@ rectangle coordinates are `[25,10], [30,15]`.
character (too small to be seen by a human eye). Notice that the real size of
the rectangles is still similar.
![Character terminal](https://common-lisp.net/project/mcclim/static/media/ideal-forms/console.png)
![Character terminal](https://common-lisp.net/project/mcclim/static/media/ideal-forms/console.png)
It is time to deal with `graphics` orientation (Y-axis grows towards the
top). An imaginary plotter with 80DPI resolution will be used to illustrate two
......@@ -178,13 +178,13 @@ important to know where we start the drawing.
print on. We do preserve the real size but we don't preserve the image
orientation – cyan rectangle should be higher on the plot.
![Plotter (bad transformation)](https://common-lisp.net/project/mcclim/static/media/ideal-forms/plotter-wrong-sbs.png)
![Plotter (bad transformation)](https://common-lisp.net/project/mcclim/static/media/ideal-forms/plotter-wrong-sbs.png)
* Correct transformation involves reverting Y axis and translating objects by
the screen height. See the correct transformation (on 80DPI and on MDPI
plotter).
![80DPI and MDPI plotters](https://common-lisp.net/project/mcclim/static/media/ideal-forms/plotters.png)
![80DPI and MDPI plotters](https://common-lisp.net/project/mcclim/static/media/ideal-forms/plotters.png)
[^7]: the Ideal border is composed of lines which are 1-dimensional objects
which doesn't occupy any space. Red border in drawings marks "ideal" object
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment