Leon174
Навскидку... Если roat булево значение, то выражение if roat == true (false) избыточно, просто if roat (not roat).
Leon174
В опросе кнопок у тебя есть дополнительное условие roat == false и это условие в шести строках повторяется. Вынеси это условие, не проверяй каждый раз. roat == false эквивалентно not roat. for i = 1, #cord do if not roat then if btn(0) then ... end ... end end
Leon174
Ну и много чего, потом посмотрю. Структуры, например, не очень, как по мне, потому что выражения вида card[pt[i][1]].x выглядят так себе. Но это не точно, я не понял, что ты делаешь.
Leon174
Телега не особо для кода подходит, лучше стороннее что-то использовать. Например, где подсветка кода есть.
Domka
P[i][1] допустим может быть равна 1 а P[i][2] может бать равна 3
Domka
И получается что линия будет строится от координат 1 точки до координат 3 точки
Leon174
Все, я ушел. Распиши структуры, функции и свои действия в коде, чтобы потом вопросы не задавать.
Domka
Удачи
Leon174
Могу скринами прям из tic 80 кинуть
Как вариант, не знаю хорошо ли. Кстати, ТИК этот я не знаю.
Domka
Я понял
Domka
Пожалуй в лс все распишу
Snusmumriken
cord={ {x=5,y=5,z=5}, {x=5,y=-5,z=5}, {x=-5,y=-5,z=5}, {x=-5,y=5,z=5}, {x=0,y=0,z=0} } pt={ {1,2}, {2,3}, {3,4}, {4,1}, {1,5}, {2,5}, {3,5}, {4,5} } card={} for i=1,#cord do card[i]={x=0,y=0,z=0} end rad={x=0,y=0,z=0} cent={x=0,y=0,z=0} size=5 function zsort(p1,p2) return p1.z>p2.z end ofsz=100 function roct(mass,center,r1,r2,r3) for i=1,#cord do local a,b,c local a1,b1,c1 local a2,b2,c2 local a3,b2,c3 local mass1={} mass1[i]={x=0,y=0,z=0} a = mass[i].x b = mass[i].y c = mass[i].z a1 = a*math.cos(r3)-b*math.sin(r3) b1 = a*math.sin(r3)+b*math.cos(r3) c1 = c c2 = c1*math.cos(r2)-a1*math.sin(r2) a2 = c1*math.sin(r2)+a1*math.cos(r2) b2 = b1 b3 = b2*math.cos(r1)-c2*math.sin(r1) c3 = b2*math.sin(r1)+c2*math.cos(r1) a3 = a2 card[i].z=c3*size fov=180 k =fov/(card[i].z + cent.z+ofsz) card[i].x = 120+ math.floor((a3*size + cent.x) * k) card[i].y = 68+ math.floor((b3*size + cent.y) * k) end end n1=120 n2=68 n3=200 roat=false function TIC() cls() for i=1,#cord do if btn(0)and roat==false then cent.y=cent.y-1 end if btn(1)and roat==false then cent.y=cent.y+1 end if btn(2)and roat==false then cent.x=cent.x-1 end if btn(3)and roat==false then cent.x=cent.x+1 end if btn(4)and roat==false then cent.z=cent.z-1 end if btn(5)and roat==false then cent.z=cent.z+1 end end if btnp(7)and roat==false then roat=true elseif btnp(7)and roat==true then roat=false end roct(cord,cent,rad.x,rad.y,rad.z) if roat==true then if btn(0)then rad.x=rad.x+0.01 end if btn(1)then rad.x=rad.x-0.01 end if btn(2)then rad.y=rad.y+0.01 end if btn(3)then rad.y=rad.y-0.01 end if btn(4)then rad.z=rad.z+0.01 end if btn(5)then rad.z=rad.z-0.01 end end for i=1,#pt do line(card[pt[i][1]].x,card[pt[i][1]].y, card[pt[i][2]].x,card[pt[i][2]].y,2) end end
Кароч, в целом, есть один такой довольно интересный способ. Ты такой берёшь матрицу камеры, берёшь какую-нибудь объёмную фигурку и умножаешь каждую вершинку этой фигурки на матрицу. Ты такой берёшь два компонента x-y получившихся векторов — это их положение на экране. Берёшь z-компонент — это их глубина. И вот нам есть на чём сортировать.
Domka
Матрица камеры?
Snusmumriken
Матрица камеры.
Domka
Это где координаты записаны?
Snusmumriken
Координаты чего?
Domka
Так
Domka
Матрица камеры мне ее добавить тоесть в код
Domka
Координаты чего?
Я подумал что ты говоришь про мой код чего то
Domka
Именно что матрица камеры у менч есть
Snusmumriken
Я тебе про глобальную концепцию.
Domka
Ладно
Snusmumriken
1. Ты создаёшь матрицу перспективного искажения (глянь глянь cpml.mat4.from_perspective) 2. У тебя есть условно несколько векторов для камеры: положение, угол поворота, масштаб. 3. Ты создаёшь матрицу для упаковки в неё положений, углов и масштабов. 4. Умножаешь на матрицу перспективы. 5. Умножаешь на эту матрицу все вершины нужных тебе фигурок. 6. Опционально — умножаешь вершины ещё и на матрицу положения-угла-масштаба самой фигурки.
Domka
Это все?
Snusmumriken
Да. Вот тут — работа со view-матрицей.
Domka
И получается это отсортировка
Snusmumriken
Да, ты заодно получаешь сортировку вершинок/полигонов.
Domka
А отрисовка происходит уже по новой матрице,отсортированной?
Domka
Понятно
Domka
Ладно, попробую
Snusmumriken
А отрисовка происходит уже по новой матрице,отсортированной?
Смотри, у тебя одна-две матрицы: камера и моделька. Умножая их друг на друга, ты их совмещаешь, получая матрицу, умножая вершины модельки на которую, ты получаешь координаты всех вершинок модельки относительно камеры. И это круто.
Snusmumriken
Ничего у себя не удаляй, заведи новый крошечный проект для тестирования концепции.
Domka
Получается я получаю вершины модельки +отсортированные вершины модельки иглы поворота и размер
Domka
Ничего у себя не удаляй, заведи новый крошечный проект для тестирования концепции.
Хорошо, у меня уже 5 картриджей где я тестил с этим кодом
Domka
Оригинал у меня в сейфе хранится
Domka
:)
Domka
От моих рук подальше
Snusmumriken
Получается я получаю вершины модельки +отсортированные вершины модельки иглы поворота и размер
Ты получаешь вершины модельки + сортировка по глубине относительно камеры, с учётом углов поворота этой камеры и поворота/перспективы модельки.
Domka
Ладно
Domka
Попробуем
Domka
Кстаьи перспектива сейчас более нормальная
Domka
Чем раньше
Domka
Хотя какая разница._.
Snusmumriken
А ты можешь выбирать угол обзора и перспективы?
Domka
В каком смысле вибирать? Типо настраивать данные значения?
Snusmumriken
Ды
Domka
Да
Snusmumriken
Круть
Domka
У меня специальная переменная есть
Domka
Которая принимает угол обзора деленные на координаты по z, размер и дальность до объекта
Leon174
Если долго сидеть у реки, то можно увидеть как по ней проплывает труп твоего врага. А если долго ездить за город, то можно увидеть Снуса, который придет и всё распедалит без твоего участия. Уииии!
Leon174
Я не очень понимаю по-кошачьи, но кажется, что он читает мне лекцию о том, что я ничего не добился в жизни. Комментарии: youvi.ru/post/mzc8qBvqQrQ
кота
Я ДАВНО ТАК НЕ КРИЧАЛ
Leon174
Да чот не очень. Главная диагональ и та надуманная, а все остальное вообще бред какой-то. Или это недоступный мне очень тонкий юмор.
Leon174
Блин. (( Кот был прав.
Snusmumriken
Мои знакомые мехмато-физики ведущие в МГУ тоже орут со смешной картинки
Leon174
А математики-экономисты не орут.
Snusmumriken
А у них прикладная область и минимум теории в сравнении с.
Snusmumriken
И не настолько повёрнуты мозги на теме.
Leon174
Вот говяжьих приправок не было, точно. Хотя всякой другой херабры было...
Leon174
Доказательство наличия сверхспособностей у буддийских монахов. Обычный человек не смог бы выдержать подобное. Оценить: youvi.ru/post/260qcBkW41M
Arslan
Омг
Arslan
капец
fgntfg
Domka
Хотите задачку?
Domka
Довольно интересную
Leon174
Эта же лучше
Domka
На знание матиматики ._.
Leon174
Вакцина поступила в гражданский оборот
Leon174
Давай, жги. Если что, скажу, что матиматикой никогда не занимался
Domka
Ладно
Domka
Пользователь вводит шестизначное целое число. Создай из него два трёхзначных числа. Первое – из чётных цифр исходного числа. Второе – из нечётных цифр исхожного числа. Внимание!. При решении этой задачи нельзя использовать условные операторы и операторы цикла. Необходимо оставаться в рамках целочисленного типа данных и реализовывать решение только с помощью арифметических операторов: //, %, *, +, - .
Domka
Тоесть вводим число 975246
Domka
Выводиться 975 и 246