Bonjour ,
j'ai un souci avec l'utilisation de la fonction createBasisTransform3d pour son utilisation avec 3 plans.
Avec un seul plan, c'est ok voir le script.
Avec 3 plans, ca ne fonctionne pas correctement voir le script
A priori c'est transformPoint3d que j'utilise mal. Une idée de ce qui ne va pas ?

Imagingall



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
56
57
58
clc
clear all
fprintf(' avec 1 plan\n ');
Plane1dans1=[0 0 0 1 0 0 0 1 0];
Plane2dans1 = [5 50 500 1 0 0 0 1 0];
Adans1=[3 8 2];
% Adans1=[5 50 500]
% Adans1=[0 0 0]
Tform1= createBasisTransform3d(Plane1dans1, Plane2dans1);
Adans2 = transformPoint3d(Adans1, Tform1);
 
% Coord de plane 1 dans plane 2
% Plane1dans2= -Plane2dans1  % ok ? 
Plane1dans2= [-5 -50 -500 1 0 0 0 1 0];
Plane2dans2 = [0 0 0 1 0 0 0 1 0];
 
Tform2 = createBasisTransform3d(Plane2dans2, Plane1dans2);
Adans2dans1 = transformPoint3d(Adans2, Tform2);
 
 
fprintf(' le point Adans1 dans le repere 1 : \n'); disp(Adans1);
fprintf(' dans le repere 2 : \n'); disp(Adans2);
fprintf('et reprojete dans le repere 1 \n'); disp(Adans2dans1);
fprintf(' identique au départ : Adans1==Adans2dans1 ->>>>>>>>>> ');
disp(Adans1==Adans2dans1);
 
fprintf('-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*');
fprintf(' \n avec 3 plans\n ');
 
pS=[120.3934  140.9860  495.6667         0    0.1516    0.9884   -0.3200   -0.9365    0.1436];
pC=[  120.3934  140.9860  495.6667         0   -0.2296    0.9733   -0.9543   0.2909    0.0686]   ;
pT=[  120.3934  140.9860  495.6667         0   -0.9809   -0.1943   -0.9934 0.0222   -0.1122];
Plane2dans1=[pS;pT;pC];
 
Tform1= createBasisTransform3d('global',Plane2dans1);
Adans21 = transformPoint3d(Adans1, Tform1(:,:,1));
Adans22 = transformPoint3d(Adans1, Tform1(:,:,2));
Adans23 = transformPoint3d(Adans1, Tform1(:,:,2));
 
Adans2=[Adans21(1),Adans21(2),Adans23(3)];
 
pS2=[pS(1:3)*-1,pS(4:9)];
pC2=[pC(1:3)*-1,pC(4:9)];
pT2=[pT(1:3)*-1,pT(4:9)];
Plane2dans1=[pS2;pT2;pC2];
 
Tform2 = createBasisTransform3d('global', Plane2dans1);
 
Adans211 = transformPoint3d(Adans2, Tform2(:,:,1));
Adans212 = transformPoint3d(Adans2, Tform2(:,:,2));
Adans213 = transformPoint3d(Adans2, Tform2(:,:,2));
Adans2dans1=[Adans211(1),Adans212(2),Adans213(3)];
 
fprintf(' le point Adans1 dans le repere 1 : \n'); disp(Adans1);
fprintf(' dans le repere 2 : \n'); disp(Adans2);
fprintf('et reprojete dans le repere 1 \n'); disp(Adans2dans1);
fprintf(' Identique au départ ??? : Adans1==Adans2dans1      ->>>>>>>>>>');
disp(Adans1==Adans2dans1);