TI/Programowanie dla Fizyków Medycznych:Kolokwium2: Różnice pomiędzy wersjami
Z Brain-wiki
(Utworzono nową stronę "==Kolokwium 2== 19.01.2018 Zdefiniuj klasę opisującą opisującą wektor magnetyzacji woksela w trzech wymiarach. '''Parametry nieobowiązkowe konstruktora:''' Bezwz...") |
|||
(Nie pokazano 8 pośrednich wersji utworzonych przez tego samego użytkownika) | |||
Linia 1: | Linia 1: | ||
+ | powrót: [https://brain.fuw.edu.pl/edu/index.php/%22Programowanie_dla_Fizyk%C3%B3w_Medycznych%22 Programowanie dla fizyków medycznych] | ||
==Kolokwium 2== | ==Kolokwium 2== | ||
19.01.2018 | 19.01.2018 | ||
− | Zdefiniuj klasę | + | Zdefiniuj klasę opisującą wektor magnetyzacji woksela w trzech wymiarach. |
− | '''Parametry nieobowiązkowe konstruktora:''' Bezwzględna wartość wektora magnetyzacji <math>M</math>, domyślna wartość to | + | '''Parametry nieobowiązkowe konstruktora:''' Bezwzględna wartość wektora magnetyzacji <math>M</math>, domyślna wartość to 20; kąt <math>\theta</math> odchylenia od pionu, domyślna wartość to 0; kąt <math>\phi</math> obrócenia wokół osi Z, domyślna wartość to 0. (czyli wektor magnetyzacji we współrzędnych sferycznych) |
'''Pozostałe metody:''' | '''Pozostałe metody:''' | ||
#Metoda bez parametrów zwracająca współrzędne magnetyzacji w układzie sferycznym <math>M, \theta, \phi</math>. | #Metoda bez parametrów zwracająca współrzędne magnetyzacji w układzie sferycznym <math>M, \theta, \phi</math>. | ||
− | #Metoda bez parametrów zwracająca współrzędne magnetyzacji w układzie kartezjańskim, <math> | + | #Metoda bez parametrów zwracająca współrzędne magnetyzacji w układzie kartezjańskim, <math>M_x=M \sin \theta \cos \phi, M_y=M \sin \theta \sin \phi, M_z=M \cos \theta</math>. |
#Metoda zwiększająca kąt <math>\theta</math> o wartość <math>\alpha</math> podaną jako parametr (w stopniach), jednocześnie ustawiająca kąt <math>\phi</math> na zero. | #Metoda zwiększająca kąt <math>\theta</math> o wartość <math>\alpha</math> podaną jako parametr (w stopniach), jednocześnie ustawiająca kąt <math>\phi</math> na zero. | ||
#Metoda zwiększająca kąt <math>\phi</math> o wartość podaną jako parametr. | #Metoda zwiększająca kąt <math>\phi</math> o wartość podaną jako parametr. | ||
#Metoda rysująca (wykorzystując cv2) na macierzy tła przekazanej jako parametr rzut wektora magnetyzacji (w żółtym kolorze) o współrzędnych <math>(M_x, M_z)</math>, przyjmując jako swój początek współrzędne na obrazie przekazane jako drugi parametr. | #Metoda rysująca (wykorzystując cv2) na macierzy tła przekazanej jako parametr rzut wektora magnetyzacji (w żółtym kolorze) o współrzędnych <math>(M_x, M_z)</math>, przyjmując jako swój początek współrzędne na obrazie przekazane jako drugi parametr. | ||
− | #Metoda magiczna, która pozwala wykonać polecenie m3=m1+m2, gdzie m1, m2 i m3 byłyby obiektami wektora magnetyzacji. | + | #Metoda magiczna, która pozwala wykonać polecenie m3=m1+m2, gdzie m1, m2 i m3 byłyby obiektami wektora magnetyzacji. Warto pamiętać, że dodawanie do siebie dwóch wektorów najprościej dokonuje się we współrzędnych kartezjańskich, z których można wrócić do współrzędnych sferycznych wykorzystując wzory <math>M=\sqrt{M_x^2+M_y^2+M_z^2}, \phi=\rm{arctg}\frac {M_y}{M_x}, \theta=\arccos\frac {M_z} {M}</math> |
#Metoda magiczna pozwalająca wypisać w eleganckiej formie współrzędne wektora magnetyzacji poleceniem print(m), gdzie m jest obiektem wektora magnetyzacji. | #Metoda magiczna pozwalająca wypisać w eleganckiej formie współrzędne wektora magnetyzacji poleceniem print(m), gdzie m jest obiektem wektora magnetyzacji. | ||
'''Program:''' | '''Program:''' | ||
− | *Stworzyć trzy obiekty zdefiniowanej klasy. | + | *Stworzyć trzy obiekty zdefiniowanej klasy. Wyświetlić je obok siebie na wspólnym granatowym tle. |
− | *W nieskończonej pętli obracać | + | *W nieskończonej pętli obracać wektory magnetyzacji w każdym kroku zmieniając kąt <math>\phi</math> o 10 stopni pierwszego wektora, o kąt 11 stopni - drugiego, o kąt 12 stopni - trzeciego i po każdym obrocie wyświetlać na nowo. Przed kolejnym krokiem pętli odczekać 100 milisekund. |
− | *Pod | + | *Pod spodem powinien być wyświetlany wektor magnetyzacji będący sumą trzech poprzednich. |
*Jeśli użytkownik naciśnie Escape, program powinien zakończyć działanie, zamykając wszystkie okna graficzne. | *Jeśli użytkownik naciśnie Escape, program powinien zakończyć działanie, zamykając wszystkie okna graficzne. | ||
− | *Naciśnięcie "+" lub "-" powinno zwiększyć lub zmniejszyć kąt \theta o 10 stopni, synchronizując na nowo wektory do kąta \phi =0 | + | *Naciśnięcie "+" lub "-" powinno zwiększyć lub zmniejszyć kąt <math>\theta</math> o 10 stopni, synchronizując na nowo wektory do kąta <math>\phi =0</math> |
Aktualna wersja na dzień 14:17, 22 sty 2018
powrót: Programowanie dla fizyków medycznych
Kolokwium 2
19.01.2018
Zdefiniuj klasę opisującą wektor magnetyzacji woksela w trzech wymiarach.
Parametry nieobowiązkowe konstruktora: Bezwzględna wartość wektora magnetyzacji [math]M[/math], domyślna wartość to 20; kąt [math]\theta[/math] odchylenia od pionu, domyślna wartość to 0; kąt [math]\phi[/math] obrócenia wokół osi Z, domyślna wartość to 0. (czyli wektor magnetyzacji we współrzędnych sferycznych)
Pozostałe metody:
- Metoda bez parametrów zwracająca współrzędne magnetyzacji w układzie sferycznym [math]M, \theta, \phi[/math].
- Metoda bez parametrów zwracająca współrzędne magnetyzacji w układzie kartezjańskim, [math]M_x=M \sin \theta \cos \phi, M_y=M \sin \theta \sin \phi, M_z=M \cos \theta[/math].
- Metoda zwiększająca kąt [math]\theta[/math] o wartość [math]\alpha[/math] podaną jako parametr (w stopniach), jednocześnie ustawiająca kąt [math]\phi[/math] na zero.
- Metoda zwiększająca kąt [math]\phi[/math] o wartość podaną jako parametr.
- Metoda rysująca (wykorzystując cv2) na macierzy tła przekazanej jako parametr rzut wektora magnetyzacji (w żółtym kolorze) o współrzędnych [math](M_x, M_z)[/math], przyjmując jako swój początek współrzędne na obrazie przekazane jako drugi parametr.
- Metoda magiczna, która pozwala wykonać polecenie m3=m1+m2, gdzie m1, m2 i m3 byłyby obiektami wektora magnetyzacji. Warto pamiętać, że dodawanie do siebie dwóch wektorów najprościej dokonuje się we współrzędnych kartezjańskich, z których można wrócić do współrzędnych sferycznych wykorzystując wzory [math]M=\sqrt{M_x^2+M_y^2+M_z^2}, \phi=\rm{arctg}\frac {M_y}{M_x}, \theta=\arccos\frac {M_z} {M}[/math]
- Metoda magiczna pozwalająca wypisać w eleganckiej formie współrzędne wektora magnetyzacji poleceniem print(m), gdzie m jest obiektem wektora magnetyzacji.
Program:
- Stworzyć trzy obiekty zdefiniowanej klasy. Wyświetlić je obok siebie na wspólnym granatowym tle.
- W nieskończonej pętli obracać wektory magnetyzacji w każdym kroku zmieniając kąt [math]\phi[/math] o 10 stopni pierwszego wektora, o kąt 11 stopni - drugiego, o kąt 12 stopni - trzeciego i po każdym obrocie wyświetlać na nowo. Przed kolejnym krokiem pętli odczekać 100 milisekund.
- Pod spodem powinien być wyświetlany wektor magnetyzacji będący sumą trzech poprzednich.
- Jeśli użytkownik naciśnie Escape, program powinien zakończyć działanie, zamykając wszystkie okna graficzne.
- Naciśnięcie "+" lub "-" powinno zwiększyć lub zmniejszyć kąt [math]\theta[/math] o 10 stopni, synchronizując na nowo wektory do kąta [math]\phi =0[/math]