SVG - Linie bei Kreislinie begrenzen
emu
- xml-derivat
0 Kai Lahmann0 emu
0 AndreasW0 emu
0 Thomas Meinike0 Eisbär
Hallo!
Bei meinen ersten SVG-Versuchen habe ich versucht das Hippie-Zeichen
mit SVG darzustellen.
<img src="http://members.24speed.at/dammerer/relevant/svg1.png" border=0 alt="">
Ich habe da allerdings ein Problem: Ich weiß zwar die Länge der roten
Linie, die gleich dem Radius des schwarzen Kreises ist, muss aber bei
einer Linie Anfangs- und Endpunkt angeben. Anfangspunkt wäre der Mit-
telpunkt des schwarzen Kreises, aber der Endpunkt lässt sich nicht ge-
nau definieren, da er mit der Länge der roten Linie durch Wurzel Zwei
ausgerechnet wird (Satz von Pythagoras im grünen Quadrat). Da kommen
unendlich viele Kommastellen und damit kann man es nicht exakt defi-
nieren, Annäherungswerte halte ich bei einer logischen Sprache für
fragwürdig.
Wie kann ich also exakt die Strecke angeben? Ich habe mir überlegt,
entweder gibt es ein Element, mit dem ich Anfangspunkt, Richtung und
Länge angeben kann oder man kann irgendwie die Linie bei der Kreisli-
nie stoppen. JavaScript-Lösungen kommen nicht in Frage. Kann man mit
SVG so etwas lösen?
emu
[der davon ausgeht dass die antwort nicht im archiv ist]
hi
Annäherungswerte halte ich bei einer logischen Sprache für
fragwürdig.
ist aber die einzige Möglichkeit - ein Kreis kann nicht genauer berechnet werden (-> Quadratur des Kreises)
Grüße aus Bleckede
Kai
Hallo!
Annäherungswerte halte ich bei einer logischen Sprache für
fragwürdig.
ist aber die einzige Möglichkeit - ein Kreis kann nicht genauer
berechnet werden (-> Quadratur des Kreises)
Von der Seite natürlich - darum habe ich mir ja überlegt, ob man es mit
anderen Mitteln lösen könnte, zwei mögliche Lösungsvorschläge, zu denen
mir aber die Information, ob diese mit SVG möglich sind bzw. auch der
Kode fehlen, habe ich ja angegeben.
Wenn das Problem nicht auf irgendeine Weise lösbar ist, dann ist SVG
einfach nicht vollständig und muss ergänzt werden. Ich gehe aber davon
aus, dass die schlauen Leute vom Konsortium sich etwas ausgedacht haben.
emu
[...]
Hallo!
Tach,
Bei meinen ersten SVG-Versuchen habe ich versucht das Hippie-Zeichen
mit SVG darzustellen.
image: http://members.24speed.at/dammerer/relevant/svg1.png
Leider bei mir nicht sichtbar.
Ich habe da allerdings ein Problem: Ich weiß zwar die Länge der roten
Linie, die gleich dem Radius des schwarzen Kreises ist, muss aber bei
einer Linie Anfangs- und Endpunkt angeben. Anfangspunkt wäre der Mit-
telpunkt des schwarzen Kreises, aber der Endpunkt lässt sich nicht ge-
nau definieren, da er mit der Länge der roten Linie durch Wurzel Zwei
ausgerechnet wird (Satz von Pythagoras im grünen Quadrat). Da kommen
unendlich viele Kommastellen und damit kann man es nicht exakt defi-
nieren, Annäherungswerte halte ich bei einer logischen Sprache für
fragwürdig.
Ja und?
Angenommen, Du entscheidest Dich dafür, mit z.B. 10 Nachkommastellen zu arbeiten.
Hast Du mal überlegt, welchen Durchmesser der Kreis haben müßte, bis unter dieser Voraussetzung der Unterschied zwischen exaktem und angenähertem Wert für die Linienendpunkte soviel ausmacht, daß es zu einer Fehldarstellung kommt?
Andreas
Hallo!
<img src="http://members.24speed.at/dammerer/relevant/svg1.png" border=0 alt="">
Leider bei mir nicht sichtbar.
Ich habe im Moment kein Programm um dem Internet Exlorer genehme Gra-
fiken zu produzieren.
Angenommen, Du entscheidest Dich dafür, mit z.B. 10
Nachkommastellen zu arbeiten.
Es soll aber eine saubere Lösung sein, kein Workaround.
Hast Du mal überlegt, welchen Durchmesser der Kreis haben müßte,
bis unter dieser Voraussetzung der Unterschied zwischen exaktem und
angenähertem Wert für die Linienendpunkte soviel ausmacht, daß es
zu einer Fehldarstellung kommt?
Nein. Du kannst mir aber zutrauen, dass ich einen Workaround fände,
wenn ich nicht eine saubere Lösung haben wollte.
emu
[...]
Hallo,
Wie kann ich also exakt die Strecke angeben?
Gib sie einfach mit einigen Nachkommastellen an. Intern wird im Viewer durchaus feiner als 1px gerechnet. Im folgenden Beispiel habe ich mal neben dem Kreis einen Text eingebaut, der beim Anklicken seine Breite ausgibt.
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
<svg xmlns="http://www.w3.org/2000/svg">
<circle cx="100" cy="100" r="50" style="fill: #FFF; stroke: #000; stroke-width: 1px"/>
<line x1="100" y1="50" x2="100" y2="150" style="fill: #000; stroke: #000; stroke-width: 1px"/>
<line x1="100" y1="100" x2="135.7107" y2="135.7107" style="fill: #F00; stroke: #F00; stroke-width: 1px"/>
<text id="txt" x="200" y="200" style="font-family: Verdana; font-size: 14px" onclick="alert(document.documentElement.getElementById('txt').getComputedTextLength())">Klick mich!</text>
</svg>
MfG, Thomas
Hallo emu
... Da kommen
unendlich viele Kommastellen und damit kann man es nicht exakt defi-
nieren, Annäherungswerte halte ich bei einer logischen Sprache für
fragwürdig.
Der SVG-Standard entstammt der Publishing-Welt, dort also wo Programme wie Illustrator, Quark Xpress, Freehand ihren Dienst tun, bzw. Formate wie Postscript und PDF üblich sind. Speziell weisst SVG starke Ähnlichkeiten zu PDF auf.
In diesen Programmen wird seit eh und jeh mit einer endlichen Präzision gearbeitet, XPress z.B. arbeitet auf maximal 1/1000 mm genau, Postscript (als High-End-Belichtersprache hat bei Fliesskomma eine signifikante Präzision von 8 Stellen.
Trotzdem können mit diesen Werkzeugen seit Jahrzehnten hoch- und höchstewertige Medienprodukte erstellt werden.
Dies ganz einfach aufgrund der Tatsache, dass das Auflösungsvermögen der Ausgabemedien, bzw. letzen Endes des menschlichen Auges selbst begrenzt sind.
Begnüge Dich einfach mit 10 (sigifikanten) Nachkommastellen und lebe glücklich mit den tollen Werkzeugen die Dir an die Hand gegeben werden ;-)
Grüsse
Eisbär