| |||||
| Dernière réponse | |
|---|---|
| Sujet : [3D]: formule d'un vecteur tangent en un point d'une sphère? | |
| darkoli | Je comprends rien à ce que vous dites !!!
Bon je vais revenir demain apres un bon dodo et je comprendrais surement mieux. |
| Aperçu |
|---|
| Vue Rapide de la discussion |
|---|
| darkoli | Je comprends rien à ce que vous dites !!!
Bon je vais revenir demain apres un bon dodo et je comprendrais surement mieux. |
| youdontcare | ok :) ! |
| Krueger | 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: |
| youdontcare | 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 ... |
| LeGreg | oui c'est vrai qu'une simple homothetie suffit
comme contre exemple ;) bon faut que je dorme un peu moi.. LEGREG |
| Krueger | 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] |
| LeGreg | 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" |
| youdontcare | 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 :??: |
| LeGreg | bon il se fait un peu tard
j'espere ne pas avoir raconte trop de conneries LEGREG |
| LeGreg |
|
| youdontcare | 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) |
| Krueger | 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. ;)
|
| youdontcare | 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 ? :) |
| Krueger | 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. |
| youdontcare | tu t'en sers pour quoi de la tangente ? :) |
| Krueger | Merci merci! :)
Je vais pourvoir continuer mon programme de lancer de rayon. :D |
| LeGreg |
[edtdd]--Message édité par legreg--[/edtdd] |
| youdontcare | 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/ |
| n0mad | 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] |
| Carbon_14 | 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). |
| Krueger | 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: |




