ورود

View Full Version : نحوه ی محاسبه ی تمام نقاط روی یک خط



sooren_66
جمعه 27 آذر 1394, 14:57 عصر
باسلام میخواستم بدونم چطور می شه تمام نقاط روی یک خط رو به زبان جاوا به دست ائرد مثلا" یه حلقه ی for داشنه باشیم که مختصات تمام نقاط خط رو رامون حساب کنه
من این فرمولارو دارم ولی کامل نیست چون روششو بلد نیستم. :(:گریه::متفکر:



Iterable<Road> itR = roadGeography.getAllObjects();

int i=1;
for(Road r:itR){
Geometry g = roadGeography.getGeometry(r);


Road rr = new Road();
rr = r;
rr.id = i;
double x = g.getCoordinate().x;
double y = g.getCoordinate().y;
for(int k=0; k<g.getNumPoints()-1;k++){
Coordinate c1 = g.getCoordinates()[k];
Coordinate c2 = g.getCoordinates()[k+1];
// dist(c1.x, c1.y, c2.x, c2.y);
//System.out.print(dist(c1.x, c1.y, c2.x, c2.y)+" ");
}
i++;
}



public double dist(double x1, double y1, double x2, double y2){
double d = 0;
double d1 = (y2-y1)*(y2-y1) + (x2-x1)*(x2-x1);
d = Math.sqrt(d1);
return d;
}

sooren_66
جمعه 27 آذر 1394, 18:13 عصر
دوستان کسی نیست کمک کنه:افسرده::افسرده:

vahid-p
چهارشنبه 02 دی 1394, 22:39 عصر
کد زیر نقاط رو در یک ArrayList ای از Point ها بهت میده که البته همگی در اعداد صحیح تعریف شدن. مثلا یک نقطه 0,0.5 نداریم و 0.5 رند میشه.
الگوریتم های زیادی برای رسم خط وجود داره که برخیش رو در درسی مثل گرافیک کامپیوتری میتونید ببینید.

البته اگر نمیخواید رسم کنید باید دقتش مشخص باشه و نکات ریزی در الگوریتم وجود داره که باید رعایت کنید. بلاخره خط پیوسته است و از بی نهایت نقطه تشکیل شده و این شما هستید که باید تصمیم بگیرید چطور گسستش کنید.

اینم یکی از کدهای خیلی ساده :
public static ArrayList<Point> line(int x1, int y1, int x2, int y2) {
ArrayList<Point> points = new ArrayList<>();
int init, dest,d;
if (x1 == x2) {
init = Math.min(y1, y2);
dest = Math.max(y1, y2);
for (int i = init; i <= dest; i++) {
points.add(new Point(x1, i));
}
} else {
if(x2>x1) d=1;
else d=-1;
double m=(y2-y1)/((double)(x2-x1));
for (int i = x1; i !=x2;i=i+d) {
points.add(new Point(i,(int)(y1+m*(i-x1))));
}
points.add(new Point(x2,(int)(y1+m*(x2-x1))));
}
return points;
}