Вниз  Общие вопросы
- 12.08.2014 / 18:20
Reaper
  Пользователь

Reaper 
Сейчас: Offline
Пытался разобраться с матрицами для перемещения/вращения камеры, но получился какой-то бред. Например — нужно перенести координаты из WCS в CCS

[x'] [1 0 0 -camerax] [x]
[y'] = [0 1 0 -cameray] * [y]
[z'] [0 0 1 -cameraz] [z]
[ 1] [0 0 0 1 ] [1]

Но вычитать можно только матрицы одного размера. И вот это вот "100-camerax" — бред какой-то.
- 12.08.2014 / 19:04
Ксакеп
  Модератор форума

Ксакеп 
Сейчас: Offline
Reaper, [100 – camerax] — это строка в матрице, правильнее так: [1, 0, 0, –camerax]

Более того, у тебя там произведение матриц, а не вычитание, то есть:
[новая система координат/углов] = [матрица-преобразователь] * [старая система координат]

У матриц операция произведения определена по-своему. Тут нужно нагуглить "алгебра матрицы операции", почитать, что там и как.

Если лень, то расписал:
x' = 1*x + 0*y + 0*z –1*camerax = x – camerax,
y' = 0*x + 1*y + 0*z –1*cameray = y – cameray,
z' = 0*x + 0*y + 1*z –1*cameraz = z – cameraz.

Изменено Ксакеп (12.08 / 19:12) (всего 3 раза)
- 12.08.2014 / 19:48
Reaper
  Пользователь

Reaper 
Сейчас: Offline
Ксакеп, спасибо.
- 16.08.2014 / 22:15
SeTSeR
  Пользователь

SeTSeR 
Сейчас: Offline
Подскажите онлайн-интерпретатор APL/J/K
- 16.08.2014 / 22:19
Naik
  Пользователь

Naik 
Сейчас: Offline
SeTSeR, Как раз недавно видел, но там не все что тебе нужны http://repl.it/languages
- 16.08.2014 / 22:28
SeTSeR
  Пользователь

SeTSeR 
Сейчас: Offline
Naik, спс :)
Да мне бы любой из них, это по сути одно и то же :)

Изменено SeTSeR (16.08 / 22:28) (всего 1 раз)
- 21.08.2014 / 10:45
RGT
  Пользователь

RGT 
Сейчас: Offline
Есть задача: распознать арность вызова функции при использовании метода shunting yard.
Вопрос: как распознать 0 от 1? Если считать по запятым, то, что в 0, что в 1, их нет.
На момент проблемы ситуация такая:

Output queue:
Stack: funcall left_par

Проблемные списки лексем:
Nullary: right_par
Unary: value right_par
Binary: value comma value right_par
...

Пояснение по алгоритму (для ленивых):
На следующих итерациях, если в очереди лексем...
* right_par -> из стека уйдёт left_par, в свою очередь, right_par тоже уйдёт из очереди;
* value -> уйдёт в выходную очередь (output queue);
* comma -> пока на вершине стека не left_par, все лексемы перекладываюся из стека в выходную очередь.
__________________
 don't tread on me
- 21.08.2014 / 10:48
RGT
  Пользователь

RGT 
Сейчас: Offline
Если же делать костыли типа запоминания состояния (т.е. ожидаем вызов функции) и подсчёта значений, может выйти не хорошая ситуация:
Lexems: funcall left_par value plus value right_par
т.е. fun(1+1)
__________________
 don't tread on me
- 21.08.2014 / 11:03
RGT
  Пользователь

RGT 
Сейчас: Offline
Нашёл слишком некрасивое решение, всё с тем же запоминанием состояния:
* запоминаем вызов (в прочем, это и делалось ранее),
* если value -> ставим флаг, что аргументы были,
* если right_par -> проверяем флаг, was_args ? count_of_commas + 1 : 0
:girl:
__________________
 don't tread on me
- 21.08.2014 / 12:47
Ксакеп
  Модератор форума

Ксакеп 
Сейчас: Offline
RGT, компиляторы пишете штоле?
Наверх  Всего сообщений: 1673
Фильтровать сообщения
Поиск по теме
Файлы топика (38)