PDA

Voir la version complète : récuperer la normale d'un point ou d'un polygone



paspas
23/01/2007, 12h03
salut

la question est dans le titre* .* :mrgreen:

sait-on recupere la normal d'un point ou d'un polygone en coffee,

l' ideal serait de la recupere sous forme matricielle mais bon ne soyon pas difficile* :mrgreen:

paspas


ps

y a bien dans les SendModelingCommand() des codes pour les normals mais ce sont des codes pour leurs deplacement ( enfin je pense)* mais je vois pas dans le sdk des codes qui servirait a recupere le vecteur ou la matrice d' une normal

Jean-Laurent
24/01/2007, 09h56
Comme d'habitude je n'ai pas la réponse à ta question, qui comme d'habitude m'intéresse également.
En attendant que quelqu'un de plus compétant réponde en 1 ligne, genre GetPoligonNormal(); :oops:
je propose quand même un truc.

La normale d'un point, ça va être difficile. :mrgreen:
En math en tout cas ça n'existe pas.

Par contre pour la normale d'un polygone, si tu parviens à récupérer les coordonnées de 3 points de ton polygone.
Une petite formule mathématique très simple (et réalisé avec une fonction coffee) permet de trouver la normale sous forme de vecteur ou de matrice.
(Par matrice, je présume que tu parles du vecteur normal et de sa "position").

C'est le produit vectoriel. (5 lignes de codes à tout casser, si ça t'intéresse?)

Sir Gong
24/01/2007, 10h25
C'est marrant, hier j'ai édité ton titre pour en corriger les fautes et tu en as remis une : récuperer prend un r à l'infinitif.
Je note sur un post-it : pas la peine d'éditer les titres de paspas...

Concernant ta problématique qui m'échappe totalement et étant nul en math, il me semble tout de même que la "normale d'un point" c'est un truc qui doit pas trop exister, par définition.

Pour le reste, il te faudrait un Majoul ou un Tengaal...

Jean-Laurent
24/01/2007, 10h49
C'est marrant, hier j'ai édité ton titre pour en corriger les fautes et tu en as remis une.


Une seule? :o :lol:
Quel courage Sir Gong. :prie:

L'idée:

var ob1= doc->FindObject("1");
var ob2= doc->FindObject("2");
var ob3= doc->FindObject("3");

var pos1= ob1->GetPosition();
var pos2= ob2->GetPosition();
var pos3= ob3->GetPosition();

var v1= pos2-pos1;
var v2= pos3-pos1;

var normale = vnorm(vcross(v1,v2));

Seule la dernière ligne est intéressante. Les premières récupèrent juste la position d'objets neutres.
Il suffit que ce soit la position de tes points.

paspas
24/01/2007, 14h20
:oops:* sir gong désolé (suis un gros crétin )

me demandait aussi pourquoi certaines lettres étaient en majuscule ,* merci pour ta patience !


il me semble tout de même que la "normale d'un point" c'est un truc qui doit pas trop exister, par définition
je pense que le noeud xpresso point* la donne ( mais je confond peut etre avec le noeud polygone) EDIT j' ai confondu* :oops:

merci JL c est comme ca que j' imaginait la chose , mais le fait de récupére un vecteur est assez chiant car je sent le gimbal effect qui pointe le bout de sont nez ,

je vait voir* ce que va donner cette méthode une fois placer* dans un matrice

Cf :* http://www.frenchcinema4d.com/forum/index.php?topic=18470.0

ou pire http://www.frenchcinema4d.com/forum/index.php?topic=18463.0

paspas

EDIT 2

et ce qu' est ce vecteur normal de noeud polygone

paspas
25/01/2007, 02h52
re salut


avec ta soliution on arrive a ca si on utilise les matrices


salut

voila mon bricolage http://www.deltazone.org/~fc4d/autres/paspas_Noris.avi
tu prend les DU du NULL point tu glise ton poly dedans

tu rentre les indice des point : les point 2 et 3 sont la diagonal du poly si tu laise distance x sur 50 le point d encrage reste au milieux de la diagonal

la distance y represente la distace qui y aura entre le poly et le point d' encrage

voila le fichier http://www.deltazone.org/~fc4d/c4d/paspas_Noris.c4d

j espere que ca t' aidera

paspas