Hey,
ich bin ein richtiger Neuling in der Welt solcher Programmiersprachen.
Als kleine Übung und weil ich es gut gebrauchen könnte, habe ich mich entschieden eine Seite zu schreiben, in der man sieht wo auf einer 3 Dimensionalen Karte die 6(+-) vom Benutzer ausgewählten Punkte nur 16 Einheiten entfernt sind. (Klingt Sinnlos; ist für ein Spiel
)
So weit bin ich bis jetzt:
Gibt es einen sinnvolleren/kürzeren weg die kleinsten/größten Werte rauszusuchen?
Wegen dem Streckenmessen hab ich mir schon Gedanken gemacht. Ich hatte vor erstmal die kleinsten Werte in jede Richtung zu übernehmen, die entfernung zu jedem Punkt zu berechnen (mit dem Satz des Pythagoras, hab ich schon geschafft) und dann x (bspw.) um 0.1 Einheiten zu erhöhen. Das solange bis der Testwert beim höchsten x Wert ist. Dann erhöht sich der z Wert um 0.1 und dann geht der x Wert wieder in kleinen Schritten durch. Und so weiter. Wenn z durch ist, soll sich dann y um 1 erhöhen und dann wieder x und z von vorne, bis y auch beim höchsten Wert angekommen ist.
Das Problem ist nicht wirklich das rechnen, sondern eher das Schleifensystem.
Solltet ihr sonstige Verbesserungsvorschläge für die Seite haben, her damit
Schonmal danke für die Hilfe.
(Um den Sinn zu erklären:
Es gibt in einem Spiel so besondere Punkte, die wenn du sich ihnen bis auf 16 Blöcke näherst, Dinge erzeugt werden. Mit diesem Programm möchte ich Punkt für Punkt testen, wo 6 von diesen Punkten aktiv sind (also im 16 Block radius)
WWtom
ich bin ein richtiger Neuling in der Welt solcher Programmiersprachen.
Als kleine Übung und weil ich es gut gebrauchen könnte, habe ich mich entschieden eine Seite zu schreiben, in der man sieht wo auf einer 3 Dimensionalen Karte die 6(+-) vom Benutzer ausgewählten Punkte nur 16 Einheiten entfernt sind. (Klingt Sinnlos; ist für ein Spiel

So weit bin ich bis jetzt:
PHP-Code:
<?php
$x1 = $_POST["x1"];
$y1 = $_POST["y1"];
$z1 = $_POST["z1"];
$x2 = $_POST["x2"];
$y2 = $_POST["y2"];
$z2 = $_POST["z2"];
$x3 = $_POST["x3"];
$y3 = $_POST["y3"];
$z3 = $_POST["z3"];
$x4 = $_POST["x4"];
$y4 = $_POST["y4"];
$z4 = $_POST["z4"];
$x5 = $_POST["x5"];
$y5 = $_POST["y5"];
$z5 = $_POST["z5"];
$x6 = $_POST["x6"];
$y6 = $_POST["y6"];
$z6 = $_POST["z6"];
#Definiert die Koordinaten der Html Seite als Php Variablen
#Sucht in jede richtung (x,y,z) den kleinsten und groessten Wert, um ein kleineres Gebiet zu haben
#Anfang kleinstes x!
if($x1 <= $x2 & $x1 <= $x3 & $x1 <= $x4 & $x1 <= $x5 & $x5 <= $x6)
{
$sx = $x1;
}
else{}
if($x2 <= $x1 & $x2 <= $x3 & $x2 <= $x4 & $x2 <= $x5 & $x5 <= $x6)
{
$sx = $x2;
}
else{}
if($x3 <= $x1 & $x3 <= $x2 & $x3 <= $x4 & $x3 <= $x5 & $x5 <= $x6)
{
$sx = $x3;
}
else{}
if($x4 <= $x1 & $x4 <= $x2 & $x4 <= $x3 & $x4 <= $x5 & $x5 <= $x6)
{
$sx = $x4;
}
else{}
if($x5 <= $x1 & $x5 <= $x2 & $x5 <= $x3 & $x5 <= $x4 & $x5 <= $x6)
{
$sx = $x5;
}
else{}
if($x6 <= $x1 & $x6 <= $x2 & $x6 <= $x3 & $x6 <= $x4 & $x6 <= $x5)
{
$sx = $x6;
}
else{}
#Ende kleinstes x!
#Anfang größtes x!
if($x1 >= $x2 & $x1 >= $x3 & $x1 >= $x4 & $x1 >= $x5 & $x5 >= $x6)
{
$bx = $x1;
}
else{}
if($x2 >= $x1 & $x2 >= $x3 & $x2 >= $x4 & $x2 >= $x5 & $x5 >= $x6)
{
$bx = $x2;
}
else{}
if($x3 >= $x1 & $x3 >= $x2 & $x3 >= $x4 & $x3 >= $x5 & $x5 >= $x6)
{
$bx = $x3;
}
else{}
if($x4 >= $x1 & $x4 >= $x2 & $x4 >= $x3 & $x4 >= $x5 & $x5 >= $x6)
{
$bx = $x4;
}
else{}
if($x5 >= $x1 & $x5 >= $x2 & $x5 >= $x3 & $x5 >= $x4 & $x5 >= $x6)
{
$bx = $x5;
}
else{}
if($x6 >= $x1 & $x6 >= $x2 & $x6 >= $x3 & $x6 >= $x4 & $x6 >= $x5)
{
$bx = $x6;
}
else{}
#Ende größtes x
#Anfang kleinstes y
if($y1 <= $y2 & $y1 <= $y3 & $y1 <= $y4 & $y1 <= $y5 & $y5 <= $y6)
{
$sy = $y1;
}
else{}
if($y2 <= $y1 & $y2 <= $y3 & $y2 <= $y4 & $y2 <= $y5 & $y5 <= $y6)
{
$sy = $y2;
}
else{}
if($y3 <= $y1 & $y3 <= $y2 & $y3 <= $y4 & $y3 <= $y5 & $y5 <= $y6)
{
$sy = $y3;
}
else{}
if($y4 <= $y1 & $y4 <= $y2 & $y4 <= $y3 & $y4 <= $y5 & $y5 <= $y6)
{
$sy = $y4;
}
else{}
if($y5 <= $y1 & $y5 <= $y2 & $y5 <= $y3 & $y5 <= $y4 & $y5 <= $y6)
{
$sy = $y5;
}
else{}
if($y6 <= $y1 & $y6 <= $y2 & $y6 <= $y3 & $y6 <= $y4 & $y6 <= $y5)
{
$sy = $y6;
}
else{}
#Ende
#Anfang
if($y1 >= $y2 & $y1 >= $y3 & $y1 >= $y4 & $y1 >= $y5 & $y5 >= $y6)
{
$by = $y1;
}
else{}
if($y2 >= $y1 & $y2 >= $y3 & $y2 >= $y4 & $y2 >= $y5 & $y5 >= $y6)
{
$by = $y2;
}
else{}
if($y3 >= $y1 & $y3 >= $y2 & $y3 >= $y4 & $y3 >= $y5 & $y5 >= $y6)
{
$by = $y3;
}
else{}
if($y4 >= $y1 & $y4 >= $y2 & $y4 >= $y3 & $y4 >= $y5 & $y5 >= $y6)
{
$by = $y4;
}
else{}
if($y5 >= $y1 & $y5 >= $y2 & $y5 >= $y3 & $y5 >= $y4 & $y5 >= $y6)
{
$by = $y5;
}
else{}
if($y6 >= $y1 & $y6 >= $y2 & $y6 >= $y3 & $y6 >= $y4 & $y6 >= $y5)
{
$by = $y6;
}
else{}
#ende
#Anfang kleinstes z
if($z1 <= $z2 & $z1 <= $z3 & $z1 <= $z4 & $z1 <= $z5 & $z5 <= $z6)
{
$sz = $z1;
}
else{}
if($z2 <= $z1 & $z2 <= $z3 & $z2 <= $z4 & $z2 <= $z5 & $z5 <= $z6)
{
$sz = $z2;
}
else{}
if($z3 <= $z1 & $z3 <= $z2 & $z3 <= $z4 & $z3 <= $z5 & $z5 <= $z6)
{
$sz = $z3;
}
else{}
if($z4 <= $z1 & $z4 <= $z2 & $z4 <= $z3 & $z4 <= $z5 & $z5 <= $z6)
{
$sz = $z4;
}
else{}
if($z5 <= $z1 & $z5 <= $z2 & $z5 <= $z3 & $z5 <= $z4 & $z5 <= $z6)
{
$sz = $z5;
}
else{}
if($z6 <= $z1 & $z6 <= $z2 & $z6 <= $z3 & $z6 <= $z4 & $z6 <= $z5)
{
$sz = $z6;
}
else{}
#Ende
#Anfang
if($z1 >= $z2 & $z1 >= $z3 & $z1 >= $z4 & $z1 >= $z5 & $z5 >= $z6)
{
$bz = $z1;
}
else{}
if($z2 >= $z1 & $z2 >= $z3 & $z2 >= $z4 & $z2 >= $z5 & $z5 >= $z6)
{
$bz = $z2;
}
else{}
if($z3 >= $z1 & $z3 >= $z2 & $z3 >= $z4 & $z3 >= $z5 & $z5 >= $z6)
{
$bz = $z3;
}
else{}
if($z4 >= $z1 & $z4 >= $z2 & $z4 >= $z3 & $z4 >= $z5 & $z5 >= $z6)
{
$bz = $z4;
}
else{}
if($z5 >= $z1 & $z5 >= $z2 & $z5 >= $z3 & $z5 >= $z4 & $z5 >= $z6)
{
$bz = $z5;
}
else{}
if($z6 >= $z1 & $z6 >= $z2 & $z6 >= $z3 & $z6 >= $z4 & $z6 >= $z5)
{
$bz = $z6;
}
else{}
#ende
#Verzweifelter "Schleifenversuch"
while($sy == $bx)
{
while($sy == $by)
{
while($sx == $bx)
{
echo "$sx";
$sx++
}
}
}
#Ausgabe zum Testen
echo "$sx";
echo "$bx";
echo "$sy";
echo "$by";
echo "$sz";
echo "$bz";
?>
Wegen dem Streckenmessen hab ich mir schon Gedanken gemacht. Ich hatte vor erstmal die kleinsten Werte in jede Richtung zu übernehmen, die entfernung zu jedem Punkt zu berechnen (mit dem Satz des Pythagoras, hab ich schon geschafft) und dann x (bspw.) um 0.1 Einheiten zu erhöhen. Das solange bis der Testwert beim höchsten x Wert ist. Dann erhöht sich der z Wert um 0.1 und dann geht der x Wert wieder in kleinen Schritten durch. Und so weiter. Wenn z durch ist, soll sich dann y um 1 erhöhen und dann wieder x und z von vorne, bis y auch beim höchsten Wert angekommen ist.
Das Problem ist nicht wirklich das rechnen, sondern eher das Schleifensystem.
Solltet ihr sonstige Verbesserungsvorschläge für die Seite haben, her damit

Schonmal danke für die Hilfe.
(Um den Sinn zu erklären:
Es gibt in einem Spiel so besondere Punkte, die wenn du sich ihnen bis auf 16 Blöcke näherst, Dinge erzeugt werden. Mit diesem Programm möchte ich Punkt für Punkt testen, wo 6 von diesen Punkten aktiv sind (also im 16 Block radius)
WWtom
Kommentar