Çokgen üzerindeki belirli bir noktadan görülebilen çokgenler üzerindeki tüm köşeleri bulmaya çalışırken sorun yaşıyorum. Şimdiye kadar yazdıklarım ile sınırlı başarı elde ettim.Tüm diğer çokgen köşelere çokgen üzerinde bir köşe için "Görüş Hattı"
Ben görünür köşeler için ışınları üretebilir ama benim orijin noktası kullanarak bir tepe üzerinde değil yalnızca aşağıdaki:
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.
Bu son yaklaşım Denedim. Eminim bu yol korkunç, eğer birisi beni doğru yöne yönlendirebilirse, bu yüzden onu daha az korkunç yapabilirim.
İşi yapmak için var olan kitaplıkları denediniz mi? Belki böyle bir şey: https://code.google.com/archive/p/straightedge/. Çözdüğünüz görev görece karmaşıktır ve çok fazla çaba gerektirebilir, bu nedenle araştırma amacıyla bunu yapmadıkça, bunu zaten yapan bir şey bulmanızı öneririm. – user3707125
Mevcut uygulamaların kullanılmasından kaçınmak istiyorum çünkü bu, bir projenin bir kısmı maalesef haftada bir. Bu temiz olsa da. – Battleroid
JavaFX değil, ancak burada kullanılan sınıflar ('Line2D' vb.) Her iki API’da da var ve bazı hata ayıklama seçeneklerine sahip bir MCVE (örn. Tüm tarama satırlarını boyama seçeneği): http://stackoverflow.com/a/23971327/3182664 – Marco13