以文本方式查看主题

-  中文XML论坛 - 专业的XML技术讨论区  (http://bbs.xml.org.cn/index.asp)
--  『 SVG/GML/VRML/X3D/XAML 』  (http://bbs.xml.org.cn/list.asp?boardid=21)
----  关于平滑处理polyline及如何得到曲线上的坐标  (http://bbs.xml.org.cn/dispbbs.asp?boardid=21&rootid=&id=74783)


--  作者:cjsy2009
--  发布时间:5/11/2009 11:57:00 PM

--  关于平滑处理polyline及如何得到曲线上的坐标
我现在正学习SVG, 有几个问题想请教。
通过一系列点,我们可以画出一条POLYLINE, 我的问题是在SVG中能不能将此polyline平滑处理. 是不是需要什么算法?
另外一个问题是, 我想在y轴上画一条竖线与此polyline交叉,现在已知x轴的坐标,请问如何找到相应的交叉点坐标? 谢谢。
--  作者:Qr
--  发布时间:5/12/2009 1:11:00 PM

--  
1、polyline是由一批线首尾相连而成的一组线,从而形成一条折线。对于polyline,SVG没有提供平滑处理,要想"平滑",只能定义足够多的坐标,以便绘出的折线更“平滑”。
2、polyline作为折线,很难根据某一条折线计算出其某一点的坐标,除非这条折线符合一定的规律,能够用几何的方法进行计算。遇到你这种情况,一般在计算所要绘制折线坐标的同时,进行相应的处理。当你要找交叉点坐标时,根据已知x轴的坐标去匹配得到。

path在“平滑”方面比polyline优秀。


--  作者:cjsy2009
--  发布时间:5/13/2009 5:17:00 AM

--  
谢谢qr.
我在用XSLT转化polyline时遇到一个问题,程序如下:
    <polyline points="0 0, 28.43543543 27.5635340534, 169.22442342342 169.343423432, 320.3243232432, 245.45455345345" style="stroke : black; stroke-width : 2; fill : none"/> <!-- 正常显示-->
    <xsl:variable name="points">
      <xsl:for-each select="$poly-points">
        <xsl:sort data-type="number" select="x"/>
        <xsl:if test="position() != 1">
          <![CDATA[, ]]>
        </xsl:if>
        <xsl:value-of select="x"/> <xsl:value-of select="y"/>
      </xsl:for-each>
    </xsl:variable>
    <text x="100" y="100">
      <xsl:value-of select="$points"/>
    </text> <!-- 正常显示一系列坐标-->

    <xsl:element name="polyline">
      <xsl:attribute name="points">
        <xsl:value-of select="$points"/>
      </xsl:attribute>
      <xsl:attribute name="style">
        <![CDATA[stroke : black; stroke-width : 2; fill : none]]>
      </xsl:attribute>
    </xsl:element> <!-- 不能正常显示-->
为什么用变量代替坐标值后polyline不能正常显示? 谢谢。


--  作者:Qr
--  发布时间:5/13/2009 11:09:00 AM

--  

      <xsl:attribute name="points">
        <xsl:value-of select="$points"/>
      </xsl:attribute>
改成
      <xsl:attribute name="points"><xsl:value-of select="$points"/></xsl:attribute>
试试看。在使用XSL时经常遇到换行与不换行的问题,效果往往有细微不同。

或:“ ”改“<text> </text>”

XSLT转SVG我做过4、5次,但是比较早以前的事了,具体是否用到变量&怎么做已经模糊了。没有具体的代码,不好调试,自己试一下看吧。


--  作者:cjsy2009
--  发布时间:5/14/2009 12:49:00 PM

--  it works
把 换成<xsl:text> </xsl:text>, 图形能正常显示。有意思的是,我原先用<![CDATA[ ]]>,却不能显示。难道两者有什么不同吗?
很高兴发的帖子能很快回复,再次谢谢qr。
--  作者:Qr
--  发布时间:5/14/2009 2:24:00 PM

--  
<![CDATA[ ]]>可能会被保留在转换后的SVG中,导致无法识别。<xsl:text> </xsl:text>则不会,它只会输出标记内的字符。
W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
58.594ms