Forum: Programmieren allgemein
by Namenloser,
12. Apr 2012
Ich sehe hier einen Fehler:
B0 := Vektor2DMultiplyTwo(Vektor2DDivideWithFloat(B,1), B);
Wenn Vektor2DMultiplyTwo das tun würde, was man erwartet (andere Baustelle, s.u.), nämlich zwei Vektoren komponentenweise zu multiplizieren, würde diese Rechnung darauf hinauslaufen, dass du immer den Vektor (1, 1) für B0 erhältst (weil (1/x)*x immer 1 ist (sofern x ≠ 0)).
Das wäre natürlich...
Forum: Programmieren allgemein
by Namenloser,
5. Apr 2012
Es gibt zwei sehr ähnliche Formeln, einmal für den Sinus bzw. das Kreuzprodukt und einmal für den Kosinus bzw. das Skalarprodukt:
|a × b| = |a| * |b| * sin(φ)
a * b = |a| * |b| * cos(φ)
Ich nehme an, du hast die beiden Formeln verwechselt...
Forum: Programmieren allgemein
by Namenloser,
5. Apr 2012
Ich meine aber nicht das Skalarprodukt :roll:
Mein „Kreuzprodukt“ ist im Grunde das Skalarprodukt mit einem Vektor orthogonal zu Vektor B. Du kannst im zweidimensionalen Raum ja leicht einen orthogonalen Vektor bilden, indem du die Koordinaten wie folgt vertauschst: (X, Y) → (Y, -X). Wenn du das dann in das Skalarprodukt einsetzt, kommst du auf meine Formel.
Forum: Programmieren allgemein
by Namenloser,
5. Apr 2012
Den senkrechten Abstand zu einer Strecke kannst du im zweidimensionalen Raum über das Kreuzprodukt berechnen (s. Anhang).
Sorry, habe wohl zu lange mit dreidimensionalen Vektoren hantiert... Das „Kreuzprodukt“ ist ja für den zweidimensionalen Raum nicht wirklich definiert. Was ich damit meinte ist:
function „Kreuzprodukt“ (A, B: TVec2): Single;
begin
Result := A.X*B.Y - A.Y*B.X;
end;...