你好伙伴Overflowers.我正在开发一个组项目,用于创建绘制3D场景的2D渲染的光线跟踪器.我目前正在进行的任务涉及对象(形状)的矩阵变换,需要移动,镜像,剪切等.
在处理形状时,我们选择实现一个定义命中函数类型的接口.此命中函数在每个形状中定义,例如球体,方框,平面等.当变换形状时,我需要变换撞击形状的光线,并且这样做的方式似乎是具有更高阶函数,改变原始形状命中功能.
为了做到这一点,我已经实现了函数transformHitFunction,它似乎工作,但实现Shape接口的新类型transformedShape给了我错误
未找到与此覆盖对应的抽象属性
这对我没有任何意义,因为它适用于同类型的其他命中功能.谁能发现什么是错的?
我试图剥离与此问题无关的所有模块,命名空间和代码.
type Transformation = Matrix of float [,]
type Vector =
| V of float * float * float
let mkVector x y z = V(x, y, z)
let vgetX (V(x,_,_)) = x
let vgetY (V(_,y,_)) = y
let vgetZ (V(_,_,z)) = z
type Point =
| P of float * float * float
let mkPoint x y z = P(x, y, z)
let pgetX (P(x,_,_)) = x
let pgetY (P(_,y,_)) = y
let pgetZ …Run Code Online (Sandbox Code Playgroud)