carookee - group communication for you
Home / JavaForum / Beginner
Infos   |   Features   |   Gold-Edition   |   Kundenservice   
java
  Übersicht
  Forum
Beginner
Java allgemein
JDBC
JNI
Networking
Online-Ressourcen
Swing + AWT
XML
Meckerecke
  Mitglieder
LOGIN





· Passwort vergessen
· Kostenlos anmelden
  Information
  Demo
  Features
  Im Vergleich
  Anmeldung
SUCHE
Beiträge, Foren oder Verfasser finden:
  Kundenservice
  Impressum
  Datenschutz
  AGB
Status
4.768 User online
0 User eingeloggt
 

Beiträge
   Antworten     Neuer Beitrag    

Beitrag 1879 von 2963 (63%) |<   <   >   >|

Autor Markus Kugelmann
Datum 09.12.01, 13:04
Betreff Problem bei Überlappungsabfrage


Hallo zusammen,

ich habe eine Methode geschrieben, die verhindern soll, das sich zwei Polygone überlappen. Sie funktioniert bis auf den einen Fall, wenn ich das Polygon so bewege, das ein Eckpunkt eines anderen Polygons in das bewegte eindringen möchte. Leider läßt die Methode es zu, das das fremde Polygon ca. 1Pixel eindringt. Das sollte aber nicht passieren. Kennt vielleicht jemand einen Trick wie man dieses Problem umgehen kann? ICh habe denn Quellcode unten angehängt. schonmal danke, Markus
boolean overlapTest(int deltaX, int deltaY, MyPolygon[] polygonArray, int activePolygon)
{
    move = true;
    
    MyPolygon testPolygon = new MyPolygon (Color.black, npoints, xpoints, ypoints);
    
    if (move == true)
    {
        for(int i=0; i<npoints; i++)
        {
            resetX[i] = xpoints[i];
            resetY[i] = ypoints[i];
        }
    }
    
    
    for(int i=0; i<npoints; i++)
    {
        xpoints[i] += (deltaX);
        ypoints[i] += (deltaY);
        
        int x = xpoints[i];
        int y = ypoints[i];
        
        if (area(x, y) == false)
        {
            move = false;
        }
    }
    
    
    for(int i=0; i<polygonArray.length; i++)
    {
        if(i != activePolygon)
        {
            for(int j=0; j<polygonArray[i].npoints; j++)
            {
                int xTest = (polygonArray[i].xpoints[j]);
                int yTest = (polygonArray[i].ypoints[j]);
                
                //hier tritt der Fehler auf, die Abfrage läßt es
                //zu das Punkte in das Polygon eindringen können!
                if(testPolygon.isInside(xTest, yTest, testPolygon))
                {
                    move = false;
                }
                
            }
            
            for(int j=0; j<npoints; j++)
            {
                
                int xTest = xpoints[j];
                int yTest = ypoints[j];
                
                MyPolygon testPolygonB = polygonArray[i];
                
                if(testPolygonB.isInside(xTest, yTest, testPolygonB))
                {
                    move = false;
                }
            }
        }
    }
    
    if(move == true)
    {
        for(int i=0; i<npoints; i++)
        {
            xpoints[i] -= deltaX;
            ypoints[i] -= deltaY;
        }
    }
    
    return move;
}



Diskussionsverlauf:
    Re: Problem bei Überlappungsabfrage
            Re: Problem bei Überlappungsabfrage
        Re: Problem bei Überlappungsabfrage
Problem bei Überlappungsabfrage
                Ist das Problem denn so neu?

 Auf diesen Beitrag antworten
 Neuen Beitrag verfassen


|<   <   >   >|

                                                                                                                                                                                                                           

Impressum  · Datenschutz  · AGB  · Infos  · Presse
Ein modernes Forum: teamturn.com