[Çözüldü] bir noktanın bir doğruya olan uzaklığı

Başlatan Wougge, 27 Eylül 2012 - 11:41:55

« önceki - sonraki »

0 Üyeler ve 2 Ziyaretçi konuyu incelemekte.

Wougge

bir noktanın bir doğruya olan uzaklığını classlarla nasıl yapabiliriz?

travego0403

Java da bu durum için hazır sınıflar var mıdır bilmiyorum. Eğer kendin yazmak istersende basit bir şekilde yazabilirsin. Biraz analitik geometri bilginiz varsa kolaylıkla yazabilirsiniz. Ben direk bağıntıyı buraya yazayım anlaşılmazsa  Google'dan bağıntıya bakın ve kullanın.

Doğru denklemi : ax+by+c=0 olsun.
Noktamız : (x1,y1)
İkisi arasındaki en kısa uzaklık(noktadan doğruya inen dikme) d ise

d=fabs(a*x1+b*y1+c)/sqrt(a*a+b*b)
"Matematik bir dildir ve bu dilde şairlere fizikçi denir." Richard Feynman

Wougge

Alıntı yapılan: travego0403 - 27 Eylül 2012 - 11:59:47
Java da bu durum için hazır sınıflar var mıdır bilmiyorum. Eğer kendin yazmak istersende basit bir şekilde yazabilirsin. Biraz analitik geometri bilginiz varsa kolaylıkla yazabilirsiniz. Ben direk bağıntıyı buraya yazayım anlaşılmazsa  Google'dan bağıntıya bakın ve kullanın.

Doğru denklemi : ax+by+c=0 olsun.
Noktamız : (x1,y1)
İkisi arasındaki en kısa uzaklık(noktadan doğruya inen dikme) d ise

d=fabs(a*x1+b*y1+c)/sqrt(a*a+b*b)

öncelikle bilgilendirmen için sağol. yeni bir java kullanıcısı olarak classlarla nasıl yapılacağı hakkında fikrim yok. Bu yüzden yardım ederseniz sevinirim.

travego0403

Ne yazık ki şakır şakır Java kodu yazan birisi değilim. Mantık olarak iki sınıf yazabilirsiniz. Örneğin Dogru ve Nokta diye. Sonra Dogru sınıfı için bir üye fonksiyon(Java da metot mu deniyordu?) yazabilirsiniz. Siz bir şeyler yazın yapamadığınız yerde bizler yardım ederiz. Şahsen burada hazır kod verilmesini hoş görmüyorum.

Nokta nokta = new Nokta(x1,y1);
Dogru dogru = new Dogru(a,b,c);
double uzaklik;
uzaklik = dogru.uzaklıkBul(nokta);
System.out.println( "Uzaklik :" + uzaklik );

gibi.
"Matematik bir dildir ve bu dilde şairlere fizikçi denir." Richard Feynman

Wougge

neyse sağolun kendim yazmayı deneyecem umarım yazabilirim :)

travego0403

Yazarsınız, merak etmeyin. ;) Takıldığınız yeri her zaman sorabilirsiniz. Emin ol, hazır kod vermemizin size ne kadar zararı olduğunu ve kendin yazmanın sana neler kazandırdığını fark edersin.

Kolay gelsin.
"Matematik bir dildir ve bu dilde şairlere fizikçi denir." Richard Feynman

Wougge

kodu eclipse de yazdım fakat kodu terminal/command ekranında derlemek zorundayım. bir classım birde mainim var nasıl derlerim?

travego0403

Uç birimde derlemek için sanırım javac derleyicisi kullanılıyordu.
javac main.java
Çalıştırmak içinde
java main
"Matematik bir dildir ve bu dilde şairlere fizikçi denir." Richard Feynman

Wougge

Alıntı yapılan: travego0403 - 27 Eylül 2012 - 20:21:24
Uç birimde derlemek için sanırım javac derleyicisi kullanılıyordu.
javac main.java
Çalıştırmak içinde
java main
teşekkürler.

if

@Wougge, konuyu çözüme kavuşturduysanız çözüldü etiketi alabilir miyim?

Wougge

import aa.Point;


public class Main {
public static void main(String[] args){
Point startPoint = new Point();
Point endPoint = new Point();
Point myPoint = new Point();
Distance(startPoint, endPoint, myPoint);
}

public static void Distance(Point startPoint, Point endPoint, Point myPoint){
int[] c;
c = new int[3];

double d;
int absolute;
double square;
double egim;
double t;
int a,b;
int dx = (endPoint.getX()-startPoint.getX());
int dy = (endPoint.getY()-startPoint.getY());

c[0] = (int) (endPoint.getY() - startPoint.getY());
c[1] = (int) (startPoint.getX() - endPoint.getX());
c[2] = (int) ((endPoint.getX() * startPoint.getY())-(startPoint.getX()*endPoint.getY()));

egim = 0 - (c[0]/c[1]);

t =(double)((myPoint.getX() - startPoint.getX())*dx+
(myPoint.getY() - startPoint.getY())*dy)
/((dx*dx)+(dy*dy));
//double t = ((pt.getmX() - p1.getmX()) * dx + (pt.getmY() - p1.getmY()) * dy) / (dx * dx + dy * dy);

if ((dx == 0) && (dy == 0)){
dx = (myPoint.getX()-startPoint.getX());
dy = (myPoint.getY()-startPoint.getY());

d = Math.sqrt(dx * dx + dy * dy);
}

else if(t<0){
a = myPoint.getX() - startPoint.getX();
b = myPoint.getY() - startPoint.getY();

d = Math.sqrt(a*a+b*b);
}

else if(t>1){
a = myPoint.getX() - endPoint.getX();
b = myPoint.getY() - endPoint.getY();
d = Math.sqrt(a*a+b*b);
}

else{
absolute = (int) Math.abs((c[0]*myPoint.getX())+(c[1]*myPoint.getY())+c[2]);
square = (double)Math.sqrt((c[0]*c[0])+(c[1]*c[1]));
d = ((double)absolute)/square;
//d=abs(a*x1+b*y1+c)/sqrt(a*a+b*b)
}

System.out.print("Distance is: "+ d);
}
}


package aa;
import java.util.Scanner;



public class Point {
public int x;
public int y;
public Scanner scan;

public Point(){
scan = new Scanner(System.in);

System.out.print("Enter the x coordinate: ");
x = scan.nextInt();

System.out.print("Enter the y coordinate: ");
y = scan.nextInt();
}

public int getY() {
return y;
}
public void setY(int y) {
this.y = y;
}
public int getX() {
return x;
}
public void setX(int x) {
this.x = x;
}
}