Clojure Не знаю, как создать ISeq - PullRequest
0 голосов
/ 20 октября 2018

Я анализирую файл obj и пытаюсь подставить вершины в f вместо порядковых чисел.

Пример f:

[[{:v 1 :vt 1 :vn 1} {:v 2 :vt 2 :vn 2} {:v 3 :vt 3 :vn 3}]
 ...]

Но у меня ошибка

java.lang.IllegalArgumentException: Don't know how to create ISeq from: clojure.core$map$fn__5583

в строке

{:v (nth v-list (dec v)) :vt (get vt-list (dec vt)) :vn (nth vn-list (dec vn))}

Как это исправить?Спасибо.

Мой код:

(defn fill-vertex [{:keys [v vt vn]} v-list vt-list vn-list]
  {:v (nth v-list (dec v)) :vt (get vt-list (dec vt)) :vn (nth vn-list (dec vn))})

(defn fill-triangle [triangle v vt vn]
  (map #(fill-vertex % v vt vn) triangle))

(defn to-f-list [{:keys [f v vt vn matrix]}]
  (let [v-u (->> v (map #(add-perspective % matrix) (map #(viewport %))))
        vn-u (map #(add-perspective % matrix) vn)]
    (map #(fill-triangle % v-u vt vn-u) f)))

1 Ответ

0 голосов
/ 21 октября 2018
(->> v (map #(add-perspective % matrix) (map #(viewport %))))

совпадает с

(map #(add-perspective % matrix) (map #(viewport %)) v)

Но

(map #(viewport %))

Это не последовательность, это функция преобразователя.

Вы, вероятно, имели в виду этобыть:

(->> v (map #(add-perspective % matrix)) (map #(viewport %)))

Трудно обнаружить отладку такого рода ошибки, когда вы помещаете несколько операций в одну строку, поэтому я рекомендую вам использовать разрыв строки

(->> v
     (map #(add-perspective % matrix))
     (map #(viewport %)))

Это делаетлегче следовать шагам и, следовательно, группировке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...