Вопрос

Я хотел попробовать FDX Демо Однако это дало мне ряд ошибок и предупреждений из -за проблем совместимости, поэтому я пытался заставить его работать правильно. Полный код находится на 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) list ->' d)) ref
но данный
(float [,] * float [,]) ref.
Тип '(' a * 'b) list ->' c 'не соответствует типу' float [,] '

Спасибо за помощь!

Это было полезно?

Решение

У меня не было времени, чтобы хорошо взглянуть, но попробуйте изменить определение 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.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top