[Simnibs-discuss] transformation matrix usage

Haren, S.L. van (Stefan, Student M-TM) s.l.vanharen at student.utwente.nl
Fri Feb 10 11:09:09 CET 2023


Hi Oula,

Thanks for the quick response, unfortunately I am yet to learn how to program with python and can therefore not really use that function, but I was able to use a rotation matrix to recalculate the input and therefore also acquire a desired rotation.

for i=1:length(xrotation)
    a = zrotation(i)*pi/180;
    b = yrotation(i)*pi/180;
    y = xrotation(i)*pi/180;
    
    rotationmatrix = [cos(a)*cos(b)...
        (cos(a)*sin(b)*sin(y))-(sin(a)*cos(y))...
        (cos(a)*sin(b)*cos(y))+(sin(a)*sin(y)),...
        sin(a)*cos(b)...
        (sin(a)*sin(b)*sin(y))+(cos(a)*cos(y))...
        (sin(a)*sin(b)*cos(y))-(cos(a)*sin(y)),...
        -sin(b)...
        cos(b)*sin(y)...
        cos(b)*cos(y)];
    
    corretion = [-1 1 1, 1 1 1, 1 1 -1];
    corrected = rotationmatrix.*corretion;
    
    simnibsmatrix = zeros(4,4);
    simnibsmatrix(1,1:3) = corrected(1,1:3);
    simnibsmatrix(2,1:3) = corrected(4:6);
    simnibsmatrix(3,1:3) = corrected(7:9);
    simnibsmatrix(1,4) = centrecoords(1);
    simnibsmatrix(2,4) = centrecoords(2);
    simnibsmatrix(3,4) = centrecoords(3);
    simnibsmatrix(4,1:4) = [0 0 0 1];

    s.poslist{1, 1}.pos(i).matsimnibs = simnibsmatrix;
end

Best,
Stefan

-----Original Message-----
From: Oula Puonti <oulap at drcmr.dk> 
Sent: Wednesday, 8 February 2023 16:34
To: Haren, S.L. van (Stefan, Student M-TM) <s.l.vanharen at student.utwente.nl>; simnibs-discuss at drcmr.dk
Subject: Re: [Simnibs-discuss] transformation matrix usage

Hi Stefan,

Have a look at this function, which defines matsimnibs based on a center coordinate and a "y-direction" pointing away from the coil
handle:

https://eur02.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fsimnibs%2Fsimnibs%2Fblob%2Fefd0e3df2ed74a68238055ffeaca594f721a584e%2Fsimnibs%2Fmesh_tools%2Fmesh_io.py%23L1840&data=05%7C01%7Cs.l.vanharen%40student.utwente.nl%7C8a6691e0474941d58e1408db09e9d6db%7C723246a1c3f543c5acdc43adb404ac4d%7C0%7C0%7C638114672165951293%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=StzFw7nF9kcjOXszsw496b3nI%2BuIUQdrbAI89dIUM2g%3D&reserved=0

The z-direction is defined to be normal to the nodes on the skin so the coil should be more or less tangential to the scalp.

Best,
Oula


On Mon, 2023-02-06 at 12:48 +0000, Haren, S.L. van (Stefan, Student M-
TM) wrote:
> Hello all,
>  
> I am still quite new to using SimNIBS, and I am struggling with one of 
> the attributes in the Position format. I am using the transformation 
> matrix from the pos.matsimnibs function for more accurately 
> positioning my TMS coil over the scalp of a subject. I know the 
> coordinates of my coil and I can fill them in into the matrix and get 
> the correct centre of the coil. However, I cannot figure out how to 
> rotate the coil/coordinate system using the transformation matrix. I 
> am unable to get it to be perpendicular to the scalp or change 
> direction altogether.
>  
> Hopefully someone can help me with my struggles, Stefan
>  
>  
> _______________________________________________
> Simnibs-discuss mailing list
> Simnibs-discuss at drcmr.dk
> https://eur02.safelinks.protection.outlook.com/?url=https%3A%2F%2Fmail
> man.drcmr.dk%2Fmailman%2Flistinfo%2Fsimnibs-discuss&data=05%7C01%7Cs.l
> .vanharen%40student.utwente.nl%7C8a6691e0474941d58e1408db09e9d6db%7C72
> 3246a1c3f543c5acdc43adb404ac4d%7C0%7C0%7C638114672165951293%7CUnknown%
> 7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJX
> VCI6Mn0%3D%7C3000%7C%7C%7C&sdata=%2FQTqpbxGpi6h3U859t1I7okH89bNxkJ8fEc
> TPy9hZpw%3D&reserved=0



More information about the Simnibs-discuss mailing list