ঘড়ির কাঁটার ক্রমে 2D পয়েন্টের অ্যারে বাছাই করার জন্য কি এমন একটি অ্যালগরিদম আছে?
আমি বিশেষত আমার ক্ষেত্রে ডান ত্রিভুজটি নিয়ে কাজ করছি তাই কেবল 3 পয়েন্ট।
তবে আমি জানতে আগ্রহী যে এই জাতীয় একটি অ্যালগরিদম রয়েছে কিনা, যদি না হয় তবে আমার ত্রিভুজটির 3 টি পয়েন্টকে ঘড়ির কাঁটার ক্রমে ফেরত দেওয়ার সহজ উপায় কী?
সম্পাদনা: আমি বহুভুজের সেন্ট্রয়েডের তুলনায় ঘড়ির কাঁটার পয়েন্টগুলি গণনা করার চেষ্টা করছি, যা উত্তল।
আপডেট: নির্বাচিত উত্তরের উপর ভিত্তি করে আমি এটি প্রয়োগকরণ শেষ করেছিলাম, এটি কার্য সম্পাদন সমালোচনামূলক নয় এবং কেবল একবারে ঘটে যখন এটি কার্যকর হয়।
ArrayList<PVector> pointList = new ArrayList<PVector>();
pointList.add(A);
pointList.add(B);
pointList.add(C);
Collections.sort( pointList, new TriangleVectorComparator(origin) );
return pointList;
// Comparator
package triangleeditor;
import java.util.Comparator;
import processing.core.PVector;
public class TriangleVectorComparator implements Comparator<PVector> {
private PVector M;
public TriangleVectorComparator(PVector origin) {
M = origin;
}
public int compare(PVector o1, PVector o2) {
double angle1 = Math.atan2(o1.y - M.y, o1.x - M.x);
double angle2 = Math.atan2(o2.y - M.y, o2.x - M.x);
//For counter-clockwise, just reverse the signs of the return values
if(angle1 < angle2) return 1;
else if (angle2 < angle1) return -1;
return 0;
}
}