Iperboloide

valentino861
Sto cercando di capire questa geometria ma mi risulta abbastanza complessa. Allora un iperboloide è una superficie rigata ossia è possibile generarla facendo ruotare un segmento attorno ad un asse. L'asse sarà poi l'asse dell'iperboloide e la retta deve essere sghemba rispetto all'asse stesso.
L'equazione canonica di un iperboloide è
$x^2/a+y^2/b-z^2/c=1$

Io conosco la posizione del segmento rispetto all'asse z, quindi conosco la minima distanza tra il segmento e l'asse e i due angoli di cui è inclinato il segmento rispetto all'asse x ed y. Come faccio a tornare all'equazione canonica? O meglio come faccio tramite questi dati (r, theta, gamma) plottare con Matlab la forma dell'iperboloide?

Qualche suggerimento? Grazie

Risposte
Quinzio
Ho visto anch'io questo esercizio e ho anche visto che viene proposto senza nessuna teoria dietro, che non è proprio banale, anche se non impossibile da risolvere da soli.
Così cerco di mettere giù i vari passaggi, fornendo un po' di teoria (senza pretese) ai meri calcoli.

In generale si parte da questa condizione:
- l'asse dell'iperboloide coincide con l'asse $z$ e la retta ha $d$, la distanza minima dall'asse $z$ sul piano $xy$ . Altrimenti si fanno i calcoli "come se..." e poi con dolorose operazioni di rototraslazione si calcola l'eq. cartesiana dell'iperboloide voluto.
- La retta generatrice, quella che ruota attorno a $z$ è espressa nei suoi parametri direttori $(r_x, r_y, r_z)$.

A questo punto il paraboloide diventa:
$(x^2+y^2)/(d^2)- (z^2 (r_x^2+r_y^2))/(d^2\ r_z^2)=1$

Per capire da dove salti fuori tutto ciò devi immaginare di ruotare la retta generatrice (come per generare il paraboloide) fino a portare la sua proiezione sul piano $xy$ parallela all'asse $y$.
La retta diventa:
$r':{(x=d),(y=t\sqrt(r_x^2+r_y^2)),(z=t\ r_z ):}$

Prendiamo l'eq del paraboloide (a sezione circolare, come il nostro) $(x^2+y^2)/(a^2)-(z^2)/(c^2)=1$
Ora, se faccio una sezione $z=0$ devo trovare un cerchio con raggio pari alla distanza minima asse z - retta generatrice, quindi $a=d$
e ottengo $(x^2+y^2)/(d^2)-(z^2)/(c^2)=1$.
Ora, se interseco l'iperboloide col piano $x=d$, trovo le due rette (le due rette della sua superficie rigata).
Quindi $x=d$ e le due rette sono:
$(d^2+y^2)/(d^2)-(z^2)/(c^2)=1$
$1+(y^2)/(d^2)-(z^2)/(c^2)=1$
$(y^2)/(d^2)=(z^2)/(c^2)$
cioè:
$z=\pm (y)(c/d)$
ovvero una retta con parametri direttori $(0, d, c)$
che devono essere gli stessi di :
$r':{(x=d),(y=t\sqrt(r_x^2+r_y^2)),(z=t\ r_z ):}$

ossia $c=(d\ r_z)/\sqrt(r_x^2+r_y^2)$

e così abbiamo ritrovato:
$(x^2+y^2)/(d^2)- (z^2 (r_x^2+r_y^2))/(d^2\ r_z^2)=1$

valentino861
Mamma mia grande, grazie.
Ora per i parametri direttori come faccio? Mettiamo che la mia retta abbia r come vettore di minima distanza, disposto lungo l'asse x. Sia poi la retta inclinata di un angolo $\epsilon$ lungo nel piano xy e di un angolo$\ gamma$ nel piano zy. Se considero un punto della retta e considero t come parametro ottengo:

$x=r+tsin(\epsilon)$
$y=tcos(\epsilon)$
$z=t*tg(\gamma)$

quindi come parametri ottengo:

$r_x=sin(\epsilon)$
$r_y=cos(\epsilon)$
$r_z=tg(\gamma)$

e come minima distanza r giusto?



