Forwarded from Deleted Account
KochHill.kt
2.1 KB
import kotlin.math.sin
import kotlin.math.cos
import kotlin.math.PI
protected fun forward(distance: Double) {
val pA = position
val distanceAB = distance.distanceDegree(rotation)
val pB = pA + distanceAB
canvas.drawLine(pA.x, pA.y, pB.x, pB.y)
position.assign(pB)
}
private fun Double.distanceDegree(rotation: Deg): Point2 {
val d = this; val r = rotation.coerceRad()
return Point( (d*cos(r)).toInt(), (d*sin(r)).toInt() )
} protected var rotation: Deg get() = rawRotation*FULL_DEG
set(d) { rawRotation = d/FULL_DEG }
protected fun rotate(deg: Double) { rotation += deg }
protected fun forward(distance: Double) {
val pA = position
val distanceAB = distance.lineDegreed(rotation)
val pB = pA + distanceAB
canvas.drawLine(pA.x, pA.y, pB.x, pB.y)
position.assign(pB)
}
private fun Double.lineDegreed(rotation: Deg): Point2 {
val d = this; val r = rotation.coerceRad()
return Point( (d*cos(r)).toInt(), (d*sin(r)).toInt() )
}
/** Coerce to radix from degree */
fun Deg.coerceRad() = this / 180.0 * PI
/tmp/duangsuse.sock
#PLT 咳咳,咱来谈谈这个东西的实践的问题。 既然咱说是实践,那干脆就引入一个编程语言吧,我们叫它 MiniScheme。 Scheme 呢…… 不错!我们使用满是括号的 s-expression,这种基础表达方式。 (+ 1 2) ; 3 那么这个语言呢,我们打算用 Kotlin Common 开发(因为也没必要特别地放 JVM 上) Literate Programming…… 算了,LKT 还没完成,在那之前,还是保持老编程风格好了。 怎么计算?慢慢看,但我们认为,输入代码是 CharIterator,这样支持…
其实我们写这么多,这门语言开发来也是可以和 Turtle 兼容的。
/tmp/duangsuse.sock
#GithHub 这么好玩的东西,我没精力维护就直接堆 Share 了,也真是可惜(迫真)
说起来,现在 Share 还没人打星,谁愿意抢个前排???(
本苏可是做好了包装哦,
缺一不可
本苏可是做好了包装哦,
LICENSE README.md .gitignore三 大 文 件