示例#1
0
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;
}