svg配合css多变形

1、获取多边形的点(n是几边形,w是宽,h是高)

    const polygon = (n: number, w: number, h: number) => {
        let deg = 2 * Math.PI / n
        let points = []
        for (let i = 0; i < n; ++i) {
            let theta = deg * i
            let x = 0.5 * Math.cos(theta) + 0.5
            let y = 0.5 * Math.sin(theta) + 0.5
            points.push([w * x, h * y])
        }
        return points
    }

2、画svg的path的线(numbers为上述多边形输出的点)

const _resetNumbers = () => {
        let str = ''
        for (let i = 0; i < numbers.length; i++) {
            let salt = 'L'
            if (i === 0) {
                salt = 'M'
            }
            str += salt + ' ' + numbers[i][0] + ' ' + numbers[i][1]
        }
        str += ' Z'
        return str
    }

3、html里呈现

<svg width="100" height="200">
    <path
        d={_resetNumbers()}
        stroke="black"
        fill="transparent"/>
</svg>    

  

posted @ 2020-08-25 16:54  kimingw  阅读(293)  评论(0编辑  收藏  举报