Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1604 connectés 

  FORUM HardWare.fr
  Programmation

  [3D]: formule d'un vecteur tangent en un point d'une sphère?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[3D]: formule d'un vecteur tangent en un point d'une sphère?

n°87742
Krueger
tout salaire demande dutravail
Posté le 10-01-2002 à 10:40:45  profilanswer
 

Désolé de poster ça ici, mais les maths et moi ça fait 2 et je n'ai réussi à rien trouver sur le net. Trop souvent des sites qui traitent d'autres problèmes, mais pas une trace de la formule que je cherche! :(
 
Alors si quelqu'un pouvait me la donner ça me dépannerait énormément. Mieux, un site rempli de formules géométriques spatiales pour les sphères et/ou les courbes spatiales que je n'ai pas réussi à trouver. :) :/
 
Je parle bien d'un vecteur et non d'un plan. Merci d'avance! :hello:


---------------
"Colère et intolérance sont les ennemis d'une bonne compréhension." Gandhi
mood
Publicité
Posté le 10-01-2002 à 10:40:45  profilanswer
 

n°87777
Carbon_14
Posté le 10-01-2002 à 11:33:16  profilanswer
 

D'après mes souvenirs d'ancien matheux d'il y a 25 ans, des vecteurs tangeants à une sphère, y en a une infinité qui remplit justement un plan. Si on ne fixe pas une contrainte de plus, y a des tonnes (infinie) de solutions.  
 
Faudrait être un peu plus précis sur le besoin :).
 
Si le vecteur tangeant doit être dans un certain plan qui coupe la sphère (passant par le centre), il y en a deux (de sens opposés en fait).

n°87778
n0mad
inscrit au XXe siècle
Posté le 10-01-2002 à 11:33:43  profilanswer
 

La solution n'est pas un vecteur mais un plan donc il faut 2 vecteurs pour le définir à moins que je n'aie pas compris ce que tu voulais.
 
-- Merde grillaid :D --

 

[edtdd]--Message édité par n0mad--[/edtdd]


---------------
Pipiru piru piru pipiru pi
n°87812
youdontcar​e
Posté le 10-01-2002 à 12:46:22  profilanswer
 

c'est pour faire du bump ? y'a toute la doc sur le site de nvidia :D
 
pour les formules & co, tu peux commencer du côté de la faq de comp.graphics.algorithms : http://www.faqs.org/faqs/graphics/algorithms-faq/

n°87946
LeGreg
Posté le 10-01-2002 à 17:57:03  profilanswer
 

Krueger a écrit a écrit :

 
Je parle bien d'un vecteur et non d'un plan. Merci d'avance! :hello:  




 
et bien il suffit de prendre un vecteur du plan
defini par la normale a la sphere.
 
Comment calculer la normale a la sphere?
ultra simple dans le cas d'une sphere:
tu as ton point, tu as le centre de la sphere,
tu relies les deux et tu as ton vecteur normal
(que tu normalises derriere pour avoir une vraie normale).
 
Bon maintenant comment avoir un vecteur du plan tangent
a la sphere?
par exemple si ton vecteur normal c'est n = (nx, ny, nz)
tu perturbes legerement, v = (nx+1, ny, nz)
tu prends le produit scalaire: k = n.v = nx(nx+1)+  ny *ny + nz * nz = nx + 1
et alors tu trouves un vecteur tangent en faisant la projection
du vecteur perturbe sur le plan tangent:
t = v - k * n;
ca ne marche que si n est unitaire et si v n'est pas colineaire  
a n. si v est colineaire a n alors n = (1, 0, 0) ou (-1, 0, 0)
et tu peux prendre t = (0,1,0)
NB : et tu normalises derriere si tu veux un vecteur unitaire
t' = t/sqrt(t.t);
 
tu peux en trouver un deuxieme si tu fais
t2 = t'^n; (produit vectoriel)
 
et en prime (n, t', t2) represente une base orthonormee locale a ton point.
 
A+
LEGREG

 

[edtdd]--Message édité par legreg--[/edtdd]

n°88025
Krueger
tout salaire demande dutravail
Posté le 10-01-2002 à 21:16:50  profilanswer
 

Merci merci! :)
Je vais pourvoir continuer mon programme de lancer de rayon. :D


---------------
"Colère et intolérance sont les ennemis d'une bonne compréhension." Gandhi
n°88034
youdontcar​e
Posté le 10-01-2002 à 21:32:01  profilanswer
 

tu t'en sers pour quoi de la tangente ? :)

