HOME OGGETTI 3D LIBRI CORSI TUTORIAL FORUM SHOP CONTATTI   LOGIN









Autore Topic: Curve omologiche3  (Letto 1547 volte)

0 Utenti e 1 Visitatore stanno visualizzando questo topic.

marcomasetti

  • Newbie
    ...sono qui da poco, il mio miglior amico è il pulsante RICERCA
  • *
  • Post: 183
Curve omologiche3
« il: 16 Agosto 2012, 15:14 »
(prosegue post curve omologiche2)

Le curve che abbiamo descritto in questo modo, difficilmente possono essere inserite nelle primitive, per il fatto che la variabile x viene espressa in funzione di i in un modo artificioso, dove non compaiono i parametri relativi all’intervallo di definizione. Ad esempio la curva a campana di terzo grado che riscrivo sotto, ottenuta con la compressione a fisarmonica dell’asse x+ da infinito a [0,h], non è costruita secondo la divisione ordinaria del segmento di lunghezza h:
 
for i=1 to m-1
x=d*i/(m-i)   !i=0 x=0, i=m-1 x=d*(m-1), i=m x=infinito
y=k/(x^2+c)
xx= h*x/( d+x)   
put xx,y
next i
put  h, 0      !punto di fuga
poly2    nsp/2, 1 , get (nsp)

Infatti nello script la prima uguaglianza dovrebbe essere:
x=h/m*i
Partiamo dunque da questa uguaglianza e applichiamo ad essa l’omologia che porta inversamente il segmento [0,h] in [0, ∞].
xi= d*x/(h-x)
Risulta evidente che per x=h il nuovo valore xi fugge all’infinito .
Pertanto riscriviamo:

for i=1 to m-1
x=h/m*i
xi= d*x/(h-x)
!se  i=0   x=0 e xi=0,se  i=m-1   x= h/m*(m-1)   xi=d*(m-1), se i=m   x=h  xi=∞
y=k/(xi^2+c)
put x,y
next i
put  h, 0      !punto di fuga
poly2    nsp/2, 1 , get (nsp)

L’uguaglianza:  xx= h*xi/( d+xi)   è stata eliminata perché il valore xx restituisce x, infatti viene applicata la trasformazione inversa.  Per questo motivo è stato scelto p=d.
Tutte le formule di trasformazione possono essere riscritte in modo analogo, che è più pratico. 
Il caso sulla parabola descritto nell’esempio 1 si può riscrivere:

h=3
d=2
m=36
for i=0 to m-1
y=h/m*i
yi= d*y/(h-y)
x=sqr(yi)
xx= d*x/(d+yi)
yy= h*yi/( d+yi)    !formula (2): dal PO al PV
put xx,yy
next i
put  0, h      !punto di fuga
poly2    nsp/2, 1+4  , get (nsp)

Osserviamo che  h*yi/( d+yi)   è l’inversa di  yi= d*y/(h-y) .  Possiamo allora riscrivere la formula che porta la retta impropria y=+∞   sull’asse limite y=h.   La curva x=x(y), con y>-d,  tocca l’infinito nel punto improprio con direzione  (cos(an), sin(an)).  La sua immagine omologica è definita da:

h=   !altezza curva immagine
d=   !distanza asse limite inverso di equazione y=-d:  y>d
m=  !numero segmenti che approssimano la curva
an= !angolo orario punto improprio rispetto asse y
for i=0  to m-1
yi=h/m*i
y= d*yi/(h-yi)
x=x(y)
put   d*x/(d+y), yi   
next i
put  h*tan(an), h     !punto di fuga
poly2    nsp/2, 1+4  , get (nsp)

Questo caso relativo alla parabola è stato applicato applicato all’oggetto:
omol parabola.gsm

Proviamo ora ad esprimere con questo metodo l’esempio 4, dove si trasforma un ramo di  iperbole con centro nel punto di stazione ed assi paralleli a quelli coordinati.   Consideriamo solo la parte x+, cioè il semipiano di destra:

