Polar koordinat sisteminde yarı çapını ve açısını bildiğim bir noktanın orijine uzaklığını x,y olarak bulmak istiyorum. Programdaki amaç kaç adet nokta olursa olsun bunların x ve y cinsinden uzaklıklarının string gride yazılması. Mesela kullanıcı yarı çap 20, nokta adedi 10 yazdı. Program 360'ı 10'a bölerek 36 dereceyi buluyor ve ilk olarak 36 derecenin, sonra da 36'nın üzerine 36 ekleyerek 360'a kadar hesaplamayı yapıyor. Buraya kadar tamam. Sorun yok.
Taa ki açı 180 ya da 360 (ya da tekrar 0)'a gelene kadar. 20mm yarı çapında bir değer için;
180 derece 1,08..... mm
360 derece 2,16......mm
sapma yapıyor. Bu da hassas ölçümler için büyük sıkıntı bilirsiniz. Halbuki sinüs 0, 180 ve 360 sıfıra eşit. Kullandığım kod bloğu aşagıda. Nerede yanlış yapıyorum?
Kod: Tümünü seç
derece := ilkderece; // ilk derece değişkeni 360'ın nokta sayısına bölümünden çıkan açı.
for sinusdongu := 1 to StrToInt(Edit1.Text) do
begin
StringGrid1.Cells[2, sinusdongu]:= FloatToStr(StrToFloat(Edit3.Text)*Sin(pi*(derece)/180)); //degtorad ile aynı.
derece := ilkderece + derece;
end;