bonjours,
Je débute en matlab, je veux quelqu'un qui m'aide a construire la médiatrice d'un segment avec des instruction de code. j'ai essayé mais je n'est pas réussi
quelqu'un peux m'aider ?
bonjours,
Je débute en matlab, je veux quelqu'un qui m'aide a construire la médiatrice d'un segment avec des instruction de code. j'ai essayé mais je n'est pas réussi
quelqu'un peux m'aider ?
Quel est exactement ton problème ?
Montre nous ce que tu as essayé de coder (même si c'est faux)
" Line up k1 and k2 to get the Y -axis of the palm coordinate system and make a line through their mid point which is perpendicular to the Y -axis, to determine the origin of the coordinate system "
c'est une étape dans mon projet que je veux la programmer mais j'ai pas trouvé comment le faire.. peux tu m'aider avec des instructions de code![]()
Tu ne sais pas comment calculer le centre d'un segment connaissant les coordonnées de ses deux extrémités ?
Ni calculer un vecteur directeur ?
![]()
Salut!
Qu'est-ce que ça veut dire? La dessiner? Trouver son équation?construire la médiatrice d'un segment
Précise ton problème.
Jean-Marc Blanc
j'ai traçé le segment qui passe par les deux points k1 et k2 avec cette instruction
puis j'ai fixé le milieu de ce segment le point O1
Code : Sélectionner tout - Visualiser dans une fenêtre à part line([xk1 xk2],[yk1 yk2],'Color','g','LineWidth',2,'LineStyle','-');
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 xO1=(xK1+xK2)/2 yO1=(yK1+yK2)/2
maintenant je veux traçer la médiatrice de K1K2 et qui passe de O1
mais je suis bloquer comment le faire. Pouvez vous m'aider avec des instructions de code![]()
construire la médiatrice ça veut dire la dessiner![]()
Bonjour.
Un exemple :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 clear xk1=2;xk2=5;yk1=7;yk2=3; x01=(xk1+xk2)/2;y01=(yk1+yk2)/2; v=rotation([xk2-x01,yk2-y01]',pi/2); figure(1) line([xk1 xk2],[yk1 yk2]) hold on line([x01 x01+v(1)],[y01 y01+v(2)]) axis equalSolution analytique :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 function vecteur=rotation(x,teta) R=[cos(teta) -sin(teta);sin(teta) cos(teta)]; vecteur=R*x;
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 clear xk1=2;xk2=5;yk1=7;yk2=3; x01=(xk1+xk2)/2;y01=(yk1+yk2)/2; a=(yk2-yk1)/(xk2-xk1); b=yk1-a*xk1; b=y01+x01/a; x=0:0.1:10; y=-1/a*x+b; figure(1) line([xk1 xk2],[yk1 yk2]) hold on plot(x,y,'r') axis equal
Merciiiiiii la première solution ça marche bien
la solution analytique n'a pas marcher.
Bnjour.
Quelles sont les coordonnées de ton segment ?la solution analytique n'a pas marcher.
se sont les coordonnées de K1 et K2
xk1=103;xk2=293;yk1=267;yk2=217;
Il faut dimensionner correctement les axes et la droite :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 clear xk1=103;xk2=293;yk1=267;yk2=217; x01=(xk1+xk2)/2;y01=(yk1+yk2)/2; a=(yk2-yk1)/(xk2-xk1); b=yk1-a*xk1; b=y01+x01/a; x=0:0.1:300; y=-1/a*x+b; figure(1) line([xk1 xk2],[yk1 yk2]);hold on plot(x,y,'r') axis([0 300 0 300]);grid;axis equal
Juste pour le plaisir ()... une solution plus géométrique (intersection de deux cercles) ) pour obtenir l'équation de la droite correspondant à la médiatrice du segment :
Le (bref) algorithme :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 x = rand(1,2)*200; y = rand(1,2)*200; tic d = sqrt((x(1)-x(2))^2+(y(1)-y(2))^2); r = .75*d; xr = r*(x-x(1)); yr = r*(y-y(1)); a = -xr(2)/yr(2); b = (xr(2)*xr(2)+yr(2)*yr(2))/(2*yr(2));
- choix arbitraire d'un cercle de rayon au moins supérieur à la moitié du segment
- translation du point 1 au point (0,0)
- normalisation à 1 des rayons
- simplification des équations
Je développerai si besoin
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 % x²-2xxo+xo² + y²-2yyo+yo² = r² (1) % x²-2xxo+xo² + y²-2yyo+yo² = r² (2) % x²+y² = 1 (1) % x²+y² - 2xxo+xo²-2yyo+yo² = 1 (2) % 1 -2xxo+xo² - 2yyo+yo² = 1 (2) % y = -(xo/yo)x + (xo2+yo2)/(2yo) (3)
La méthode de phryte reste néanmoins plus rapide
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55 x = rand(1,2)*200; y = rand(1,2)*200; tic d = sqrt((x(1)-x(2))^2+(y(1)-y(2))^2); r = .75*d; xr = r*(x-x(1)); yr = r*(y-y(1)); a = -xr(2)/yr(2); b = (xr(2)*xr(2)+yr(2)*yr(2))/(2*yr(2)); toc figure subplot(121) plot(x,y,'r*'); hold on th = linspace(0,2*pi,100); plot(r*cos(th)+x(1),r*sin(th)+y(1),'m-',r*cos(th)+x(2),r*sin(th)+y(2),'m-'); xm = linspace(xr(1),xr(2),10); ym = a*xm+b; xm = xm/r+x(1); ym = ym/r+y(1); % y = linspace(y(1),y(2),10) dot([xm(1)-xm(end) ym(1)-ym(end)],[x(1)-x(2) y(1)-y(2)]) plot(xm,ym,'g-'); axis equal tight subplot(122) plot(x,y,'r*'); hold on th = linspace(0,2*pi,100); plot(r*cos(th)+x(1),r*sin(th)+y(1),'m-',r*cos(th)+x(2),r*sin(th)+y(2),'m-'); tic x01=(x(1)+x(2))/2;y01=(y(1)+y(2))/2; a=(y(2)-y(1))/(x(2)-x(1)); b=y01+x01/a; toc xm = linspace(x(1),x(2),10); ym=-1/a*xm+b; hold on plot(xm,ym,'r') axis equal tight dot([xm(1)-xm(end) ym(1)-ym(end)],[x(1)-x(2) y(1)-y(2)])
merciiiiiiiiiiiiiii bien![]()
Partager