mathematik frage

  • Hey.

    Ganz einfach.

    Sagen wir ich habe in einem Koordinatensystem 2 Punkte :
    P1(1|1)
    P2(3|3)

    Nun habe ich einen Dritten Punkt:
    P3(?|?)

    Von diesm Punkt möchte ich die x und y Werte wissen.

    Der Punkt 3 startet bei Punkt 1 und bewegt sich hin zu Punkt 2 auf der Schrägen.

    Ich weiß, dass sich der Punkt 3 bsw. 1 Einheit in der Sekunde auf der Schrägen hin zu Punkt 2 Bewegt.

    Jetzt will ich bsw. wissen wo ich sich Punkt 3 in 1 Sekunke befindet.
    Ich bin der meinung, ich könnte es so machen, indem Ich erstmal die Länge der Schrägen ausrechne.
    Nun rechne ich aus, wie viel Prozent die Stecke von P1 zu P3 der gesammten Länge der stecke von P1 zu P2 ist.

    Also so:

    [autoit]

    $X1 = 1
    $Y1 = 1
    $X2 = 3
    $Y2 = 3

    [/autoit][autoit][/autoit][autoit]

    $Schritt = 1 ;; Bewegung des Punktes 3 in einer Sekunde auf der Schrägen

    [/autoit][autoit][/autoit][autoit]

    $h = Abs($X1-$X2)
    $b = Abs($Y1-$Y2)

    [/autoit][autoit][/autoit][autoit]

    $LaengeDia = Sqrt($h^2 + $b^2)

    [/autoit][autoit][/autoit][autoit]

    $Prozent = ($LaengeDia/100)*$Schritt

    [/autoit][autoit][/autoit][autoit]

    $x3 = (100/$h)*$Prozent
    $y3 = (100/$b)*$Prozent

    [/autoit]

    würde das so funktionieren ?

    Das finden von Rechtschreibfehlern muss sofort und unverzüglich dem Autor gemeldet werden. Das eigennützige Verwenden dieser Rechtschreibfehler ist strengstens untersagt und kann mit Freiheitsenzug bestraft werden.

  • Was du machen möchtest ist eine Lineare Gleichung.
    Du kannst sagen dass er pro Sekunde um f(x)=1x+1 steigt -> Er steigt 1 auf x und 1 auf Y, sprich:
    Du codest diese funktion mit dem Anstieg, am besten schreist du eine wo mn nur 2 Punkte brauch und der recht errechnet wird ...

    Es gibt sehr viele Leute, die glauben. Aber aus Aberglauben.
    - Blaise Pascal

  • Ich würde dass einfach direkt mit dem verhältiss machen warum verwendest du Prozent???

    Spoiler anzeigen
    [autoit]


    $Schritt = 30
    $h = 100
    $b = 55
    $array = Laenge($b,$h,$Schritt)
    msgbox(0,"",$Array[0]&" "&$array[1])
    msgbox(0,"","Zum überprüfen:"& ($array[0]^2+$array[1]^2)^(1/2))

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ; $ib = X differenz $ih = Y differenz $ientfernung = entfernung
    Func Laenge($ib,$ih,$ientfernung)
    Local $Differenz = (Abs($ih)^2+Abs($ib)^2)^(1/2)
    Local $Verhaeltniss = $ientfernung/$Differenz
    Local $Array[2] = [$ib*$Verhaeltniss,$ih*$Verhaeltniss]
    Return $Array
    EndFunc

    [/autoit] [autoit][/autoit] [autoit][/autoit]
  • Naja, du hast ein Dreieck, in dem gilt: 2a²=1².
    d.h: a= 1/sqrt(2)
    wenn du jetzt einfach 1+t*a machst, bekommst du x und y werte...

    Spoiler anzeigen
    [autoit]

    $aSchritt = 1 ;Die Anzahl Schritte in Einheiten
    Local $p1[2] = [1, 1] ;Koordinaten Punkt 1
    Local $p2[2] = [3, 3] ;Koordinaten Punkt 2
    Local $p3[2]

    [/autoit] [autoit][/autoit] [autoit]

    $m = ($p2[1]-$p1[1])/($p2[0]-$p1[0]) ;Steigung ausrechnen (als Faktor für die Y-Strecke im Verhältnis zu X-Strecke
    $a = 1/(sqrt(1+$m)) ;Umformung aus a²+(a*m)² = c² (ist dann Faktor für die Strecke

    [/autoit] [autoit][/autoit] [autoit]

    $p3[0] = $p1[0] + $aSchritt*$a
    $p3[1] = $p1[1] + $aSchritt*$a*$m

    [/autoit] [autoit][/autoit] [autoit]

    MsgBox(0, "Ergebnis", $p3[0]&"/"&$p3[1])

    [/autoit]


    MfG,
    Fresapore

  • Wenn wir das mal von autoit unabhängig sehen, wäre eine Vektorgleichung am einfachsten. Dann setzt du den Betrag des Vektors mit 1 gleich, und das Ergebnis müsste erscheinen ;)

    Aber hast du deine Lösung mal ausprobiert? Bei mir kommt je Wurzel 2 raus, was doch stimmen müsste... du musst allerdings noch die x- und y-Werte des ersten Punkts addieren.

    edit: Hier als UDF umgeschrieben:

    Spoiler anzeigen
    [autoit]

    #include <Array.au3>
    ;; Bewegung des Punktes 3 in einer Sekunde auf der Schrägen:
    $array=_Math_GetXYFromPointsandLength(1,1,3,3,1)
    _ArrayDisplay($array)
    Func _Math_GetXYFromPointsandLength($X1,$Y1,$X2,$Y2,$Schritt)
    $h = Abs($X1-$X2)
    $b = Abs($Y1-$Y2)

    [/autoit] [autoit][/autoit] [autoit]

    $LaengeDia = Sqrt($h^2 + $b^2)

    [/autoit] [autoit][/autoit] [autoit]

    $Prozent = ($LaengeDia/100)*$Schritt

    [/autoit] [autoit][/autoit] [autoit]

    $x3 = (100/$h)*$Prozent + $x1
    $y3 = (100/$b)*$Prozent + $y1
    Local $return[2] = [$x3,$y3]
    Return $return
    EndFunc

    [/autoit]

    Twitter: @L3viathan2142
    Benutze AutoIt persönlich nicht mehr, da ich keinen Windows-Rechner mehr besitze.

  • Soweit ich mich erinnern kann war Progandys Lösung ein paar Posts weiter unten mathematisch die selbe aber durch einen anderen Aufbau wird dem Rechner eine Division erspart.
    Also ist diese noch einen Tick effektiver als meine gewesen ;)