Risposte nei forum create
-
AutoreRisposte
-
::
Marco87″ post=72732Non riesco a capire la logica seguita da [tt]TikZ[/tt] nel ruotare.
Non ho capito bene perché, per ottenere il disegno di cui parli, vuoi partire dal quadrato con lati paralleli alla figura.
Comunque, se tu ruoti il disegno di -45°, quella che prima era la diagonale ora diventa un lato, perciò quando dici [tt](A) rectangle (C)[/tt] TikZ ti disegna un rettangolo con altezza nulla, cioè un segmento. Al massimo dovresti scrivere [tt](A) rectangle (D)[/tt], ammesso che io abbia capito bene cosa ti serve.Ciao
Edit: TikZ non ruota le coordinate che hai definito, solo gli oggetti ai quali aggiungi l’opzione [tt]rotate[/tt].
10 Maggio 2012 alle 16:12 in risposta a: Il disegno programmato nell’Arte di scrivere con LaTeX #72724::OldClaudio” post=72710Comunque con l’esperienza e l’occhio che mi sono fatto posso mettere le amni nel fuoco che i parametri di tensione delle curve di Bézier impostati con smooth di default per dirimere il grado di arbitrarietà sono valori piuttosto alti e le curve risultano piuttosto tese fra due nodi consecutivi.
Da quanto ho visto, il valore di tensione è 0.5 per difetto ed è impostato tramite il comando [tt]\pgfsetplottension[/tt] definito nella riga 124 del file pgfplotsoldpgfsupp_pgflibraryplothandlers.code.tex (per pgfplots: per TikZ c’è una definizione equivalente nella riga 104 del file pgflibraryplothandlers.code.tex). Si può modificare molto semplicemente inserendo come opzione nel comando [tt]\addplot[/tt] la chiave [tt]tension[/tt]. Purtroppo, anche aumentandone il valore, non mi sembra che ci siano grossi miglioramenti.
Ciao
P.S. probabilmente nello stesso file è definito l’algoritmo di smoothing, ma per me è arabo…
10 Maggio 2012 alle 13:55 in risposta a: Il disegno programmato nell’Arte di scrivere con LaTeX #72723::
@OldClaudio ti ringrazio per le informazioni. Penso di aver capito quello che dici, ma voglio documentarmi meglio sugli algoritmi. A questo punto credo che un’occhiata al codice di TikZ sia doverosa. Nel frattempo, a parziale conferma di quanto affermi sulla povertà dell’algoritmo, ti mostro un confronto tra la spline di Bézier generata da pgfplots e la spline naturale di Matlab sugli stessi nodi. La seconda mi sembra produrre un risultato migliore. Nota anche che nel primo e nell’ultimo tratto la mutua posizione delle curve interpolanti rispetto alla sinusoide è differente (probabilmente a causa di una condizione sulla derivata prima).[attachment=270]spline.png[/attachment]
@Lorenzo, credo di sì ma al momento non ne sono sicuro. Ho bisogno di guardare i codici. E comunque mi è sembrato di capire che in questo periodo l’autore di pgfplots è già molto impegnato.P.S.: allora facevo bene io a dire di non fidarsi alla cieca dell’interpolazione 😉
Ciao
Attachments:
You must be logged in to view attached files.10 Maggio 2012 alle 11:23 in risposta a: Il disegno programmato nell’Arte di scrivere con LaTeX #72720::
@OldClaudio voglio leggermi bene il tuo primo intervento perché mi sembra interessante.
Per il momento vorrei farti riflettere su un aspetto. Mi sembra di aver capito che l’opzione [tt]smooth[/tt] di pgfplots utilizzi lo stesso algoritmo dell’omonima opzione di TikZ, che evita di dover determinare i punti di controllo come hai fatto tu. Quindi quello che tu affermi ci conduce ad una o più delle seguenti:a) l’algoritmo di smooth è diverso da quello di \draw .. controls ecc… (che sono entrambi di TikZ)
b) l’algoritmo di smooth non è in grado di calcolare correttamente i punti di controllo
c) i punti di controllo che tu hai trovato ad occhio, per quanto efficienti, non corrispondono a quelli che si ottengono utilizzando un algoritmo corretto per le Bézier-spline.Mi riservo di testare anche altri metodi di interpolazione spline per un confronto, nonché di dare un’occhiata al codice dell’opzione smooth (anche se il linguaggio di pgf per me è arabo).
Ciao
@Lorenzo, non mi risulta che l’opzione smooth sia definita nel codice di pgfplots. Io l’ho cercata, ma non l’ho trovata. In rete ho letto che pgfplots si appoggia a TikZ per il comando [tt]\addplot[/tt].
10 Maggio 2012 alle 8:13 in risposta a: Il disegno programmato nell’Arte di scrivere con LaTeX #72709::
@Lorenzo, come ti hanno già detto l’autore non lo considererebbe un bug. Puoi usare [tt]enlarge y limits[/tt] oppure [tt]clip=false[/tt]. Nel primo caso gli assi vengono allungati oltre ymin e ymax, nel secondo quello che sporge dagli assi viene disegnato comunque (buono se vuoi aggiungere delle annotazioni che sporgano al di fuori degli assi).
::Marco87″ post=72577Sarebbe bello poter aver a disposizione un comando [tt]\spline[/tt] che generi una spline dell’ordine necessario a passare per tutti i punti forniti.
Il problema dell’ordine necessario a coprire tutti i nodi nasce quando vuoi interpolare con un unico polinomio (interpolazione semplice). In quel caso, se i nodi sono n, è chiaro che l’ordine del polinomio può arrivare anche ad n-1. Quando usi il metodo delle funzioni spline, che ricade nei metodi di interpolazione composita, tu determini n-1 polinomi di grado a scelta in base alle tue esigenze, che hanno il compito di approssimare la funzione solo in uno degli n-1 intervalli tra due nodi consecutivi. Perciò una spline di qualsiasi ordine passa sempre per tutti i nodi. Chiaramente, più sali nell’ordine e più “regolare” è l’andamento della funzione approssimante, però in generale già con una famiglia di polinomi del terzo ordine hai ottimi risultati. Semmai il problema è quello di determinare i punti di controllo, nel caso delle curve di Bézier, o più in generale i coefficienti dei polinomi interpolanti.
Nel par. 19.8 a pag. 229 del manuale di TikZ è trattata l’opzione [tt]smooth[/tt] per il comando [tt]plot[/tt]. Puoi dare in pasto i nodi come coordinate in questo modo:
`\draw plot [smooth] coordinates {(x1,y1) (x2,y2) … (xn,yn)};`
Ciao
::repez” post=72535qui come devo impostare la directory del file customtiks.m?
al posto di “$Path” metto: “C:\My Files\MathPSfrag\CustomTicks.m” ??
ho messo la variabile path di ghostscript ma nn funza bisogna mettere a mano la directory che mi ha dato tu..
Lì non devi cambiare niente. Se non lo trova, vuol dire che è fuori posto. Dovresti spostarlo in uno dei percorsi che leggi con il comando [tt]$path[/tt] su Mathematica (ad esempio [tt]C:\Program Files\Wolfram Research\Mathematica\8.0\SystemFiles\Kernel\Packages[/tt] oppure aggiungere la cartella in cui si trova il pacchetto al percorso di Mathematica.
Mi sembra strano che il metodo della variabile d’ambiente non funzioni. Io ho provato e va; d’altra parte mi sarei meravigliato del contrario…
Ciao
::
@repez mi dispiace ma non posso aiutarti perché il pacchetto non lo conosco.
@OldClaudio va bene: era per sapere se mi devo offendere perché mi hai chiamato vecchio 😀
Sto scherzando! E poi lo considero un complimento… Io non mi sento obsoleto e sinceramente penso che non lo sia neanche tu. Conoscere il DOS lo ritengo una risorsa. Probabilmente non serve a niente, ma solo di ricordi mi si illumina la giornata. Ti ricordi le tavole trigonometriche e dei logaritmi?Ciao
::repez” post=72490guarda lo screen ho fatto cosi, non sò se ho fatto quello che mi ai detto…
Se vuoi inserire “a mano” il percorso assoluto, devi decommentare quelle righe che risultano grigie eliminando il (* immediatamente prima e il *) immediatamente dopo, altrimenti Mathematica le ignora e cerca nel “path” che, evidentemente, non hai definito. Prova…
7 Maggio 2012 alle 16:04 in risposta a: Il disegno programmato nell’Arte di scrivere con LaTeX #72701::maumau” post=72470La chiave mark non ha un valore predefinito (secondo il manuale di pgf), se non imposti niente dovrebbe plottare un cerchietto blu.
Perché se tracci più grafici nella stessa figura il marcatore cambia automaticamente, così come il colore del tratto, secondo quanto definito dalla chiave [tt]cycle list[/tt] (def. [tt]=color[/tt]).
Ciao
::repez” post=72478non capisco cosa intendi con questa frase cosa è la variabile d’ ambiente? “aggiungere il percorso di ghostscript alla variabile d’ambiente path di Windows”
Leggi questo. Il percorso lo devi aggiungere in coda a quelli che ci sono già scritti nella casella di testo di path, separato da un punto e virgola. Nel tuo caso dovresti portarti con il cursore alla fine della casella e scrivere
`;C:\Program Files (x86)\gs\gs9.05\bin`
Prova e facci sapere. Nel frattempo ho provato anch’io. Effettivamente inserendo il percorso assoluto ho avuto problemi perché invece di scrivere [tt]Program Files (x86)[/tt] devi scrivere [tt]Progra~2[/tt]. In altre parole devi scrivere
`C:\\Progra~2\\gs\\gs9.05\\bin\\gswin32c`
Con il metodo della variabile d’ambiente è andato tutto bene senza dover modificare niente.
@OldClaudio, dici a me quando mi chiami Roberto? La storiella che hai raccontato mi ricorda “Nove volte sette” (The feeling of Power) di I. Asimov in Le meraviglie del possibile, Einaudi, Torino 1959.
Di Ghostscript esiste anche la versione a 64 bit che a suo tempo non ho installato perché se ben ricordo c’era qualche problema o difficoltà in più con l’estensione textext di Inkscape.
::
Il software lo puoi installare dove vuoi, basta che indichi a Mathematica dove l’hai messo.C’è scritto nel manuale nel par. 5.4. Le soluzioni sono due:
1) al posto di “gs” inserisci il percorso assoluto del file sul tuo computer (qualcosa tipo “C:\Program Files\gs\…\bin\gs” se hai la versione a 64 bit – non posso dirlo con esattezza perché io ho quella a 32 bit e la posizione è differente)
2) aggiungere il percorso di ghostscript alla variabile d’ambiente [tt]path[/tt] di Windows.Visto che hai una versione di sviluppo di Windows, sono sicuro che saprai trovare facilmente la posizione delle variabili d’ambiente, perciò ti suggerisco di levarti il pensiero una volta per tutte con il secondo metodo.
7 Maggio 2012 alle 6:53 in risposta a: Il disegno programmato nell’Arte di scrivere con LaTeX #72697::OldClaudio” post=72447che cosa succede se si usa il valore esattamante complementare 54,74° ? Secondo me, l’esagono continua ad essere esagono (ad occhio, s’intende).
Questo:
[attachment=260]cuboclaudio.png[/attachment]
A me non sembra più un esagono. L’autore del pacchetto sostiene che la funzione [tt]axis equal[/tt], per come è implementata adesso, rende uguali le proiezioni dei versori degli assi coordinati sul quadro e questo è oggettivamente sbagliato e va corretto (anche se potrebbe non essere l’unico problema). Ho verificato, portando l’elevazione a 70°, che in effetti le lunghezze dei versori rimandono uguali, mentre l’asse delle quote dovrebbe apparire più schiacciato.
Ho studiato un po’ il problema e credo che le lunghezze dei versori proiettati dovrebbero essere rispettivamente nell’ordine:ip=sqrt(1-(cos(e)sin(a))^2), jp=sqrt(1-(cos(e)cos(a))^2), kp=sqrt(1-sin(e)^2)
dove a ed e sono rispettivamente azimut ed elevazione come definiti nella risposta 9 dell’intervento 72092.
Chiedo cortesemente agli esperti di geometria di verificare e di farmi sapere se è corretto.
Vi illustro brevemente il ragionamento (per l’asse delle ascisse). Il versore perpendicolare al quadro ha componenti (cos(e)sin(a), cos(e)cos(a), sin(e)), perciò il coseno dell’angolo che esso forma con l’asse delle x è cos(e)sin(a). Quindi il seno che l’asse delle x forma con il piano di proiezione è, a meno del segno, cos(e)sin(a). Di conseguenza, la proiezione del versore i sul quadro è pari al coseno dell’angolo individuato, cioè sqrt(1-(cos(e)sin(a))^2).
Ho provato con a=135° e e=35.26° ed effettivamente le tre proiezioni vengono uguali.
Attachments:
You must be logged in to view attached files.6 Maggio 2012 alle 15:23 in risposta a: Il disegno programmato nell’Arte di scrivere con LaTeX #72694::
Nel mio intervento n. 72092 ho modificato la risposta n.9 (su view), perché era errata. Per gli amministratori: perché non riesco più ad inserire direttamente un link ad un intervento? Mi sembra che prima si potesse fare 😕L’autore del pacchetto mi ha concesso il permesso di riportare la sua risposta su questo forum. Vi riassumo in breve l’inizio della conversazione. Lui sostiene che il problema del cubo riguarda la chiave [tt]axis equal[/tt] ed è collegato al problema della sfera di Lorenzo. Io gli ho fatto notare che se proiettiamo la sfera sui piani coordinati con [tt]axis equal=true[/tt] si ottiene un cerchio in tutti e tre i casi, quindi a me sembra un problema del metodo di proiezione piuttosto che della lunghezza dei versori degli assi. Tra l’altro, misurando gli spigoli del cubo nel caso dell’assonometria isometrica che ho postato in precedenza, si ottiene lo stesso valore, mentre gli angoli tra le coppie di assi appaiono di circa 135° e 113°, quindi ancora una volta a me sembra una deformazione operata dall’algoritmo di proiezione. Ora vi riporto la risposta a queste osservazioni. Faccio presente che la soluzione di cambiare lo [tt]scale mode[/tt] che suggerisce come soluzione, funziona (per il cubo) con la versione in via di sviluppo, ma non con quella stabile in mio possesso, perciò non vi posto il codice che mi ha inviato.
Christian FeuersaengerI guess your examples actually reveal the same as in the bug report of the sphere problem (which I summarized as “axis equal” problem). Here is a detailled (yet related) list of problems. All of them need to be fixed before the problem can be considered to be “solved”:
1. pgfplots still applies ‘scale mode=stretch to fill’ although ‘axis equal’ is active. It should apply ‘scale mode=scale uniformly’. Unfortunately, the implementation of ‘scale mode=scale uniformly’ had some unfortunate pgf math issues (intermediate results became too large). I have already fixed that. I attached your example in which I replaced “axis equal” by “scale mode=scale uniformly”. I believe it looks much closer to the original expectation.
2. Even if we would apply ‘scale mode=scale uniformly’ whenever the ‘axis equal’ option is in effect, the implementation of ‘axis equal’ is wrong: it measures the size of the *projected* unit vectors (i.e. 2d vectors) and rescales them such that they have the same size. This cannot be correct. It would probably be correct to modify the plot box
ratio before it is projected to 2d. However, I have not fully understand how this has to be done (I haven’t thought about it thoroughly since I received the bug reports).3. the enlarge limits issue arises due to the default settings of pgfplots: for 3d axes, it ONLY enlarges the z limits unless the user explicitly requests ‘enlargelimits’. This is a minor issue I guess.
Currently, I believe that
– I need to disable ‘scale mode=stretch to fill’ whenever someone requested specific axis ratios. I am unsure if this causes unexpected changes to the shape of the displayed axis. I believe this is what you mentioned as “projection issue” — it certainly *is* a projection issue if stretch-to-fill is active (since it skews the axes after the 3d projection). However, ‘scale mode=scale uniformly’ should fix it.– I need to fix axis equal; it must be wrong. But I currently do not know how.
– interestingly, my current developer version must have introduced a regression concerning the view normal: the XY plane projection is wrong (and different from your image where it is still correct). That is good to know 🙂
L’ultimo punto è stato risolto.
Ciao
-
AutoreRisposte