n°88136
Krueger
tout salaire demande dutravail
Posté le 10-01-2002 à 23:53:05  profilanswer
 

Pour calculer la normale en un point d'intersection. Le calcule deux tangentes du point dans le repère canonique pour ensuite les transformer vers le repère universel et en déduire la normale.


---------------
"Colère et intolérance sont les ennemis d'une bonne compréhension." Gandhi
n°88155
youdontcar​e
Posté le 11-01-2002 à 01:20:31  profilanswer
 

je comprends toujours pas - si tu as un point sur une sphère tu peux retrouver la normale directement, comme le disait legreg. :??:  
 
ok, je rephrase - tu t'en sers pour quoi de la normale ? :)

n°88174
Krueger
tout salaire demande dutravail
Posté le 11-01-2002 à 02:02:08  profilanswer
 

C'est que les transformations géométriques ne conservent pas les normales, mais les tangentes oui. Après il y a une histoire de repère canonique / repère universel, mais bon je ne voudrais pas trop m'attarder dessus. ;)
 

Citation :

ok, je rephrase - tu t'en sers pour quoi de la normale ? :)


Ben à plein de choses. :p Calculs de rayons réfléchis/réfractés et de luminosité notamment.


---------------
"Colère et intolérance sont les ennemis d'une bonne compréhension." Gandhi
mood
Publicité
Posté le 11-01-2002 à 02:02:08  profilanswer
 

n°88175
youdontcar​e
Posté le 11-01-2002 à 02:12:48  profilanswer
 

sisi, attarde-toi un peu, car je ne comprends toujours pas :)
 
si tu veux conserver ta normale, il suffit de transformer le point + le point formé du (point + la normale), de recalculer le vecteur et de normaliser - et encore, c'est si tu fais des trucs bizarres (shear & co). pour des changements de repères, tu peux te contenter te transformer ta normale par la matrice 3x3 issue de la 4x4 (ie gicler la partie translation).
 
tu veux pas mettre un bout d'algo ? voir un peu dans quel cadre s'incrit le calcul des tangentes ... j'ai bô chercher, je vois vraiment pas (mais ok, je n'ai jamais fait de raytracer :D)

n°88188
LeGreg
Posté le 11-01-2002 à 02:56:48  profilanswer
 

youdontcare a écrit a écrit :

 
si tu veux conserver ta normale, il suffit de transformer le point + le point formé du (point + la normale), de recalculer le vecteur et de normaliser - et encore, c'est si tu fais des trucs bizarres (shear & co). pour des changements de repères, tu peux te contenter te transformer ta normale par la matrice 3x3 issue de la 4x4 (ie gicler la partie translation).




 
bon ce que je pense que krueger voulait expliquer
c'est que par exemple tu as un surface S,
un point P sur cette surface et (t1, t2) un systeme
de deux vecteurs tangents a cette surface, n un vecteur normal.
Par la transformation S->S', P->P', (t1,t2)->(t'1, t'2), n->n'.
 
Ce qui est conserve :
S' est la surface transformee, P' appartient
a S'. (t'1, t'2) est toujours un systeme de deux
vecteurs tangents a S' en P'. (en supposant
que la transformation conserve des proprietes
de continuite locale..)
Par contre n' n'est pas (sauf cas particulier)
un vecteur normal a la surface S' en P'.
Pas de probleme car on a n" = t'1^t'2
qui est un vecteur orthogonal aux deux tangentes
donc une normale a la surface S' en P'
apres une petite normalisation.
 
Reste a definir a partir de la transformation
qui transforme un point en un autre point,
la transformation qui transforme un vecteur
en ce point en son vecteur transforme.
Mais pas trop difficile si la transformation
est lineaire => basee sur une matrice.
 
LEGREG

n°88189
LeGreg
Posté le 11-01-2002 à 02:59:08  profilanswer
 

bon il se fait un peu tard
j'espere ne pas avoir raconte trop de conneries
 
LEGREG

n°88193
youdontcar​e
Posté le 11-01-2002 à 03:20:27  profilanswer
 

legreg > yep il se fait tard, et j'ai du mal à voir pourquoi on ne pourrait pas conserver la normale. pourquoi la normale issue de deux vecteurs transformés serait moins déformée que le vecteur normale lui-même ? ou que la normale recalculée à partir du point transformé et du (point + la normale) transformé puis normalisé.
 
de plus il parle d'une sphère, un objet plutôt trivial dans le raytracing.
donc :??:

