Delphi xe7 de Viewport3d ' nin üzerine sphere koydum. Google earth tarzı bir program yapmak istiyorum. Küreye dünya haritasını giydirdim. herşey güzel. yakınlaştırma uzaklaştırma sorun yok. Küreyi fare ile döndürmek istiyorum ancak ya fazla dönüyor ya eksik. Delphi ile google earth tarzı program yazmak icin en iyi tavsiyeyi alabilirmiyim? yada küreyi nasıl hassas ve düzgün döndürebileceğimi... kürenin onmouse olayına şöyle bir kod yazdım ama hesaplama yaptırmak ve her açı için farklı miktarda döndürme gerekiyor sanırım. belki aramızdan bunun kolay yolunu bilen yada hazır kodu olan biri çıkar.
procedure TForm1.daireMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Single; RayPos, RayDir: TVector3D);
begin
tuttu := true;
end;
--------------------------------------------------------
procedure TForm1.daireMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Single; RayPos, RayDir: TVector3D);
begin
tuttu := false;
end;
----------------------------------------------------------
procedure TForm1.daireMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Single; RayPos, RayDir: TVector3D);
begin
if tuttu = true then
BEGIN
if x > mx then // x ekseni büyüyor
begin
mx := x;
daire.rotationangle.X := daire.rotationangle.X+1;
end;
if y > my then // y ekseni büyüyor
begin
my := y;
// daire.rotationangle.y := daire.rotationangle.y+1;
end;
if x < mx then // x ekseni küçülüyor
begin
mx := x;
daire.rotationangle.X := daire.rotationangle.X-1;
end;
if y < my then // y ekseni küçülüyor
begin
my := y;
// daire.rotationangle.y := daire.rotationangle.y-1;
end;
END;
end;
ertank yazdı: 17 Kas 2023 10:29
Merhaba, Fare tıklandığında farenin koordinat değerlerini bir değişken içinde saklamıyorsunuz. Hesaplamalarınız bu yüzden hatalı gibi duruyor.
Öncelikle cevap için tesekkürler. Pek kimsenin cevap vermek istemeyeceği sıradışı bir soruydu.
Farenin kordinatları onmousemove olayında x ile geliyor bende mx ile tutuyorum. Fare hangi eksende kaç pixel hareket ediyorsa o kadar topu o yönde dönderiyrum. Kabaca bi yöntem olduğunun farkındayım. ince hesaplama yapmak icin ekran çözünürlüğü kürenin zoomlama sonrası boyutları, 3d sebebiyle yanlara dogru görüntünün daralması ve daha aklıma gelmeyen bir çok seyi bile hesaplayıp o oranda döndürsem bile sanırım başarılı olamayacağım. Bu sebeple, küreyi fareyle tuttuğum noktaya bi pointer koyup, fareyinin bulunduğu noktaya gelinceye dek ihtiyac duyduğu kadar x y eksenlerinde hareket ettirmenin daha dogru olacağına karar verdim. Ama bunun icinde sphere de kordinat yada kontrol edebileceğim bir işaretleme yöntemi bulamadım. Kürenin tuttuğum noktasinı alamıyorum. Bu yuzden de sormak zorunda kaldım. Daha iyi bir yöntem komponet yada biseyler varmı ?
Merhaba
Zamanında bende ilgilenmiştim bu konuyla nette ufak tefek örnekler bulmuştum fakat tüm yollar OpenGL'ye çıkmıştı.
Sonrasında 2 boyutlu CAD uygulaması geliştirdim. Windows için https://youtu.be/5yhI1uq-3yM devamında pascal kullanarak aynı uygulamayı daha da geliştirerek Androide aktardım. https://youtu.be/gBS0AMrJ50s
Buradan edindiğim tecrübe ile diyebilirim ki, OpenGL'ye hakim olmanız sonrasında Earth benzeri birşeyleri yapabilirsiniz diye düşünüyorum.
Kalk ve işe yarar bir şey yap! Çünkü Allah (c.c.) yeniden başlayanların yardımcısıdır.