piątek, 30 listopada 2012

Króliczka Julka.

Wczoraj trafił do mnie na przechowanie kolejny królik. Jest to młodziutka króliczka Julka. Została ona ocalona od pożarcia prawdopodobnie przez jakiegoś gada. Jest jeszcze nieco wystraszona ale zaczyna już buszować po pokoju. Prawdopodobnie będzie ze mną przez najbliższe 2 tygodnie.
Odpoczynek

Julka zwiedza pokój :)


niedziela, 18 listopada 2012

Zabawa z widmami cz3


W wolnych chwilach bawię się nadal skryptem do widm. Nieco go zmodyfikowałem. Zwiększyłem rozmiar rysunku oraz popiołem bazę danych NIST. Wygląda to nieźle :) Pozostaje do zrobienia formularz do generowania zapytań do baz danych i myślę, że będzie gotowe. BTW, dawno nie zajmowałem się PHP i wykorzystanie biblioteki PDO znakomicie ułatwia podpięcie bazy do skryptu. Wygenerowałem też taki oto rysunek.

Widma gazów szlachetnych oraz dwóch metali.
Sam skrypt ma postać:

function adjust($color,$factor,$max){
    $intensity_max=$max;
    $gamma=0.6;
    if ($color==0) return 0; else
        return round($intensity_max*pow($color*$factor,$gamma));
}
function lambda2RGB($lambda,$int_max){
    if (($lambda>=380)&&($lambda<=439)) {$R=-($lambda-440)/60;$G=0;$B=1.0;} else
    if (($lambda>=440)&&($lambda<=489)) {$R=0;$G=($lambda-440)/50;$B=1.0;} else
    if (($lambda>=490)&&($lambda<=509)) {$R=0;$G=1;$B=-($lambda-510)/20;} else
    if (($lambda>=510)&&($lambda<=579)) {$R=($lambda-510)/70;$G=1;$B=0;} else
    if (($lambda>=580)&&($lambda<=644)) {$R=1;$G=-($lambda-645)/65;$B=0;} else
    if (($lambda>=645)&&($lambda<=780)) {$R=1;$G=0;$B=0;} else {$R=0;$G=0;$B=0;}

    if (($lambda>=380)&&($lambda<=419)) {$intensity=0.3+0.7*($lambda-380)/40;}
    if (($lambda>=420)&&($lambda<=700)) {$intensity=1;}
    if (($lambda>=701)&&($lambda<=780)) {$intensity=0.3+0.7*(780-$lambda)/80;}
    
    $R=adjust($R,$intensity,$int_max);
    $G=adjust($G,$intensity,$int_max);
    $B=adjust($B,$intensity,$int_max);

    return array ($R,$G,$B);
}
header("Content-type: image/png");
$width=1000; $height=80;
$img = imagecreatetruecolor($width, $height);
 try
   {
      $pdo = new PDO('mysql:host=localhost;dbname=spectra', 'root', '');
      $pdo -> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
      $query = $pdo -> query('SELECT Truncate((linia/10),0) as linia,intensity from nist where (linia<=7800) and (linia>=3800) and (symbol="Na") and (ion=1) order by linia;');
      foreach($query as $row){$lines[]=$row['linia'];$lintensity[]=$row['intensity'];}
      $query -> closeCursor();
   }
   catch(PDOException $e)
   {
      echo 'Połączenie nie mogło zostać utworzone: ' . $e->getMessage();
   }
$max=max($lintensity);
$min=min($lintensity);
$k=0;
foreach($lines as $i){
$relative_intensity=230/($max-$min)*$lintensity[$k]+(25-230*$min/($max-$min));
$x=(-$width/400)*$i+(780/400)*$width;
list($a,$b,$c)=lambda2RGB($i,$relative_intensity);
$color = imagecolorallocate($img, $a, $b, $c);
imageline($img,$x,0,$x,$height,$color);
$k++;
}
imagepng($img);
imagedestroy($img)
?>

wtorek, 13 listopada 2012

Solar Eclipse 14 Nov 2012 Australia

Dzisiaj nad ranem czasu australijskiego miało miejsce całkowite zaćmienie Słońca. Jedno z najbardziej spektakularnych i rzadkich zjawisk jakie można obserwować. Dzięki firmie Panasonic możliwe było oglądanie tego wspaniałego zjawiska na żywo przez internet. Przypomina to nieco lizanie cukierka przez szybę ale to zawsze coś. Warunki pogodowe w Australii nie były rewelacyjne. Zaćmienie miało miejsce dość nisko nad horyzontem i chmury znad Morza Koralowego groziły, że nie będzie możliwe zaobserwowanie tego zjawiska. Na szczęście tuż przed całkowitą fazą nieco się przetarło. Pozwoliłem sobie nagrać clip z tego wydarzenia.

Mój kolega Łukasz ( http://intotheshadowofthemoon.wordpress.com/) oglądał to zjawisko na żywo. Niestety pogoda mu nie dopisała. Szkoda. Łukasz, na następne pojedziemy razem :) No właśnie, na następne ciekawe zaćmienie wybieram na na 100% będzie ono za niecałe 5 lat w USA.  Jeżeli chodzi o inne zaćmienia to następne ciekawe będzie dopiero 20 marca 2015 r. Jednak będzie ono widoczne z bardzo dziwnych miejsc i w zasadzie nie ma po co tam jechać. W Polsce tego dnia doświadczymy zaćmienia częściowego.



PS: Dostępna jest też wersja HD:


poniedziałek, 12 listopada 2012

Zabawa z widmami cz2

Pora na udoskonalenie skryptu. Do zdobienia są dwie rzeczy: odwrócenie kolorów oraz uwzględnienie intensywności linii. Odwrócenie kolorów to czystko kosmetyczna operacja mająca na celu umieszczenie niebieskiej i filetowej części widma z prawej strony. Druga sprawa, intensywność, jest bardziej złożona. Jak wiadomo intensywność linii widmowych nie jest taka sama. Trzeba to uwzględnić w trakcie rysowania widma. Procedura okazała się banalna i skrypt ma teraz postać:

//calculations
function adjust($color,$factor,$int_max){
    $intensity_max=$int_max;
    $gamma=0.6;
    if ($color==0) return 0; else
        return round($intensity_max*pow($color*$factor,$gamma));
}
function lambda2RGB($lambda,$int_max){
    if (($lambda>=380)&&($lambda<=439)) {$R=-($lambda-440)/60;$G=0;$B=1.0;} else
    if (($lambda>=440)&&($lambda<=489)) {$R=0;$G=($lambda-440)/50;$B=1.0;} else
    if (($lambda>=490)&&($lambda<=509)) {$R=0;$G=1;$B=-($lambda-510)/20;} else
    if (($lambda>=510)&&($lambda<=579)) {$R=($lambda-510)/70;$G=1;$B=0;} else
    if (($lambda>=580)&&($lambda<=644)) {$R=1;$G=-($lambda-645)/65;$B=0;} else
    if (($lambda>=645)&&($lambda<=780)) {$R=1;$G=0;$B=0;} else {$R=0;$G=0;$B=0;}
    if (($lambda>=380)&&($lambda<=419)) {$intensity=0.3+0.7*($lambda-380)/40;}
    if (($lambda>=420)&&($lambda<=700)) {$intensity=1;}
    if (($lambda>=701)&&($lambda<=780)) {$intensity=0.3+0.7*(780-$lambda)/80;}
    $R=adjust($R,$intensity,$int_max);
    $G=adjust($G,$intensity,$int_max);
    $B=adjust($B,$intensity,$int_max);
    return array ($R,$G,$B);
}
// file type
header("Content-type: image/png");
// create image
$img = imagecreatetruecolor(800, 50);
// draw line
$lines=array(4046.563,4339.223,4347.494,4358.328,5460.735,5769.598,5790.663,7081.90);
$intensity=array(400,60,100,1000,500,50,60,25);
$max=max($intensity);
$min=min($intensity);
$k=0;
foreach($lines as $i){
$relative_intensity=230/($max-$min)*$intensity[$k]+(25-230*$min/($max-$min));
$i=$i/10;
$x=800-2*$i+760;
list($a,$b,$c)=lambda2RGB($i,$relative_intensity);
$color = imagecolorallocate($img, $a, $b, $c);
imageline($img,$x,0,$x,50,$color);
$k++;
}
//display image
imagepng($img);
// release image from memory
imagedestroy($img)
?>

Wynik działania dla helu i neonu:

He I/He II

Ne I/Ne II
W części 3 wykorzystam już bazę danych.

niedziela, 11 listopada 2012

Śmieszne królicze zdarzenie.

Dzisiaj zdarzyła się śmieszna sytuacja z Uszami. Pracuję sobie na komputerze analizując i planując wypad do czarnobylskiej zony i kątem oka dostrzegam, że Uszy weszły do gabinetu. Nie zdziwiło mnie to zbytnio bo robi to często. Po dłuższym czasie słyszę, że Uszy coś zapamiętale gryzą. Rany - jakąś moją literaturę! Rozglądam się po pokoju. Szukam. Uszu nie ma! Choroba gdzie on jest, cały czas słyszę chrupanie papieru. Przypadkowo spoglądam na dolną półkę regału i ...


Mam cię zbóju. Ale cwaniak. Inteligent jeden. Jak ty żeś tam wlazł? A tu zbój po dokonaniu dzieła zniszczeń.









środa, 7 listopada 2012

Zabawa z widmami cz1

Coś mnie naszło na odświeżenie wiedzy z fizyki oraz programowania w PHP. Tylko jak to połączyć? Mam! W bardzo starych zasobach odkopałem bazę danych linii widmowych wszystkich (no prawie) pierwiastków. Baza jest w MySQL czyli jak do PHP to jak znalazł. Wstępnie postanowiłem jej nie wykorzystywać tylko wpisać wybrane linie w samym skrypcie PHP. Okazało się, że jest pewien problem. Otóż w bazie danych podana jest długość fali danych linii w nm. Jak to przeliczyć na RGB? Okazuje się, że dokładne odwzorowanie kolorów z długości fali na przestrzeń RGB nie jest możliwe w 100%. Wynika to oczywiście z zakresu przestrzeni barwnej. Ale nic. Gwardia umiera ale się nie poddaje. Udało mi się znaleźć przybliżony algorytm konwertujący długość fali na RGB.
Jest o bardzo prosty i składa się z dwóch funkcji (listing w PHP):

{
    $intensity_max=255;
    $gamma=0.8;
    if ($color==0) return 0; else
        return round($intensity_max*pow($color*$factor,$gamma));
}
function lambda2RGB($lambda){
    if (($lambda>=380)&&($lambda<=439)) {$R=-($lambda-440)/60;$G=0;$B=1.0;} else
    if (($lambda>=440)&&($lambda<=489)) {$R=0;$G=($lambda-440)/50;$B=1.0;} else
    if (($lambda>=490)&&($lambda<=509)) {$R=0;$G=1;$B=-($lambda-510)/20;} else
    if (($lambda>=510)&&($lambda<=579)) {$R=($lambda-510)/70;$G=1;$B=0;} else
    if (($lambda>=580)&&($lambda<=644)) {$R=1;$G=-($lambda-645)/65;$B=0;} else
    if (($lambda>=645)&&($lambda<=780)) {$R=1;$G=0;$B=0;} else {$R=0;$G=0;$B=0;}
    if (($lambda>=380)&&($lambda<=419)) {$intensity=0.3+0.7*($lambda-380)/40;}
    if (($lambda>=420)&&($lambda<=700)) {$intensity=1;}
    if (($lambda>=701)&&($lambda<=780)) {$intensity=0.3+0.7*(780-$lambda)/80;}
    $R=adjust($R,$intensity);
    $G=adjust($G,$intensity);
    $B=adjust($B,$intensity);
    return array ($R,$G,$B);
}


Dalej to już z górki.  Skrypt generujący widmo ciągłe światła białego.

//calculations
function adjust($color,$factor){
    $intensity_max=255;
    $gamma=0.8;
    if ($color==0) return 0; else
        return round($intensity_max*pow($color*$factor,$gamma));
}
function lambda2RGB($lambda){
    if (($lambda>=380)&&($lambda<=439)) {$R=-($lambda-440)/60;$G=0;$B=1.0;} else
    if (($lambda>=440)&&($lambda<=489)) {$R=0;$G=($lambda-440)/50;$B=1.0;} else
    if (($lambda>=490)&&($lambda<=509)) {$R=0;$G=1;$B=-($lambda-510)/20;} else
    if (($lambda>=510)&&($lambda<=579)) {$R=($lambda-510)/70;$G=1;$B=0;} else
    if (($lambda>=580)&&($lambda<=644)) {$R=1;$G=-($lambda-645)/65;$B=0;} else
    if (($lambda>=645)&&($lambda<=780)) {$R=1;$G=0;$B=0;} else   {$R=0;$G=0;$B=0;}
    if (($lambda>=380)&&($lambda<=419)) {$intensity=0.3+0.7*($lambda-380)/40;}
    if (($lambda>=420)&&($lambda<=700)) {$intensity=1;}
    if (($lambda>=701)&&($lambda<=780)) {$intensity=0.3+0.7*(780-$lambda)/80;}
    $R=adjust($R,$intensity);
    $G=adjust($G,$intensity);
    $B=adjust($B,$intensity);
    return array ($R,$G,$B);
}
// file type
header("Content-type: image/png");
// create image
$img = imagecreatetruecolor(800, 50);
// set colors
// draw line
for($i=380;$i<=780;$i++){
$x=2*$i-760;
list($a,$b,$c)=lambda2RGB($i);
$color = imagecolorallocate($img, $a, $b, $c);
imageline($img,$x,0,$x,50,$color);
imageline($img,$x+1,0,$x+1,50,$color);
}
// display image
imagepng($img);
// release image from memory
imagedestroy($img)
?>


Wynik działania:


Działa! Czas przetestować na liniach widmowych. Na warsztat idzie wodór (seria Blamera) i rtęć. Drobna modyfikacja skryptu (dla np. Hg):
// draw line
$lines=array(3983.931,4046.563,    4339.223,4347.494,4358.328,5128.442,5204.768,5425.253,5460.735,5677.105,5769.598,790.663,5871.279,5888.939,    6146.435,6149.475,7081.90,7346.508);
foreach($lines as $i){
$i=$i/10;
$x=2*$i-760;
list($a,$b,$c)=lambda2RGB($i);
$color = imagecolorallocate($img, $a, $b, $c);
//imageline($img,$x,0,$x,50,$color);
imageline($img,$x+1,0,$x+1,50,$color);
}

I wyniki są bardzo obiecujące.

Wodór (seria Blamera)

Rtęć Hg I i Hg II
Na początek zostaje uwzględnienie intensywności linii ale o tym w części 2.



wtorek, 6 listopada 2012

Klementyna w DS :)

Pamiętacie Klementynę - króliczkę, która u mnie przebywała? Otóż znalazła ona szczęśliwie dom stały i nowych opiekunów w Łodzi. Do towarzystwa ma nawet kolegę Bazyla, który jest też barankiem. Bardzo dziękuję Pani Aneto!

Klementyna w nowym domu.



Zajęcie na długie jesienne wieczory - spektroskopia gwiazd.

Jak wiadomo analiza widma dowolnej gwiazdy niesie ze sobą masę istotnych informacji o niej samej. Możemy określić skład chemiczny lub temperaturę (wykorzystując metodę EW czy prawo Wiena) co pozwala na określenie mocy promieniowania i wyznaczenia chociażby promienia gwiazdy. W przypadku badania widm całych galaktyk możemy określić "red shift" linii widmowych a tym samym wyznaczyć z prawa Hubble'a odległość. Do tej pory takie badania dostępne były raczej dla profesjonalistów niemniej wraz z pojawieniem się filtru Star Analyser, będącego w zasadzie siatką dyfrakcyjną o 100 liniach na mm, analiza widmowa stała się możliwa dla amatorów. Zajęcie na jesień jak znalazł. Udało mi się zdobyć surowe widma wykonane w Hiszpanii przez tamtejszego astroamatora. Troszkę posiedziałem i udało mi się przeanalizować widmo Syriusza. Profil widmowy gwiazdy wygląda:


Widoczne są silne linie absorpcyjne wodoru z serii Blaamera co nie jest dziwne jako, że Syriusz jest gwiazdą typu A0. Syntetyczne widmo Syriusza również ujawnia te linie:


Analiza widmowa jest ciekawa ale... jest czasochłonna. Sama kalibracja widm zabiera sporo czasu, nie  wspominając już o analizie chemicznego składu gwiazdy. Nie jest to zabawa tania. Filtr Star Analyser kosztuje ok. 100 euro (w Polsce ok. 500zł) no i program do tej zabawy (RSpec) kosztuje 99$, choć tu można wykorzystać darmowego VSpec'a ale jest dość upierdliwy w obsłudze. Reasumując rzecz fajna ale nie na moją kieszeń. Pozostanę przy analizie gotowych zdjęć albo znajdę sponsora. Hehehe ;)


niedziela, 4 listopada 2012

Sesja 20121102 - Tranzyt Io.

Postanowiłem po zabawach z SCT odkurzyć moją poczciwą tubę SW. Jako cel wybrałem Jowisza. Udało mi się złapać samą końcówkę tranzytu Io przez tarczę Jowisza. Na zdjęciu na godz. 16 wg tarczy planety. Blisko godz. 12 załapał się też drugi satelita giganta - Callisto.