n°88285
LeGreg
Posté le 11-01-2002 à 10:42:40  profilanswer
 

bon ben imagine une transformation non lineaire:
P(x,y,z) -> P'(x, y, z + sin(x))
 
en gros ca transforme S une surface plane horizontale (cas le plus simple) en surface S' avec des vagues.
tu remarques qu'a l'exception de certains points
la direction de ta normale a change (la normale de la surface a change, je ne parle pas de la transformee de la normale).
 
Or si tu te places dans le referentiel du point P0(x0, y0, z0) de S et de son transforme P'(x'0,y'0,z'0) de S' et que tu consideres la transformation "locale linearisee" P(x, y, z) -> P(x, y, z + sin(x0) + sin'(x0)*x).
Si tu appliques cette transformation au vecteur normal n(0,0,1)
de S en P0 tu retombes sur le meme vecteur n(0,0,1).
 
Donc bug si tu te bases sur cette information pour calculer la nouvelle normale car elle sera systematiquement dans
la mauvaise direction.
 
A+
LEGREG
ps: desole si mes explications ne sont pas tres "mathematiques"
notamment pour les histoires de "locale linearise"

n°88299
Krueger
tout salaire demande dutravail
Posté le 11-01-2002 à 11:14:04  profilanswer
 

Essayons avec un contre-exemple:
Considère un losange carré centré à l'origine dont ses sommets sont situés sur les axes du repère. Prends un de ses points, (a,a) par exemple. La normale en ce point est (a,a).
Maintenant applique une homothétie de rapport rx selon l'axe des abscisses. Ton point devient alors (rx * a,a). Si tu prends le vecteur (rx * a,a), représente-il la normale en ce point? Pour le savoir prends rx très grand. Tu verras que ce n'est pas du tout le cas. Fais-toi un petit dessin à côté. ;)

 

[edtdd]--Message édité par Krueger--[/edtdd]


---------------
"Colère et intolérance sont les ennemis d'une bonne compréhension." Gandhi
n°88301
LeGreg
Posté le 11-01-2002 à 11:16:31  profilanswer
 

oui c'est vrai qu'une simple homothetie suffit
comme contre exemple ;)
 
bon faut que je dorme un peu moi..
 
LEGREG

n°88382
youdontcar​e
Posté le 11-01-2002 à 15:20:46  profilanswer
 

je vois un peu mieux. effectivement si tu fais un scale sur ta sphère, c'est un moyen de recalculer la normale. j'avais fait ça pour la normale à un patch bézier, dérivation u et v en chaque point puis produit vectoriel pour la normale.  
 
mais qu'est-ce que ça vient faire dans un raytracer ? à moins que tes sphères soient scalées dans tous les sens, ok ...

n°88497
Krueger
tout salaire demande dutravail
Posté le 11-01-2002 à 20:55:12  profilanswer
 

Ben mes objets sont définis à partir de transformations d'objets canoniques, c'est à dire des objets très simples à manipuler (par exemple une sphère de rayon 1 centrée à l'origine). Donc pour un objet donné je fais la plupart de mes calculs dans son repère canonique pour ensuite projeter le tout dans le repère universel et avoir les résultats recherchés.
Et puis oui, je souhaite pouvoir représenter des patates. :jap:


---------------
"Colère et intolérance sont les ennemis d'une bonne compréhension." Gandhi
n°88519
youdontcar​e
Posté le 11-01-2002 à 22:20:16  profilanswer
 

ok :) !

n°88522
darkoli
Le Petit Dinosaure Bleu
Posté le 11-01-2002 à 22:30:29  profilanswer
 

Je comprends rien à ce que vous dites !!!
 
Bon je vais revenir demain apres un bon dodo et je comprendrais surement mieux.


---------------
Le site de l'année :D (XHTML 1.0 strict) : http://darkoli.free.fr/index.html
mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation

  [3D]: formule d'un vecteur tangent en un point d'une sphère?

 

Sujets relatifs
[algo] Comment trouver la direction a partir d'un vecteur?[c++] vecteur de pointeurs vers deux types différents...
[java] convertir un vecteur en un tableau a 2 dim[Win] Peut-on placer le curseur de la souris en un point donnée?
[c++] vecteur dynamique ?c++ sous windows : afficher un point
Open GL : Translater le point d'originePossibilité de créer un power point exécutable?
[openGL] afficher plusieurs point de vue[Vb] Comment faire un point EXE
Plus de sujets relatifs à : [3D]: formule d'un vecteur tangent en un point d'une sphère?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR