Frage

Ich habe Frage, ob ich in Textdatei maximal x oder y-Wert in der Textdatei finden kann. Dies ist für den Punkt im Polygonalgorithmus erforderlich.
Polygone werden zusammen mit Punkt, dem Polygon und zusammen mit der Anzahl der Polygonlinien, in eine Textdatei eingegeben.

Zum Beispiel:

5.0 4.0 6 1.0 1.0 4.0 0.0 6.0 3.0 7.0 6.0 3.0 7.0 0.0 4.0 1.0 1.0  

Der Punkt ist [5.0 4.0], Polygon hat 6 Zeilen und als nächstes sind schriftliche Punkte von Polygon:

[1.0 1.0][4.0 0.0][6.0 3.0][7.0 6.0][3.0 7.0][0.0 4.0][1.0 1.0].

Erstens ist X-Koordinate, zweitens ist y-koordinat.

Ich habe ein Verfahren, das die Position von 2 Zeilen testet. Jetzt muss ich dieses Verfahren mit diesem einen Algorithmus kombinieren.

Was ich habe ist: Öffnen Sie TXT eine Lesezeile von TXT, teilen Sie sie dann auf und speichern Sie die Werte in Variablen

pointinp = open ("pointinp.txt", "r")  
for line in pointinp.readlines():  
    riadok = line.split()  
    j=3  
    for i in range (0,riadok[2]):  
        x1=float(riadok[0])  
        y1=float(riadok[1])  
        k1=float(riadok[i+j])  
        l1=float(riadok[i+(j+1)])  
        k2=float(riadok[i+(j+2)])  
        l2=float(riadok[i+(j+3)])  
        j=j+1  

Punktkoordinaten sind in X1 und Y1, die Koordinaten anderer Punkte sind in K1, L1, K2, L2. Jetzt muss ich maximale X- und Y -Koordinate von Textdatei finden, um sie auf x2, y2 zu speichern. Dann habe ich 2 Zeilen [x1, y1] [x2, y2] und [k1, l1] [k2, l2], und dann werde ich die Position dieser Linien testen, und dies ist anhand des Polygon -Algorithmus erforderlich, wo wird sein, wo wird sein gezählt die Schnittpunkte.

War es hilfreich?

Lösung

Finden Sie das maximale x und y in der Linie Wenn Sie unkompliziert genug sind, müssen Sie sie nur trennen und die MAX () -Funktion auf sie anwenden. Glücklicherweise unterstützt die Python List Indexierung eine Schrittgröße, sodass Sie problemlos jeden anderen Wert herausziehen können:

xvals=riadok[3::2]
yvals=riadok[4::2]
xmax=max(xvals)
ymax=max(yvals)

Das Maximum in der finden Datei ist etwas schwieriger: Für jede Zeile können Sie Ihr lokales Maximum mit der bisher größten Figur vergleichen und die letztere durch das erstere ersetzen, wenn es größer ist:

xtruemax=max(xtruemax,xmax)
ytruemax=max(ytruemax,ymax)

Sie werden jedoch feststellen, dass diese Zahlen langsam wachsen, wenn Sie weiter durch Ihre Datei gehen. Wenn Sie den echten größten Wert von x und y direkt aus Zeile 1 verfügbar sind, müssen Sie Ihre Datei in zwei Pässen verarbeiten, um einmal das maximale X und Y zu finden und einmal, um Ihren Algorithmus anzuwenden.

Andere Tipps

Wenn Sie einen leistungsstarken Code mögen, möchten Sie dies :) Wenn Sie nur ganzzahlige Zahlen haben, können Sie Float durch int ersetzen.

Datei.txt

1 2 3 900000.029384 10000 6 8 900000.029383

maximum = max (map (float, (öffnen ('file.txt', 'r'). readline ()). split ()))

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top