如何计算手写笔中的平方根

时间:2014-01-09 23:26:26

标签: stylus

有没有办法让Stylus计算x的平方根?
你知道,就像JavaScript Math.sqrt(x)那样。

我正在创造一个应该以它的起源为中心的钻石。我现在正在使用以下代码:

vendor(prop, args...)
    -webkit-{prop} args
    -moz-{prop} args
    -o-{prop} args
    -ms-{prop} args


rotate(r)
    vendor('transform', unquote('rotate('+r+')'))
    rotate r


.diamond
    display block

    width 7ex
    height @width
    line-height @height
    rotate(-45deg)

    /* calc offset of a rotated square
     * @width * @width = $offsetX * $offsetX + $offsetY * $offsetY
     * @width * @width = ( $offset * $offset ) * 2 // for a square: $offsetX= $offsetY
     * ( @width * @width ) / 2 = ( $offset * $offset )
     * sqrt(( @width * @width ) / 2) = $offset
     * @width * sqrt(2) = $offset
     */
    $offset = @width / 1.41421356237 // =sqrt( 2 )
    margin (- $offset) 0em 0ex (- $offset ) // center the diamond on its origin

    padding 0ex 0em

    background-color red

正如你所看到的,我设法在没有实际计算平方根的情况下解决它,而是使用常量值。 但是当我查看Built-in Functions of Stylus时,我无法找到任何计算平方根的方法。

有没有办法让手写笔计算x的平方根?
原因最好的是拥有一些不错的功能,如LESS has built in.

2 个答案:

答案 0 :(得分:5)

作为answered there,您可以使用内置的math功能,因此自定义sqrt可能看起来更好:

sqrt(x)
  return math(x, 'sqrt')

答案 1 :(得分:0)

您可以使用此代码:

sqrt(x)
  if x == 0
    result = 0
  else
    result = 4
    for i in (0..10)
      result = ((result + (x / result)) / 2)

在codepen上演示:http://cdpn.io/jcnLF