Vra

My taak is om 'n algoritme wat verskillende soorte krommes pas op 'n gegewe punt-volgorde in 2-dimensionele ruimte te ontwikkel.

Om in staat wees om my algoritme te toets, het ek gekies SVG om die resultaat te vertoon. Ek het 'n paar probleme met dit.

As daar dalk 'n heel ander insette en uitsette van my algoritme, is dit noodsaaklik dat ek die gegenereerde SVG lêers met die vermoë in om te vergroot kon sien!

Maar 'n pad in SVG kan vertoon net met 'n sekere wydte. As ek in zoom, is dan die breedte van die pad kry wyer. Ek wil graag die wydte te wees byvoorbeeld 1 pixel glad zoom vlakke. Is daar 'n oplossing vir hierdie?

Ook: kan SVG vertoning punte? Ja, eenvoudige, rou punte.? Ek het gevind dat dit kan nie.

Dankie

Was dit nuttig?

Oplossing

Baie ander vektor formate (soos PostScript en PDF) sal laat jy 'n beroerte-wydte van 0 vir 'n "haarlyn" beroerte. Nie so met SVG. Maar ek dink jy kan bereik wat jy wil hê as jy 'n persentasie beroerte-wydte gebruik. Sien die w3c SVG spesifikasies vir besonderhede , maar, basies, moet jy wees in staat wees om so iets te doen:

stroke-width:"1%"

Dit moet 'n beroerte jou kurwe met 'n lyn breedte wat 'n konstante 1% van die jaag reghoek, ongeag zoom vlak.

As vir punte, SVG is daar nie op. Toe ek dit gedoen het in die verlede (met behulp van PostScript) Ek het nog altyd gebruik om 'n boog met 'n klein redius om 'n klein sirkel (wat jy kan vul met 'n dot maak, as jy wil) te trek.


@Zoli: Na jou kommentaar, ek was op die punt om stel voor jy kyk na PostScript sodat jy die haarlyn beroerte breedte kan gebruik wanneer ek afgekom die nie-skaal-beroerte vektor-effek in die SVG spesifikasie :

vector-effect="non-scaling-stroke"

this add Net om jou kurwe en dit moet invariant aan skalering wees, volgens die spec. Hul voorbeeld gebruik line, maar dit moet werk op jou kurwes as well.

Ander wenke

Daar is geen element of iets soos dit in SVG tans, maar voeg by dat daar in die SVG WG bespreek, so dit kan ingesluit word in die toekoms. Voel vry om jou behoeftes en vereistes te stem vir 'n element aan die publiek svg poslys:. Www-svg@w3.org

'n tydelike oplossing is om Bv elemente te gebruik en hulle moet wees onder nul lengte, as jy wil kan jy ronde linecaps te maak dit 'n punt te vertoon het. Dit hang alles af van wat jy nodig het hierdie vir. 'N Sirkel met r = 0 dalk 'n beter pas wees.

Die "vektor-effek" eiendom met waarde nie-skaal-beroerte 'is wat jy moet gebruik om te sê dat die beroerte nie moet volgens skaal. Dit is nie so moeilik om 'n javascript oplossing wat verseker beroertes behoorlik afgeskaal as 'n vektor-effek "nie native ondersteun implementeer. Opera 9.5+ ondersteun dit native.

Dankie Naaff die hulp. Ek dink ek sal met firefox bly, en Ek sal spesifiseer vir elke algoritme-uitvoering van die lyn breedte in die gegenereerde SVG-lêer. Wat voldoende sal wees vir my wees.

Gelisensieer onder: CC-BY-SA met toeskrywing
Nie verbonde aan StackOverflow
scroll top