我一直想尝试FDX demo,但由于兼容性问题,它给了我一系列错误和警告,所以我一直在尝试让它正常工作。 完整代码位于pastebin。
我在这里遇到代码问题:
let drawSurf f (device:Device) =
let m,n = meshDims !mesh in
let data = Array.init (n*m) (fun k ->
let i,j = k2ij !mesh k in
let x,y = meshGet !mesh (i,j) in
let z = f (x,y) in // single precision f
(x,y,z))
in
let strips = triangleRows n m |> map (map (blendPlace !mesh data)) in
List.iter (fun strip -> drawTriangeStrip strip device) strips;
let m,n = meshDims !mesh in
let lines = gridLines n m in
let lines = lines |> map (colorPlace !mesh data Color.Black) in
drawLineList lines device
在F#interactive中给出了以下错误。
motion-sample.fs(438,53):错误FS0001:类型不匹配。期待着
((('a *'b)列表 - >'c)*(('a *'b)列表 - >'d))参考
但是给了一个
(float [,] * float [,])ref。
类型'('a *'b)列表 - > 'c'与'float [,]'
感谢您的帮助!
答案 0 :(得分:1)
我没有时间好好看看,但尝试将meshGet定义更改为
let meshGet (mesh:_[,]*_[,]) (i,j) = let X,Y = mesh in X.[i,j], Y.[i,j]
修改强>
实际上,甚至更好,看起来有更新鲜的副本
http://code.msdn.microsoft.com/fsharpsamples/Release/ProjectReleases.aspx?ReleaseId=2705
你应该使用它而不是发布在hubfs上的岁月。