for i=0  to  m-1
xi=h/m*i
!1.divisioni in parti uguali di  [0,h) sull’asse x
x=p*x/(h-xi)
!2.manda a infinito xi=h, trasla i nodi verso destra: omologia inversa orizzontale
y=b/a*sqr(a^2+x^2)-d
!3.applica la funzione ai nodi dell’asse x traslati
xx= d*x/( d+y)
!4.applica l’omologia verticale alle ascisse
yy= h*y/( d+y)
!5.applica l’omologia verticale alle ordinate
put xx,yy                           
next i
put  d*a/b, h                   !punto di fuga destro
poly2    nsp/2, 1, get (nsp)

Consideriamo adesso il caso generale della funzione y=y(x) definita per x in [-∞, ∞], con asintoti che formano un angolo a1 e a2 rispetto la verticale y (a1 antiorario e  a2 orario):

put  -h*tan(a1), h     !punto di fuga sinistro
for i=1 to 2*m-1
xi=h/m*i-h
x=p*xi *(  (1-sgn(i-m))/i /(h+xi) + (1+sgn(i-m))/(2*m-i) /(h-xi)  ) /2
!manda a infinito xi=-h e xi=h
y=y(x)
xx= d*x/( d+y)
yy= h*y/( d+y)
put xx,yy
next i
put  h*tan(a2), h     !punto di fuga destro
poly2    nsp/2, 1, get (nsp)

Se, come nell’iperbole, la curva è formata di due rami sovrapposti distinti, scomponibili nelle due funzioni y=y1(x) e y=y2(x)   (con y diversa da –d, altrimenti si crea un punto improprio ), la formula diventa:

put  -h*tan(a1), h     !punto di fuga sinistro
for i=1 to 2*m-1
xi=h/m*i-h
x=p*xi *(  (1-sgn(i-m))/i /(h+xi) + (1+sgn(i-m))/(2*m-i) /(h-xi)  ) /2
y=y1(x)
xx= d*x/( d+y)
yy= h*y/( d+y)
put xx,yy
next i
put  h*tan(a2), h     !punto di fuga destro
for i=1 to 2*m-1
xi=h/m*i-h
x=d*xi *(  (1-sgn(i-m))/i /(h+xi) + (1+sgn(i-m))/(2*m-i) /(h-xi)  ) /2
y=y2(x)
xx= d*x/( d+y)
yy= h*y/( d+y)
put xx,yy
next i
poly2    nsp/2, 1+4, get (nsp)

Il caso della iperbole viene trattato nell’oggetto:
omol iperbole.gsm
Conviene qui osservare che se l’omologia trasforma l’intera iperbole, composta di due rami, questi vengono a formare due semiellissi o due semicerchi, che si raccordano in una unica curva conica tagliata dall’asse limite.   In effetti i due rami, nello spazio proiettivo, formano una unica linea chiusa.  In particolare il ramo con y<0 finisce al di sopra dell’asse limite LO e viene specchiato. Dal punto di vista visivo, se ragionassimo in termini di prospettività, la parte situata sopra l’orizzonte rappresenta il semipiano posto dietro l’osservatore, che ha i piedi sul punto di stazione PS, con y<-d.
Sia  l’iperbole rappresentate dalla equazione:   (y-d)^2/by^2 - x^2/ax^2=1, come nell’oggetto gsm, con centro in (0,-d) e semiassi ax,by.
Poiché il centro dell'iperbole è in (0,-d) essa per by=d risulta tangente alla LO,coincidente con l'asse x, infatti 2*by è la distanza tra i vertici.
Affinché l'omologia della iperbole sia un cerchio, occorre che la semidistanza tra le fughe, data da d*ax/by, eguagli la distanza dv tra l'immagine del vertice v=(0,by-d) e la LO.
Tale distanza dv è data da: dv=h-yv con yv=h*(by-d)/by=h-h*d/by (applicando y'= h*y/(d+y) ).
Quindi deve risultare: d*ax/by=h*d/by ovvero ax=h per avere un cerchio omologico.

Per riscrivere una curva trasformata da una omologia circolare in modo analogo, occorre prima conoscere quale diventerà il nuovo intervallo di definizione. La cosa può risultare complessa, perché l’ultimo punto, con ascissa massima, della curva trasformata, non è detto che corrisponda all’ultimo punto della curva originaria. Infatti, a differenza dell'omologia lineare comune, le rette si incurvano, cosa che accade anche per le verticali, per cui il punto finale della curva può risultare piegato verso l'interno.
« Ultima modifica: 16 Agosto 2012, 15:27 da marcomasetti »