Aller au contenu

Vecteur perpendiculaire à... "2 points"


Bred

Messages recommandés

Bonjour,

 

Je sais qu'un vecteur normal à un plan est perpendiculaire à ce plan, donc défini par 3 points...

 

Sous AutoCAD, j'essaye de trouver le calcul permettant avec 2 points de calculer le vecteur perpendiculaire à ces 2 points, en sachant que c'est le plan du triangle formé par les Z (SCG) et ces 2 points qui doit "basculer"...

Comme je ne pense pas être clair, un truc que je fais à mon bureau pour essayer de trouver : J'ai une feuille A4 verticale un côté 29.7 posé sur le bureau, les 2 points sont la diagonale, je tourne ma feuille autour du premier point pour que le coin posé sur le bureau s'aligne au second point : je cherche comment trouver le vecteur représenté par le côté perpendiculaire au côté qui est maintenant aligné (lg 21cm) entre le 1er point et le second.

 

En 2D, pas de problème c'est de la trigo, mais en 3D je dois louper un truc...

 

Merci d'avance pour votre aide.

Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...

Lien vers le commentaire
Partager sur d’autres sites

... j'ai oublier de rajouter qu'en 2D la fonction est, si je ne me trompe pas.

 

(polar p1 (+ (angle p1 p2) (/ pi 2)) 1)

 

... mais en 3D....

Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...

Lien vers le commentaire
Partager sur d’autres sites

J'ai utilisé les fonctions de (gile) pour bricoler un truc, mais je ne comprends pas pourquoi ça ne fonctionne pas.

 

(setq p1 (getpoint) p2 (getpoint p1))
; vecteur p1>p2
(setq vec (mapcar '- p2 p1))
;;; axe de rotation
(setq axis (polar p1 (+ (angle p1 p2) (/ pi 2)) 1))


(gc:Rotate vec axis (/ pi 2))

 

Avec

 

;; gc:Rotate
;; Retourne le vecteur après rotation sur l'axe défini par le vecteur axis
;;
;; Arguments
;; vec : le vecteur devant subir la rotation
;; axis : l'axe de rotation (vecteur)
;; ang : l'angle en radians
(defun gc:rotate (vec axis ang)
 (trans
   (mxv
     (list (list (cos ang) (- (sin ang)) 0.)
    (list (sin ang) (cos ang) 0.)
    '(0. 0. 1.)
     )
     (trans vec 0 axis)
   )
   axis
   0
 )
)


;; TRP
;; Transpose une matrice -Doug Wilson-
;;
;; Argument
;; m : une matrice
(defun trp (m) (apply 'mapcar (cons 'list m)))

;; MXV
;; Applique une matrice de transformation à un vecteur -Vladimir Nesterovsky-
;;
;; Arguments-
;; m : une matrice
;; v : un vecteur
(defun mxv (m v)
 (mapcar (function (lambda (r) (apply '+ (mapcar '* r v))))
  m
 )
)

Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...

Lien vers le commentaire
Partager sur d’autres sites

Salut,

 

Je ne comprends pas ce que tu veux faire.

J'ai une feuille A4 verticale un côté 29.7 posé sur le bureau, les 2 points sont la diagonale,

Jusque là, OK soit deux points et le plan vertical qui les contient. Mais nomme les points ( A et B ) en les situant sur la diagonale, ça sera plus facile pour la suite

 

je tourne ma feuille autour du premier point pour que le coin posé sur le bureau s'aligne au second point

C'est là que je ne pige plus. Quel est le premier point ? Quel est le second ? Et, comme deux points définissent un droite, un point est toujours aligné avec un autre.

 

je cherche comment trouver le vecteur représenté par le côté perpendiculaire au côté qui est maintenant aligné (lg 21cm) entre le 1er point et le second.

Là je suis perdu, on retombe dans la même problématique : il existe une infinité de vecteurs perpendiculaires à un autre (tous ceux contenus dans le plan perpendiculaire au premier).

 

