METOT

package com.example.geridenkestirme;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.TextView;

public class MainActivity extends AppCompatActivity {

Button btn;
EditText etXA;
EditText etYA;
EditText etXB;
EditText etYB;
EditText etXC;
EditText etYC;
EditText etKB;
EditText etKC;
EditText etKA;
TextView twXK;
TextView twYK;

// Verilenler:
// XA, YA, XB, YB, XC, YC; A, B, C bilinen sabit noktaların kartezyen koordinatları
// KB, KC, KA; K bilinmeyen noktadan, A B C bilinen sabit noktalara doğrultu ölçüleri
// İstenenler:
// XK, YK; K bilinmeyen noktanın kartezyen koordinatları

double XA;
double YA;
double XB;
double YB;
double XC;
double YC;
double KB;
double KC;
double KA;
double XK;
double YK;

double ACI1;
double ACI2;
double ACI3;
double ACI4;
double ACI5;
double ACI6;
double ACI7;

double FarkYAB;
double FarkXAB;

double FarkYCB;
double FarkXCB;

double tBA;
double SBApayda;
double SBA;

double tBC;
double SBCpayda;
double SBC;

double ACItoplam;
double Sonuc1pay;
double Sonuc1;
double Birincieleman;
double Ikincieleman;

double Sonuc2;

double tBK;
double SBK;

double pay;
double payda;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    btn= (Button) findViewById(R.id.button);
    etXA= (EditText) findViewById(R.id.editTextXA);
    etYA= (EditText) findViewById(R.id.editTextYA);
    etXB= (EditText) findViewById(R.id.editTextXB);
    etYB= (EditText) findViewById(R.id.editTextYB);
    etXC= (EditText) findViewById(R.id.editTextXC);
    etYC= (EditText) findViewById(R.id.editTextYC);
    etKB= (EditText) findViewById(R.id.editTextKB);
    etKC= (EditText) findViewById(R.id.editTextKC);
    etKA= (EditText) findViewById(R.id.editTextKA);
    twXK= (TextView) findViewById(R.id.textViewXK);
    twYK= (TextView) findViewById(R.id.textViewYK);

    btn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            XA = Double.valueOf(etXA.getText().toString());
            YA = Double.valueOf(etYA.getText().toString());
            XB = Double.valueOf(etXB.getText().toString());
            YB = Double.valueOf(etYB.getText().toString());
            XC = Double.valueOf(etXC.getText().toString());
            YC = Double.valueOf(etYC.getText().toString());
            KB = Double.valueOf(etKB.getText().toString());
            KC = Double.valueOf(etKC.getText().toString());
            KA = Double.valueOf(etKA.getText().toString());

            //doğrultular GRAD'dan RADYAN'a dönüştürülüyor.

            KA = KA*2*3.14159265358979/400;
            KB = KB*2*3.14159265358979/400;
            KC = KC*2*3.14159265358979/400;

            //ALCI1 = α ; ACI2 = β

            ACI1 = KB - KA ;
            if (ACI1<0.0){
                ACI1 = ACI1 + 2*3.14159265358979 ;
            }

            ACI2 = KC - KB ;
            if (ACI2<0.0){
                ACI2 = ACI2 + 2*3.14159265358979 ;
            }

            FarkYAB = YA - YB ;
            FarkXAB = XA - XB ;

            FarkYCB = YC - YB ;
            FarkXCB = XC - XB ;

            //tBA, tBC RADYAN cinsinden doğrultular

            double div = (double) FarkYAB/FarkXAB;
            double theta = (double) (Math.atan(div));
            System.out.println(theta);

            tBA = theta;

            //GRAD cinsinde;
            // arctan(+/+)=ACI
            // arctan(-/-)=ACI ise ACI+200
            // arctan(+/-)=ACI ise ACI+200
            // arctan(-/+)=ACI ise ACI+400

             if (FarkYAB<0.0 && FarkXAB<0.0){
                 tBA = tBA + 3.14159265358979;
             }
             else if (FarkYAB>0.00 && FarkXAB<0.0){
                 tBA = tBA + 3.14159265358979;
             }
             else if (FarkYAB<0.0 && FarkXAB>0.0){
                 tBA = tBA + 2*3.14159265358979;
             }

