मुझे पॉलीगॉन पर दिए गए वर्टेक्स से दिखाई देने वाले बहुभुजों पर सभी शीर्षकों को खोजने का प्रयास करने में समस्या हो रही है। अब तक मैंने जो लिखा है उसके साथ मुझे सीमित सफलता मिली है।पॉलीगॉन पर अन्य सभी बहुभुज शीर्षकों के लिए एक कशेरुक के लिए "रेखा की दृष्टि"
मैं दिखाई कोने करने के लिए किरणों उत्पन्न कर सकते हैं, लेकिन केवल तभी मेरी मूल बिंदु का उपयोग कर एक शीर्ष पर नहीं है निम्नलिखित:
private ArrayList<Polyline> getGloballyVisible(Point2D origin, ArrayList<Polygon> polys) {
ArrayList<Polyline> visible = new ArrayList<>();
for (Polygon target : polys) {
ArrayList<Polyline> targetVisibleLines = getVisiblePointsOnPolygon(origin, target);
ArrayList<Polygon> subTargetPolygons = new ArrayList<>(polys);
subTargetPolygons.remove(target);
ArrayList<Polyline> subTargetEdges = getEdges(subTargetPolygons);
lineCheck: for (Polyline line : targetVisibleLines) {
for (Polyline enemyLine : subTargetEdges) {
ArrayList<Point2D> linePoints = toPoints(line.getPoints());
ArrayList<Point2D> enemyLinePoints = toPoints(enemyLine.getPoints());
if (linesIntersect(linePoints.get(0), linePoints.get(1), enemyLinePoints.get(0), enemyLinePoints.get(1))) {
continue lineCheck;
}
}
visible.add(line);
}
}
return visible;
}
Full code here, please don't laugh.
यह पिछले दृष्टिकोण है मैंने कोशिश की। मुझे यकीन है कि इस तरह से भयानक है, अगर कोई मुझे सही दिशा में इंगित कर सकता है तो इससे कम भयानक हो सकता है कि मैं इसकी सराहना करता हूं।
क्या आपने नौकरी करने के लिए मौजूदा पुस्तकालयों की कोशिश की है? शायद ऐसा कुछ: https://code.google.com/archive/p/straightedge/। जो कार्य आप हल कर रहे हैं वह अपेक्षाकृत जटिल है, और इसके लिए बहुत सारे प्रयास की आवश्यकता हो सकती है, इसलिए, जब तक आप इसे शोध उद्देश्यों के लिए नहीं कर रहे हैं, तो मैं आपको कुछ ऐसा खोजने का सुझाव दूंगा जो पहले से ही ऐसा करता है। – user3707125
मैं मौजूदा कार्यान्वयन का उपयोग करने से बचना चाहता हूं क्योंकि यह दुर्भाग्यवश एक सप्ताह में एक परियोजना का एक हिस्सा है। हालांकि यह साफ है। – Battleroid
यह जावाएफएक्स नहीं है, लेकिन वहां उपयोग की जाने वाली कक्षाएं ('Line2D' आदि) दोनों एपीआई में मौजूद हैं, और यह कुछ डीबगिंग विकल्पों (जैसे सभी स्कैनलाइनों को पेंट करने का विकल्प) के साथ एक एमसीवीई है: http://stackoverflow.com/a/23 9 71327/3182664 – Marco13