Registriert: Do Sep 02, 2004 19:42 Beiträge: 4158
Programmiersprache: FreePascal, C++
Hi ihr,
Leider fällt mir kein besserer Titel ein, ich weiss auch nicht, wie man sowas nennen könnte. Aber ich hab hier zumindest ne Skizze:
// Edit: Grafik aktualisiert
Also. Ich möchte drei Werte auf ein Dreieck abbilden. Dabei sollen die Winkelhalbierenden als "Achsen" fungieren.
Um einen Punkt im Dreieck auf die ihm zugeordneten Werte umzurechnen habe ich schon eine Formel. Hier für die "B"-Koordinate:
Wert = dotProduct(normalize(Punkt - B), normalize(BHalbierende)) * length(Punkt - B)
Soweit ich das sehe, müsste das so klappen.
Nur in der anderen Richtung... Da weiss ich gerade nicht weiter. Ich denke mir, dass ich generell nur zwei Werte bräuchte, der dritte ließe sich errechnen. Mit jedem einzelnen Wert kann ich eine Gerade bestimmen, auf der der Punkt liegt. Jetzt muss ich "nur noch" den Schnittpunkt zwischen diesen beiden Geraden finden. Ich wollte aber so Geradenfunktionen gerne vermeiden und am liebsten bei den unkomplizierten Vektoren bleiben.
Ich hoffe, das war verständlich. Sobald ich wieder nen Grafikprogramm da habe, werde ich die Skizze korrigieren und ein bisschen erweitern. Aber vielleicht habt ihr ja so schon ne idee .
Gruß & Thanks In Advance Lord Horazont
_________________ If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung. current projects: ManiacLab; aioxmpp zombofant network • my photostream „Writing code is like writing poetry“ - source unknown
„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb
Registriert: Do Sep 02, 2004 19:42 Beiträge: 4158
Programmiersprache: FreePascal, C++
Ok... Ich habe jetzt eine Lösung für das Umrechnen von ABC zu XY. Nur ganz verstanden habe ich sie noch nicht, aber das wird sicherlich auch noch.
X = C * sin(30°) + (0.5-B*sin(30°))
Y = A * cos(30°)
So ungefähr zumindest.
Gruß Lord Horazont
_________________ If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung. current projects: ManiacLab; aioxmpp zombofant network • my photostream „Writing code is like writing poetry“ - source unknown
„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb
Registriert: Do Sep 02, 2004 19:42 Beiträge: 4158
Programmiersprache: FreePascal, C++
Nein. Aber es ist auch verdammt schwer, das zu erklären... Nun, stell dir vor, du hast drei Werte, zum Beispiel drei Schwerpunkte bei einer Zivilisation: Produktion, Forschung und Finanzen. Nun hast du 100 Punkte, die du alle verteilen musst, nicht einen mehr und nicht einen weniger. Das kann man mit einem Gleichseitigen Dreieck lösen, wenn man für alle drei Kategorien die Winkelhalbierenden der Eckpunkte als Achsen verwendet. Dann ist für jeden Punkt im Dreieck gegeben, dass die Anzahl der Punkte, die die drei Werte bekommen, zusammenaddiert genau die Maximalzahl ergibt.
Klar geworden oder soll ichs nochmal versuchen?
Gruß Lord Horazont
_________________ If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung. current projects: ManiacLab; aioxmpp zombofant network • my photostream „Writing code is like writing poetry“ - source unknown
„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb
Registriert: Do Sep 02, 2004 19:42 Beiträge: 4158
Programmiersprache: FreePascal, C++
Interessanter Ansatz, Flash. Den muss ich bei gelegenheit mal durchrechnen. Der ist vieel unkomplizierter als das, was mir mein Bruder vorgeschlagen hat und er erscheint mir auch sehr logisch.
Klappt das ganze dann auch mit Fünfecken und so? Also:
a*P1 + b*P2 + c*P3 + d*P4 + e*P5 = P wenn a+b+c+d+e=1
Gruß Lord Horazont
_________________ If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung. current projects: ManiacLab; aioxmpp zombofant network • my photostream „Writing code is like writing poetry“ - source unknown
„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb
Wenn die 5 Punkte in einer Ebene liegen (sonst beschreibst Du ein Polytop) und du das beschriebene Polygon als Konvex annimmst, dann gehts. Eindeutig ist die Darstellung aber nicht mehr... Siehe auch http://de.wikipedia.org/wiki/Konvexkombination unter Spezialfälle letzter Punkt.
Registriert: Do Sep 02, 2004 19:42 Beiträge: 4158
Programmiersprache: FreePascal, C++
Was meinst du, die Darstellung ist nicht mehr eindeutig, wenn ich ein zweidimensionales, gleichseitiges Fünfeck habe? Geht das dann nicht mehr so schön einfach wie beim Dreieck, dass jeder Position genau ein Werttripel zugeordnet werden kann (und umgekehrt)?
Gruß Lord Horazont
_________________ If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung. current projects: ManiacLab; aioxmpp zombofant network • my photostream „Writing code is like writing poetry“ - source unknown
„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb
Mitglieder in diesem Forum: 0 Mitglieder und 4 Gäste
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.