SVG auf die kleinste koordinate skalieren
lima-city → Forum → Heim-PC → Software
abstand
addieren
ahnung
berechnen
beschreiben
code
figur
http
koordinate
koordinatensystem
option
polygon
prinzip
punkt
richtung
sagen
skalierung
startpunkt
system
zahl
-
Also, hallo erst mal.
Um ein SVG in einem einfachen Koordinaten System anzuzeigen muss ich das svg kleinstmöglich skalieren.
d.h. zwei polygone z.B. mit den Koordinate:
2000,300,2200,400
und
1000,200,1300,200
skaliert:
20,3,22,4
und
10,2,13,2
mit start Punkt:
10,2
10,1,12,2
und
0,0,3,0
gibt's so ne Option in inkscape?
oder gibt's es direkt schon ne Option für ein Koordinaten System?
(also mit Startpunkt und keine Pixel angaben)?
Und nein ich kann diese nicht alle Berechnen da das eine menge von Polygonen sind.
Danke für die Antwort
Beitrag zuletzt geändert: 9.2.2016 22:49:03 von willstdueswissen -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Also... ich habe nicht viel Ahnung bvon XML und SVG. Habe nur heute Nacht mal die entsprechenden Seiten auf Wikipedia angesehen.
Aber, wenn ich das richtig verstanden habe, ist das Kordinatensystem implementiert. Du mußt dabei nur die Orientierung/Ausrichtung und die Offsets für Deine Startpunkte berücksichtigen.
Und dann gibt es offensichtlich die Möglichkeit von Schleifen z.B. For each
http://www.linkwerk.com/pub/xmlidp/2000/kap-xslt-if.html
Ich kann DIr nicht sagen, wie das gecodet wird (weil ich keine Ahnung von xml/svg) und zuletzt in 65xx-Assembler programmiert habe, aber das Prinzip ist damit klar:
WIr haben die Beschreibung einer graphischen Figur durch 4 Zahlen. Es kann sich nur um eine Linie, ein Rechteck oder ein Quadrat handeln. Andere Figuren, die man so beschreiben könnte, sind mir nicht bekannt.
Dabei bilden die ersten beiden Zahlen eine Paar und die anderen beiden genauso. Die ersten beiden Zahlen werden - weil das üblicherweise so ist - als näher am Ursprung des Koordinatensystemes angenommen und die anderen beiden als weiter entfernt. Wobei wir in der Regel die erste Zahl als den Abstand unserer Koordinate vom Ursprungspunkt in x(also wagerechter) Richtung sehen, während die zweite Zahl den Abstand unserer Koordinate in y(senkrechter) Richtung vom Ursprungsort angibt. Das ist trivial und möglicherweise bekannt. Das weiß ich nicht.
Du möchtest für jede dieser Figuren zunächst eine Verkleinerung (Skalierung) durchführen und dann einen Startpunkt zuweisen.
Da komme ich jetzt etwas in´s Schleudern, weil Du zwei Startpunkte angegeben hast. Soll jede Figur an beiden Startpunkten gezeichnet werden, sollen sie sich abwechseln oder gibt es eine Bedingung.
Jedenfalls könntest Du eine Matritze benutzen oder Du mußt Deine Koordinatentabelle zerlegen.
Die Berechnung für den Startpunkt ist im Prinzip ganz einfach, wenn Du eine relative Kkordinatenangabe hast und nicht sehr kompliziert bei einer absoluten.
Bei der relativen Angabe werden nur für den ersten Eckpunkt die Daten im Koordinatensystem angegeben. Die anderen beiden Zahlen beschreiben den Abstand in x- und y-Richtung zur anderen Ecke.
d.H.: ein Polygon 4,10,100,80 mit relativer Angabe fängt am punkt x=4 y=10 an und geht bis x=104 y=90
während ein Polygon mit der gleichen Angabe absolut am Punkt x=4 y=10 beginnt und am Punkt x=100 y=80 endet.
Due siehst den Unterschied, denke ich.
Für Deine Aufgabe bedeutet das: Wenn Du eine absolute Angabe hast, must Du die erste Zahl Deines Startpunktes zur ersten und zur dritten Zahl in Deinen Koordinatenangaben addieren. Genauso die zweite Zahl Deines Startpunktes zu dem zweiten und vierten.
Bei relativen Angaben brauchst Du nur die erste Zahl des Startpunktes zur ersten Koordinate und die zweite Startpunktzahl zur zweiten Koordinate addieren.
Und jetzt kommen wir erst einmal nicht weiter, weil ich nicht weiß, wie es sich, damit bei Dir verhält und wann Du welchen Startpunkt einsetzen willst.
Also warte ich da erst mal auf Rückmeldung von Dir zumal es ziemlich früh ist und ich nicht noch Blödsinn verzapfen will. (Ich hoffe, ich hab nicht schon.)
Beitrag zuletzt geändert: 10.2.2016 5:28:56 von john-gunn -
Problematik dabei ist die relativen angaben:
http://www.w3schools.com/svg/svg_path.asp
Ich suche ja nur nach einem fertigen Programm das mir die SVG zu einem Koordinatensystem umparsen.
Der Startpunkt sollte sich auf alle Polygone gleich beziehen, somit muss halt die kleinstmöglichste Koordinate dran glauben und als offset dienen (alle Polygone zusammen gehören als Grafik zusammen).
Die Skalierung ist genau so angesetzt.
Ich weiß nicht wie man so etwas nennt, aber ich denke so an einer Map!
Diese tools die ich da schon gefunden habe funktionieren alle gleich.
Diese genieren absolute Zahlen aus den Koordinaten ohne diese zu skalieren oder ein Startpunkt zu berechnen.
Ich könnte natürlich wie du schon gesagt hast ein tool selbst schreiben, was aber ich dann auch tun werden, wenn es keins so gibt.
Ich denke mal das es aber schon mal gegeben hat, um die svg größen gleich zu halten (im relativen Sinne)
und so zu sagen von 0% bis 100% geht.
Damit man negative Prozentzahlen vermeiden kann.
Der Startpunkt ist für mich eher optional.
Diesen punkt benötige ich nicht unbedingt.
Eher gehts um die kleinstmögliche Skalierung der svg ohne Matrix (https://developer.mozilla.org/de/docs/Web/SVG/Attribute/transform)
Insgesamt habe ich ein Gitter mit 100 Zeilen und 100 Reihen.
Diese muss ich mit den Polygonen aus dem SVG füllen.
(Ich kann auch halbe Reihen belegen)
Das gleiche Prinzip wäre auch nötig, wenn ich keine viewbox in html nutzen möchte (eher unsinnig, aber mal zum vergleich)
Zu beachten wäre, das ich nur absolute (relativ absolute xD) Zahlen haben darf (also 0-100%) und keine relativen wie im SVG vorhanden, diese M und Ls.
Also noch mal zum befestigen meiner Aussagen.
Alle Polygone sind 100%.
Koordinaten werden dann realtiv absolute zu den 100% berechnet.
(Ja es dürfen Kommazahlen rauskommen) -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage