emu: SVG - Linie bei Kreislinie begrenzen

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]

  1. 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

    1. 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
      [...]

  2. 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

    1. 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
      [...]

  3. 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

  4. 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