Później z braku lepszego zajęcia pobawiłem się ponownie Księżycem. Efektem jest mozaika:


Nie ukrywam, że Jowisz i Księżyc już mi się przejadają. Najwyższy czas coś pokombinować z wyjazdem poza miasto. Ale listopad raczej nie słynie z dobrej pogody dla amatorów nocnego nieba. Pozostaje cieszyć się tym co jest i uzbroić w cierpliwość.

Może by tak samemu spróbować?

Dowiedziałem się, że mój kolega, również astro amator udał się na wyprawę do Australii  w celu podziwiania całkowitego zaćmienia Słońca, które będzie tam widoczne 14 listopada (blog z relacją http://intotheshadowofthemoon.wordpress.com/ ).


Co ciekawe Łukasz zorganizował sobie tą wyprawę sam. Bez pośrednictwa jakiś biur podróży czy innych krwiopijców. Nie ukrywam, że tym samym nadepnął mi nieco na ambicję. Szybko usiadłem i przeanalizował możliwe zaćmienia Słońca w sensownej odległości od Polski. BINGO! 21 sierpnia 2017 roku, a więc za niecałe 5 lat pas całkowitego zaćmienia będzie przebiegał przez prawie całe Stany Zjednoczone. Jest to bliżej niż Australia i wydaje się być w moim zasięgu. Czasu jest dużo ale jestem mocno zdecydowany tam się wybrać. Pozostaje jeszcze kwestia, czy będę w stanie ze względów zdrowotnych no i czy do tego terminu dożyje. Zobaczymy. Strona o tym zaćmieniu: http://www.eclipse2017.org/ECLIPSE2017_main.HTM. Mapa przebiegu zaćmienia:

Mapa pasa zaćmienia https://maps.google.com/maps?q=http://www.calsky.com/kml/eclipsemap.kmz%3Fobs%3D85860459350897%26tdt%3D2457987

Z mapy wynika, że wybór miejsc jest duży. Ja szykuję się na Clarksville, Tennessee. Jak będzie okazja to może zahaczę o Montanę.

Następne zaćmienie będzie 2 sierpnia 2027 roku. Miejsca to Gibraltar, północna Algieria i Tunezja. Blisko. Ale myślę, że nie dociągnę do tej daty.


Następne całkowite zaćmienie widoczne w Polsce to 7 październik 2135. Troszkę późno :(



czwartek, 1 listopada 2012

Sesja 20121031 - księżycowy relaks.

Po kilku dniach niepogody i zimy jesienią nieco się rozpogodziło. Postanowiłem wykorzystać ten fakt aby przetestować SCT 6" pożyczony od Piotra. Księżyc nie był w rewelacyjnej fazie do testów (zaledwie 2 dni po pełni) niemniej z nudów wytaszczyłem część sprzętu na taras. Tak jak się spodziewałem silny blask naszego satelity utrudniał zrobienie ciekawych zdjęć. Również nie najlepszy seeing nie poprawiał sytuacji. Testy w sumie się udały jednak nadal nie mam rzetelnego porównania SCT z moim Newtonem. W czasie obserwacji towarzyszył mi teściu, który zwykle ma bardzo, ale to bardzo dziwne pomysły. Ostatni hit to wykorzystanie zasilacza laptopa lub żelazka turystycznego jako grzałki zapobiegającej parowaniu menisku w SCT. Ciekawe jak to niby mam wsadzić do tuby? Nie wspomnę już o samobójczym pomyśle używania napięcia 230V gdy wszystko wokół jest mokre od rosy. Nie ma co. Ma człowiek pomysły.



Dodatkowo zavikowałem Jowisza. Ale nie jestem zadowolony z efektu.