function calculateOverlap($c1x, $c1y, $r1, $c2x, $c2y, $r2) { $c1 = array("x" => $c1x, "y" => $c1y); $c2 = array("x" => $c2x, "y" => $c2y); $t1 = trans($c1, $c1); $t2 = trans($c2, $c1); $z1 = rot($t1, $c1, $c2); $z2 = rot($t2, $c1, $c2); $ksi = xi($z2["x"], $r1, $r2); $eta = yi($z2["x"], $r1, $r2); $d1 = $ksi; $d2 = $z2["x"] - $ksi; $A1 = 0; $A2 = 0; if ($z2["x"] > $r1 + $r2) { /* No overlap */ //echo "No overlap</br>"; $A1 = 0; $A2 = 0; } elseif ($z2["x"] + $r1 < $r2) { /* Circle 1 is inside circle 2 */ //echo "C1 in C2</br>"; $A1 = $r1 * $r1 * pi(); $A2 = 0; } elseif ($z2["x"] + $r2 < $r1) { /* Circle 2 is inside circle 1 */ //echo "C2 in C1</br>"; $A1 = 0; $A2 = $r2 * $r2 * pi(); } else { //echo "Crossing</br>"; $A1 = Ai($r1, $d1); $A2 = Ai($r2, $d2); } return $A1 + $A2; }
function enigma($links, $mitte, $rechts, $stator, $str, $s1, $s2, $ring1, $ring2, $ring3, $steckbr, $pukw) { $spw1 = $stator[$s1]; $spw2 = $stator[$s2]; $stator_links = $stator; $stator_mitte = $stator; $stator_rechts = $stator; $schalter_1 = $spw1; $schalter_2 = $spw2; $stator_neu___ = steckbrett($steckbr); //-------------------------- Positionen der einzelnen Walzen ------------------------ for ($i = 1; $i <= $ring1; $i++) { $rechts = rot($rechts); $stator_rechts = rot($stator_rechts); } for ($i = 1; $i <= $ring2; $i++) { $mitte = rot($mitte); $stator_mitte = rot($stator_mitte); } for ($i = 1; $i <= $ring3; $i++) { $links = rot($links); $stator_links = rot($stator_links); } //-------------------------- Positionen der einzelnen Walzen ------------------------ for ($i = 0; $i < strlen($str); $i++) { $zeichen = $str[$i]; // holt sich einen Buchstaben aus dem String, den er Verschlüsseln wird $stator_rechts = rot($stator_rechts); // Rotation der rechten Walze, beginnt vor der Verschlüsselung (hier der Stator) $rechts = rot($rechts); //Rotation der rechten Walze, beginnt vor der Verschlüsselung (hier die Walze) $x = get_pos($stator_neu___, $zeichen); // holt sich die Position des eingegebenen Buchstaben auf den Stator $zeichen = get_zeichen($rechts, $x); // holt sich das Zeichen auf der Position die vorher ermittelt wurde("dort wo der Strom reingeht") $x = get_pos($stator_rechts, $zeichen); //holt sich die Position des zeichens auf dem Walzenstator um die Position zu erfahren wo er in die nächste Walze(mitte) rein muss if ($schalter_2 == $stator_mitte[1]) { $stator_mitte = rot($stator_mitte); $mitte = rot($mitte); $stator_links = rot($stator_links); $links = rot($links); } if ($schalter_1 == $stator_rechts[0]) { $stator_mitte = rot($stator_mitte); $mitte = rot($mitte); } $zeichen = get_zeichen($mitte, $x); // holt sich das Zeichen auf der Walze mitte $x = get_pos($stator_mitte, $zeichen); // holt sich die Position auf dem Stator der Walze mitte $zeichen = get_zeichen($links, $x); // holt sich das Zeichen auf der Walze links $x = get_pos($stator_links, $zeichen); // holt sich die Position auf dem Stator der Walze links um die Position zu erfahren wo er in die UKW muss $zeichen = get_zeichen($stator, $x); // if ($pukw == 0) { $zeichen = ukw1($zeichen); } if ($pukw == 1) { $zeichen = ukw2($zeichen); } //------Verlauf nach UKW-------------------- $x = get_pos($stator, $zeichen); $zeichen = get_zeichen($stator_links, $x); $x = get_pos($links, $zeichen); $zeichen = get_zeichen($stator_mitte, $x); $x = get_pos($mitte, $zeichen); $zeichen = get_zeichen($stator_rechts, $x); $x = get_pos($stator_rechts, $zeichen); $zeichen = get_zeichen($stator_rechts, $x); $x = get_pos($rechts, $zeichen); $zeichen = get_zeichen($stator_neu___, $x); $string .= $zeichen; } return $string; }