ここでマインドブロックしますが、これをあまり見苦しくする方法がわかりません。
def getClosestSphere(ray: Ray, spheres: List[Sphere]): Sphere = {
val map = new HashMap[Double, Sphere]
for (sphere <- spheres) {
val intersectPoint = sphere.intersectRay(ray)
map.put(intersectPoint, sphere)
}
map.minBy(_._1)._2
}
私が何をしているのか分かりますか?私は球のリストを持っています。各球にはメソッド intersectRay があり、double を返します。
その関数の結果が最小の Sphere を取得したいと思います。これを1行で実行できるようにするための優れた関数構造があることは知っていますが、それを見ることができません:(