E ancora quindi se faccio $A=(r_x^2+r_y^2)/(d^2*r_z^2)$ ottengo:

$x^2+y^2=d^2(1+A*z^2) $

e scomponendo:

$x=d*sqrt(1+A*z^2)*cos(\theta)$
$y=d*sqrt(1+A*z^2)*sin(\theta)$

giusto?

Quinzio
mmm non sono sicuro su quel che dici....
come dati di partenza dovresti avere l'eq. dell'asse di rotazione e la retta generatrice.
La retta generatrice mi sembra di aver capito che sia quella che hai scritto (anche se "mi puzza"), ma l'asse di rotazione ?

valentino861
l'asse di rotazione l'asse z, la retta generatrice non ho l'equazione ma solamente la minima distanza dall'asse e i due angoli du cui è inclinata.


Infatti non viene. Questo è il listato Matlab su cui sto lavorando:

clc; clear; close all;

%Traccio la retta generatrice
t=linspace(-2,2,40);
epsi=30;
gam=10;
d=2;
x_r=d+t*sin(epsi);
y_r=t*cos(epsi);
z_r=t*tan(gam);
plot3(x_r,y_r,z_r)
grid on
xlabel('x-axis')
ylabel('y-axis')
zlabel('z-axis')
hold on

%parametri direttori della retta
rx=sin(epsi);
ry=cos(epsi);
rz=tan(gam);

A=(rx^2+ry^2)/(d^2*rz^2);

%Iperboloide
phi=linspace(0,2*pi,40);
[t,phi] = meshgrid(t,phi);  
%Parametrizzazione
x_i=d*sqrt(1+A*t.^2).*cos(phi);
y_i=d*sqrt(1+A*t.^2).*sin(phi);
z_i = t;      

mesh(x_i,y_i,z_i)
xlabel('x-axis')
ylabel('y-axis')
zlabel('z-axis')
title('Hyperboloid of One Sheet')
view(160,30)


vorrei ottenere una cosa simile a questa

http://geometryatlas.com/entries/438



Ecco uno schizzo sulla retta generatrice



la forma dell'iperboloide con la retta generatrice in evidenza

Quinzio
Non ho matlab e non lo capisco molto, comunque se hai i due angoli $\epsilon$ e $\gamma$ con distanza minima $d$ (suppongo nel piano $z=0$), l'equazione della retta è:
$x=(d+t) sin \epsilon $
$y=(t) cos \epsilon $
$z=tg \gamma$

valentino861
"Quinzio":
Non ho matlab e non lo capisco molto, comunque se hai i due angoli $\epsilon$ e $\gamma$ con distanza minima $d$ (suppongo nel piano $z=0$), l'equazione della retta è:
$x=(d+t) sin \epsilon $
$y=(t) cos \epsilon $
$z=tg \gamma$


scusa la z anche è moltiplicata per t giusto? quindi è come dicevo io ma non capisco perchè d lo hai messo anche che moltiplica il seno :?

Da quel che vedo qui https://www.matematicamente.it/formulari ... 804072650/

la d sarebbe l'unico offset dall'origine e i parametri di t sono invece il seno ed il coseno di $\epsilon$ e la tangente di $\gamma$

valentino861
Allora faccio un attimo il punto della situazione. Questa è la mia retta generatrice


e quindi:

$x=l*tan(\gamma)$
$y=b+l*sin(\epsilon)$
$z=l*cos(\epsilon)$

quindi i coseni direttori sono:

$r_x=tan(\gamma)$
$r_y=sin(\epsilon)$
$r_z=cos(\epsilon)$

quindi inserendo questi valori nell'equazione dell'iperboloide ottengo l'iperboloide generato dalla retta r giusto? Ora esplicito le coordinate x,y,z dell'iperboloide cosi:

$x^2+y^2=d^2+d^2*z^2*(r_x^2+r_y^2)/(d^2*r_z^2)$

raccolgo $A=(r_x^2+r_y^2)/(d^2*r_z^2)$ ed esplicito le componenti

$x_{hyp}=d*sqrt(1+A*z^2)*cos(\theta)$
$y_{hyp}=d*sqrt(1+A*z^2)*sin(\theta)$
$z_{hyp}=z$