             //SBA, SBC metre cinsinden uzunluklar

             SBApayda = Math.sin(tBA);
             SBA = FarkYAB/SBApayda;

            double div1 = (double) FarkYCB/FarkXCB;
            double theta1 = (double) (Math.atan(div1));
            System.out.println(theta1);

            tBC = theta1;

            if (FarkYCB<0.0 && FarkXCB<0.0){
                tBC = tBC + 3.14159265358979;
            }
            else if (FarkYCB>0.0 && FarkXCB<0.0){
                tBC = tBC + 3.14159265358979;
            }
            else if (FarkYCB<0.0 && FarkXCB>0.0){
                tBC = tBC + 2*3.14159265358979;
            }

            SBCpayda = Math.sin(tBC);
            SBC = FarkYCB/SBCpayda;

            //ACI3 = γ
            //γ = tBA - tBC

            ACI3 = tBA - tBC;
            if (ACI3<0.0){
                ACI3 = ACI3 + 2*3.14159265358979;
            }
            else if (ACI3>2*3.14159265358979){
                ACI3 = ACI3 - 2*3.14159265358979;
            }

            //Sonuc1 = ( φ + Ψ )/2
            //( φ + Ψ )/2 = ( 400 - ( α + β + γ))/2

            ACItoplam = ACI1 + ACI2 + ACI3;
            Sonuc1pay = 2*3.14159265358979 - ACItoplam;

            Sonuc1 = Sonuc1pay/2 ;

            //ACI6 = μ
            //tan( μ ) = (SBA * sin( β )) / (SBC * sin( α ))

            pay = SBA*Math.sin(ACI2);
            payda = SBC*Math.sin(ACI1);

            double div2 = (double) pay/payda;
            double theta2 = (double) (Math.atan(div2));
            System.out.println(theta2);

            ACI6 = theta2;

            //Sonuc2 = ( φ - Ψ )/2
            //tan( ( φ - Ψ )/2 ) = tan( ( φ + Ψ )/2 ) * cot(50 + μ)

            Birincieleman = Math.tan(Sonuc1);
            Ikincieleman = 1.0/(Math.tan((50*2*3.14159265358979/400)+ACI6));

            Sonuc2 = Math.atan(Birincieleman * Ikincieleman);

            //ACI4 = φ ; ACI5 = Ψ
            //ACI4 = ( φ + Ψ )/2 + ( φ - Ψ )/2
            //ACI5 = (φ + Ψ) - φ

            ACI4 = Sonuc1 + Sonuc2;
            ACI5 = 2.0*Sonuc1 - ACI4;

            //ACI7 = γ1
            //γ1 = 200 - ( φ + α)
            //γ2 = 200 - ( β + Ψ)
            //Kontrol: γ1 + γ2 = γ

            ACI7 = 3.14159265358979 - (ACI4 + ACI1);
            if (ACI7<0){
                ACI7 = ACI7 + 2*3.14159265358979;
            }
            else if (ACI7>2*3.14159265358979){
                ACI7 = ACI7 - 2*3.14159265358979;
            }


            tBK = tBA - ACI7;
            if (tBK<0.0){
                tBK = tBK + 2*3.14159265358979;
            }
            else if (tBK>2*3.14159265358979){
                tBK = tBK - 2*3.14159265358979;
            }

            SBK = SBA*((Math.sin(ACI4))/(Math.sin(ACI1)));

            XK = XB + SBK*Math.sin(tBK);
            YK = YB + SBK*Math.cos(tBK);

            twXK.setText(String.valueOf(String.format( "%.3f" , XK)));
            twYK.setText(String.valueOf(String.format( "%.3f" , YK)));


        }
    });

}

}

TEST

Uygulama Prof.Dr. Vahap Engin GÜLAL hocamızın Ölçme Bilgisi Ders notlarından alınan örnek soru ile adım adım test edilmiştir.

image

image

image

Uygulamaya “GRAD” cinsinden giriş yapılacaktır. Uygulama içerisinde “RADYAN” a çevirilip işlemler gerçekleştirilecektir.

image image image

Ders notunda sonuç aşağıdaki gibi belirlenmiştir: