Vektör, doğrultusu ve yönü olan cebirsel yapılardır. Vektörün bir başlangıç noktası, yönü ve uzunluğu vardır. Vektörel büyüklük de yönü ve doğrultusu olan büyüklüklere verilen isimdir. Aşağıdaki resimde (x,y,z) koordinat eksenindeki bir vektörü görebiliriz. Bu vektör O, Orjin (0,0,0) noktasından belirli bir P (x,y,z) noktasına doğru uzanmaktadır. P noktasının x,y ve z eksenlerinde birer karşılığı vardır. Aşağıdaki şekilde O noktasından P noktasına uzanan vektörün yerine, ayrı ayrı x, y ve z koordinatları üzerinde 3 farklı vektör ile de aynı vektörel değeri elde edebiliriz.
Windows Phone 7 Accelerometer de bize yukarıdaki koordinat ekseninde de görüleceği üzere x, y ve z değerlerini sağlayacaktır. Biz de asırlar önce Pisagor 'un bizler için sunmuş olduğu teoremi kullanarak A vektörü olarak isimlendireceğimiz vektörün büyüklük değerini elde edebilir olacağız.
Windows Phone 7 uygulamamız için Microsoft.Devices.Sensors kütüphanesi altında bulunan Accelerometer sınıfını kullanacağız. Şimdi işe VS 2010 / File / New Project / Silverlight for Windows Phone Template / Windows Phone Application seçerek yeni bir windows phone uygulaması açarak kodlarımızı yazmaya başlayalım.
Ana ekranımızdaki content panel içerisine, aşağıdaki xaml kodlarında olduğu gibi bir TextBlock nesnesi ekliyoruz.
XAML ('txt' adında TextBlock nesnesi)
<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
<TextBlock Name="txt"
HorizontalAlignment="Center"
VerticalAlignment="Center" />
Grid>
C# (Accelerometer start ediliyor)
public MainPage() {
InitializeComponent();
Accelerometer acc = new Accelerometer();
acc.ReadingChanged += OnAccelerometerReadingChanged;
try {
acc.Start();
}
catch (Exception ex) {
txt.Text = ex.Message;
}
}
C#
private delegate void SetTextBlockTextDelegate(TextBlock txt, string text);
private void SetTextBlockText(TextBlock txt, string text) {
txt.Text = text;
}
C#
private void OnAccelerometerReadingChanged(object sender,
AccelerometerReadingEventArgs args) {
string str = String.Format(
"X = {0:F2}\n" +
"Y = {1:F2}\n" +
"Z = {2:F2}\n\n" +
"Vektörel Büyüklük = {3:F2}\n\n" + "{4}",
args.X,
args.Y,
args.Z,
Math.Sqrt(args.X * args.X + args.Y * args.Y + args.Z * args.Z),
args.Timestamp);
if (txt.CheckAccess()) {
SetTextBlockText(txt, str);
}
else {
txt.Dispatcher.BeginInvoke(new SetTextBlockTextDelegate(SetTextBlockText),txt, str);
}
}
F5 ile uygulamamızı çalıştırdığımızda Emulator üzerinde karşımıza aşağıdaki gibi bir ekran görüntüsü çıkacaktır. Windows Phone 7 Emulator ile akselerometre değerleri her zaman (x,y,z) 0,0,-1 değerlerini üretecektir.
Gökhan Manduz - gokhanmanduz@hotmail.com, gmanduz@gmail.com
Hiç yorum yok:
Yorum Gönder