Sto inserendo tutto nel programma ma funziona solamente se considero epsilon=0

clc; clear; close all;

%Traccio la retta generatrice
t=linspace(-2,2,40);
epsi=0*pi/180;
gam=20*pi/180;
d=1;

x_r=t*tan(gam);
y_r=d+t*sin(epsi);
z_r=t*cos(epsi);

plot3(x_r,y_r,z_r,'LineWidth',3)
grid on
hold on

%parametri direttori della retta
rx=tan(gam);
ry=sin(epsi);
rz=cos(epsi);


A=(rx^2+ry^2)/(d^2*rz^2);

%Iperboloide
phi=linspace(0,2*pi,40);
[z,phi] = meshgrid(z_r,phi);  
%Parametrizzazione
x_i=d*sqrt(1+A*z.^2).*cos(phi);
y_i=d*sqrt(1+A*z.^2).*sin(phi);
z_i = z;      

mesh(x_i,y_i,z_i)
xlabel('x-axis')
ylabel('y-axis')
zlabel('z-axis')
title('Hyperboloid of One Sheet')
view(160,30)




altrimenti la retta mi taglia l'iperboloide quindi c'è ancora qualcosa che non va

Quinzio
OK, scusa ho fatto della confusione nell'ultimo post. Ignoralo.

Va benissimo il tuo disegno così ragioniamo su una base unica.
Quella retta ha equazione parametrica:
$r:{(x=t \cos \epsilon),(y = b + t \sin \epsilon),(z = t\ \tan \gamma):}$

La sua distanza dall'asse z la si trova semplicemente proiettando tutto sul piano $xy$.
L'asse z diventa l'origine e la retta diventa
$r':{(x=t \cos \epsilon),(y = b + t \sin \epsilon):}$

La sua distanza dall'origine è: $b/\sqrt(1+(tan \epsilon)^2)$, che è anche la distanza della retta dall'asse z.

Poi non c'è nient'altro. Non ho capito cosa ti deve venire....

L'equazione dell'iperboloide: $(x^2+y^2)-(z^2)/(tan \gamma)^2=b^2/(1+(tan \epsilon)^2) $

valentino861
"Quinzio":
OK, scusa ho fatto della confusione nell'ultimo post. Ignoralo.

Va benissimo il tuo disegno così ragioniamo su una base unica.
Quella retta ha parametri direttori:
$r:{(x=t \cos \epsilon),(y = b + t \sin \epsilon),(z = t\ \tan \gamma):}$

La sua distanza dall'asse z la si trova semplicemente proiettando tutto sul piano $xy$.
L'asse z diventa l'origine e la retta diventa
$r':{(x=t \cos \epsilon),(y = b + t \sin \epsilon):}$

La sua distanza dall'origine è: $b/\sqrt(1+(tan \epsilon)^2)$, che è anche la distanza della retta dall'asse z.

Poi non c'è nient'altro. Non ho capito cosa ti deve venire....

L'equazione dell'iperboloide: $(x^2+y^2)-(z^2)/(tan \gamma)^2=b^2/(1+(tan \epsilon)^2) $


scusa ma la retta generatrice è quella rossa in figura


non sono più giusti i miei di parametri direttori?

Sto cercando di fare un grafico che mostri la retta generatrice e l'iperboloide generato dalla sua rotazione attorno all'asse z per qualsiasi parametro $epsilon$, $gamma$ e $d$ della retta generatrice.

Quinzio
Ahhh.... ho visto adesso che l'asse z è orizzontale....
Spero di non guidare mai in un paese dove si passa col rosso e ci si deve fermare col verde.
Va beh, l'idea è quella, ti basta mettere x, y, z al posto giusto.

valentino861
"Quinzio":
Ahhh.... ho visto adesso che l'asse z è orizzontale....
Spero di non guidare mai in un paese dove si passa col rosso e ci si deve fermare col verde.
Va beh, l'idea è quella, ti basta mettere x, y, z al posto giusto.



ok. Mi potresti dare un aiuto a scrivere quindi l'equazione dell'iperboloide correttamente? Non ho capito come hai fatto a calcolare la distanza con l'origine

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.