Mirror di ebook, audiolibri e file musicali tratti da Liber Liber


CLASSICISTRANIERI HOME PAGE - YOUTUBE CHANNEL
SITEMAP
Audiobooks by Valerio Di Stefano: Single Download - Complete Download [TAR] [WIM] [ZIP] [RAR] - Alphabetical Download  [TAR] [WIM] [ZIP] [RAR] - Download Instructions

Make a donation: IBAN: IT36M0708677020000000008016 - BIC/SWIFT:  ICRAITRRU60 - VALERIO DI STEFANO or
Privacy Policy Cookie Policy Terms and Conditions Manuale di Utilizzo di POV-Ray 3.01 - Versione Italiana

4.4.4.1        Capire il Concetto di Spline



Sarebbe utile, per capire le spline, avere una specie di 'Laboratorio Splines' dove potersi esercitare manipolando tipi di splines e punti per vedere come si comportano. Allora facciamocene uno ! Ora che sappiamo come creare un oggetto lathe elementare, sarà facile. (lathdem2.pov) :

#include "colors.inc"
camera {
orthographic
up <0, 5, 0>
right <5, 0, 0>
location <2.5, 2.5, -100>
look_at <2.5, 2.5, 0>
}

/* impostiamo i punti di controllo da usare */
#declare Red_Point = <1.00, 0.00, 0>
#declare Orange_Point = <1.75, 1.00, 0>
#declare Yellow_Point = <2.50, 2.00, 0>
#declare Green_Point = <2.00, 3.00, 0>
#declare Blue_Point = <1.50, 4.00, 0>

/* rendiamo i punti di controllo visibili */
cylinder { Red_Point, Red_Point - 20*z, .1
pigment { Red }
finish { ambient 1 }
}

cylinder { Orange_Point, Orange_Point - 20*z, .1
pigment { Orange }
finish { ambient 1 }
}

cylinder { Yellow_Point, Yellow_Point - 20*z, .1
pigment { Yellow }
finish { ambient 1 }
}

cylinder { Green_Point, Green_Point - 20*z, .1
pigment { Green }
finish { ambient 1 }
}

cylinder { Blue_Point, Blue_Point- 20*z, .1
pigment { Blue }
finish { ambient 1 }
}

/* qualcosa per fare vedere la spline */
lathe {
linear_spline
5,
Red_Point,
Orange_Point,
Yellow_Point,
Green_Point,
Blue_Point

pigment { White }
finish { ambient 1 }
}

Ora, respiriamo profondamente.

Fig. 23-Punti uniti con spline piana

Sappiamo che questa 'cosa' ha un aspetto un po' incomprensibile ma, con qualche semplice spiegazione, possiamo vedere facilmente come si comporta. Per prima cosa, stiamo usando una macchina fotografica di tipo 'ortografico'. Se non abbiamo ancora letto nulla su essa (§ 7.4.1), ecco un breve riassunto : rende la scena piatta, eliminando gli effetti di distorsione prospettica, in modo che per esempio in una vista laterale, gli oggetti sembrano disegnati su carta millimetrata (come nella vista laterale di un modellatore o di un programma CAD). Ci sono diversi utilizzi per questo nuovo tipo di macchina fotografica, ma per ora ci permette di vedere il nostro oggetto ed i cilindri 'all'insù', in modo che ciò che vediamo è quasi più una sezione trasversale dell'oggetto, che non l'oggetto stesso. Per aumentare quest'effetto, eliminiamo le ombreggiature con un finish{ ambient 1} che elimina ovviamente anche il bisogno di illuminazione. Inoltre, abbiamo posizionato questa 'macchina' in modo che il punto <0,0> appaia all'estremità inferiore destra della nostra scena.
Poi, abbiamo dichiarato un insieme di punti. Notiamo che abbiamo usato punti a tre coordinate invece che a due come avevamo detto prima. Questa è l'eccezione di cui parlavamo. Quando dichiariamo un punto a tre coordinate e poi lo usiamo in un oggetto
lathe, l'oggetto utilizza solo le prime due coordinate del vettore e ignora qualunque cosa sia la terza coordinata. In questo caso è comodo perchè rende possibile fare questo esempio.
Poi facciamo due cose diverse con questi punti. Primo, li usiamo per piazzare dei cilindri di piccolo diametro nelle posizioni dei punti con le facce rotonde di fronte alla macchina fotografica. Poi, li riutilizziamo per determinare il 'lathe'. Dato che dichiarare un vettore a due componenti può dare qualche strano risultato e inoltre non è ciò di cui abbiamo bisogno per fare dei cilindri, possiamo trarre vantaggio dalla tendenza dell'oggetto 'lathe' a ignorare la terza coordinata e la impostiamo a zero.
Il risultato finale è : renderizzando questo oggetto, vediamo un oggetto 'lathe' bianco contro uno sfondo nero, che ci mostra l'aspetto della curva che abbiamo usato e le estremità circolari dei cilindri ci mostrano dove sono i nostri punti di controllo sul piano x-y. Abbiamo usato una spline lineare, così che otteniamo una linea spezzata a zigzag tra i punti. Cambiamo i punti di controllo rosso e blu come segue (lathdem3.pov).