Un petit dessin serait bienvenu. Théoriquement deux vues orthogonales (face et dessus) judicieusement choisies devraient suffire à décrire de manière non équivoque ton problème (c'est le principe de la géométrie descriptive)

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Lien vers le commentaire
Partager sur d’autres sites

Vecteurs_perpendiculaires.png

Soit le segment AB appartenant à un plan vertical, il est représenté sur l'épure de gauche de façon à être parallèle à la ligne de terre* pour apparaître en vrai grandeur sur la projection verticale (A'B').

Sur l'épure de droite tous les vecteurs contenus dans le plan (P) perpendiculaire à AB (dont les traces sur les plans de projections sont en cyan) sont perpendiculaires au segment AB. Les segments BC, BD et BE figurent des exemples de ces vecteurs, BC appartenant au même plan vertical que AB, BD à un plan horizontal, BE est quelconque.

 

*LT, la droite figurant la charnière entre les plans de projections vertical (au dessus) et horizontal (en dessous).

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

 

Non, merci mais je ne suis en effet pas clair.

 

Je connais v1, A et B, je cherche v2.

A et B étant sur n'importe quel plan autour de v1 qui a pour vecteur (0 0 1)

 

 

n177.jpg

Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...

Lien vers le commentaire
Partager sur d’autres sites

Le produit vectoriel de deux vecteurs non colinéaires renvoie le vecteur perpendiculaire au plan défini par ces deux vecteurs.

Si on fait le produit vectoriel du vecteur AB et du vecteur v1 (0 0 1) on obtient le vecteur perpendiculaire au plan vertical contenant AB (axe). Si ensuite on fait le produit vectoriel de ce vecteur avec le vecteur AB on obtient le vecteur v2.

 

;; gc:CrossProduct
;; Retourne le produit vectoriel (vecteur) de deux vecteurs
;; Arguments
;; v1, v2 : deux vecteurs
(defun gc:CrossProduct (v1 v2)
 (list	(- (* (cadr v1) (caddr v2)) (* (caddr v1) (cadr v2)))
(- (* (caddr v1) (car v2)) (* (car v1) (caddr v2)))
(- (* (car v1) (cadr v2)) (* (cadr v1) (car v2)))
 )
)

(setq a	  (getpoint)
     b	  (getpoint a)
     vab (mapcar '- b a)
     v1  '(0. 0. 1.)
     axe (gc:CrossProduct vab v1)
     v2  (gc:CrossProduct axe vab)
)
(entmake (list (cons 0 "LINE") (cons 10 a) (cons 11 (mapcar '+ a v2))))

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Lien vers le commentaire
Partager sur d’autres sites

Ah, oui, merci ! je pressentais que c'était une multiplication de vecteur mais je n'ai pas cette logique du tout.

 

Sauf que je suis ecoeuré car ça ne résous en pas mon problème, ce n'est pas entièrement la solution :

 

Si j'ai une polyligne horizontal du point A dans le sens de B donc qui a bien une normal (0 0 1), le fait de changer sa normal en le rendant perpendiculaire à A B ne fait pas ce que je voudrais...

Je voudrais que la polyligne s'aligne à A B dans son sens de longueur, mais en fait elle "bascule"...

 

polilygne de '(0 0 0) à '(4 0 0) avec normal de (0 0 1) (polyligne ou bloc au point d'insert 0 et normal (0 0 1))

point A (0 0 0) et B (2 0 2)

la normal calculé donne (-4.0 0.0 4.0) mais bascule la polygne en la laissant sur le plan XY... donc il faut que je fasse une rotation de l'angle "3D" en +.

Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...

Lien vers le commentaire
Partager sur d’autres sites

Re,

 

OK, j'ai bricoler mon bonheur e nrécuperant l'axe du plan pour faire une rotation 3 sans toucher directement à la normal. Merci !

 

 

(setq p1 (getpoint))
(setq p2 (getpoint p1))
(setq vla-sel (vlax-ename->vla-object (car (entsel "\n Choix de l'objet :"))))
(setq ang-2D (angle p1 p2))
(setq vecteur-p1-p2 (mapcar '- p2 p1))

(setq norm-plan.p1p2 (gc:CrossProduct '(0. 0. 1.)  vecteur-p1-p2))

(vla-rotate3d vla-sel (vlax-3d-point '(0 0 0)) (vlax-3d-point norm-plan.p1p2) (- (asin (/ (- (caddr p2) (caddr p1)) (distance p1 p2)))))

Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...

Lien vers le commentaire
Partager sur d’autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer. Politique de confidentialité