Come controllare l'invarianza di scala?


9

Sto cercando di mettere insieme diversi diagrammi in una specie di tabella. Penso che questo si chiami "stampa indice" , la gente della fotografia lo fa quando deve rivedere molte fotografie contemporaneamente. Comunque, questo è il codice:

main :: IO ()
main = mainWith @(Diagram B)
     $ (tile . fmap renderOne) examples

renderOne :: AnyGraph -> Diagram B
renderOne (AnyGraph gr) = ...

tile :: [Diagram B] -> Diagram B
tile xs = let columns = (ceiling . sqrt . fromIntegral . length) xs
          in (vcat . fmap hcat . List.chunksOf columns) xs

Non funziona come mi aspetto. Ma affrontiamolo gradualmente. Innanzitutto, ecco un rendering di una singola tessera:

uno

Ora, facciamo hcatquattro tessere insieme.

HCAT

Aggiungi una seconda riga: (Guarda come si addensano le caratteristiche invarianti della scala .)

tile2

Ed è così che appare con 4 righe:

piastrella

Fuori portata!

Mi sembra che le caratteristiche invarianti della scala, come le punte delle frecce, siano ridimensionate in proporzione all'area dell'immagine. Ma in questo caso, ho bisogno di aumentare il mio diagramma senza ridimensionare quelle funzionalità. Come posso raggiungerlo?

Risposte:


5

La sezione del manuale dell'utente sulle unità di misura è ciò che si desidera guardare. Cose come le punte di freccia sono misurate di default in unità "normalizzate", che sono ridimensionate in modo da essere sempre una proporzione costante della dimensione dell'intera immagine. Se capisco correttamente il tuo caso d'uso, penso che probabilmente vorrai utilizzare le unità locali. Usa la variante innescata di qualsiasi funzione di freccia che stai utilizzando e dagli un record di opzioni simile

(with & headLength .~ local 0.1)

ma con qualsiasi numero, le tue foto appaiono come desideri. Vedi il tutorial sulla freccia per ulteriori informazioni sulle opzioni della freccia.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.