#declare Red_Point = <2.00, 0.00, 0>

#declare Blue_Point = <0.00, 4.00, 0>

Fig. 24

Renderizziamo e come possiamo vedere, tutto quello che succede è che i segmenti si spostano in modo da conformarsi alle nuove posizioni dei punti rosso e blu. Le spline lineari sono talmente semplici che potremmo manipolarle dormendo, no ?
Proviamo qualcosa di differente. Per prima cosa, cambiamo i punti di controllo in questo modo (lathdem4.pov).

#declare Red_Point = <1.00, 0.00, 0>
#declare Orange_Point = <2.00, 1.00, 0>
#declare Yellow_Point = <3.50, 2.00, 0>
#declare Green_Point = <2.00, 3.00, 0>
#declare Blue_Point = <1.50, 4.00, 0>

Fig. 25-Altri punti

Poi torniamo alla parte lathe e cambiamo linear_spline in quadratic_spline.

Fig. 26-Punti uniti da una spline quadratica

Renderizziamo e otteniamo un paio di cose degne di nota. Per prima cosa, vediamo che, invece di una linea spezzata, abbiamo archi smussati che uniscono i punti. Questi archi sono ottenuti da curve quadratiche ed ora il nostro oggetto ha un aspetto molto più interessante. Inoltre, il punto rosso non fa più parte della curva. Cosa è successo ?
Bene, mentre bastano due punti per definire una linea retta, ce ne vogliono tre per determinare una curva quadratica. POV-Ray non guarda solo ai due punti da unire, ma anche al punto immediatamente precedente per determinare la formula della curva quadratica da usare per congiungerli. Il problema si trova all'inizio della curva. Oltre il primo punto, non ce ne sono altri. Allora, dobbiamo dichiararne uno. Quindi, quando usiamo una spline quadratica, dobbiamo ricordare che il primo punto che specifichiamo è lì solo per permettere a POV-Ray di determinare con quale curva connettere i primi due punti e non farà parte della curva vera e propria.
C'è solo un'altra cosa riguardo al nostro esempio. Nonostante la nostra spline sia assemblata con linee curve e smussate, la transizione tra queste linee è...un po' grossolana, no ? Questa curva appare come se le linee tra i singoli punti siano state terribilmente sbagliate. A seconda di quello che vogliamo fare, può andarci bene, oppure possiamo avere bisogno di una forma più smussata. Fortunatamente, se ci troviamo di fronte alla seconda ipotesi, abbiamo un'altra possibilità.
La spline quadratica richiede più tempo per il rendering di quella lineare. Una spline cubica ne richiede ancora di più, ma se vogliamo un oggetto veramente smussato, è l'unico modo che abbiamo. Torniamo al nostro esempio e cambiamo
quadratic_spline in cubic_spline (vedi lathdem5.pov). Renderizziamo un'altra volta e vediamo cosa succede.

Fig. 27-Punti uniti da una spline cubica

Mentre una spline quadratica ha bisogno di tre punti per determinare la curva, per una spline cubica ne occorrono quattro. Così, come potevamo aspettarci, il punto blu è finito fuori dalla curva, come era successo prima per il punto rosso e il primo e l'ultimo punto ora sono solo punti di controllo per sagomare le curve tra i restanti punti. Ma adesso, la transizione tra il punto arancione, quello giallo e quello verde è una curva uniforme.
Il concetto di spline è necessario ed utile e lo rivedremo per prismi e poligoni. Con un po' di pratica, possiamo abituarci rapidamente ad usarlo.





Static Wikipedia 2008 (no images)


aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -

Static Wikipedia 2007 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -

Static Wikipedia 2006 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh