![]() |
Ответ: Имитация водной поверхности.
Mr_F_, ну да если есть два перпендикулярных вектора то третий взаимноперпендикулярный получается просто векторным умножением исходных двух. Есть еще фишка в скалярном умножении двух векторов, оно есть косинус угла между ними. Соответсвенно из него и вытекает условие перпендикулярности. Я вот чую задом, что можно легко, практически без вычислений и систем уравнений, Находить три ортогональных вектора.
Команда cross это на блитце(хорсе) или на хсхл? |
Ответ: Имитация водной поверхности.
на хлсл
|
Ответ: Имитация водной поверхности.
Запилил кучку простых функций слегка расширяющих зdmath. Теперь я имею следующую проблему:
Код:
Function RollVector(angle#,x1#,y1#,z1#,x2#,y2#,z2#) причем косяк в отбрасывании дрбной части проявляется если я пытаюсь сделать вектор длинной 1, пофиг руками или xtformnormal. Куда эту хрень нужно ударить бубном, чтобы она стала выдавать числа полностью? |
Ответ: Имитация водной поверхности.
Function RollVector#(...
? |
Ответ: Имитация водной поверхности.
Неа.
Может косяк только у меня происходит? Код:
Include "xors3d.bb" |
Ответ: Имитация водной поверхности.
Косяк оказался в этой части:
vectorx#=(x1#+x3#*d#)/Sqr#(1+Tan#(angle#)) vectory#=(y1#+y3#*d#)/Sqr#(1+Tan#(angle#)) vectorz#=(z1#+z3#*d#)/Sqr#(1+Tan#(angle#)) В другой функции все передавалось правильно, а в этой уже только целые наружу выходили, причем не как целая часть, а округленные. Где-то они неведомым образом превращались в целые, наплевав, что они обьявлены вот так в начале программы: Global vectorx#,vectory#,vectorz# Я так понимаю, что в бэйсике сделав так: global var1# var=15/3 ; запишет в var float var=153/14 ; запишет уже только интежер. В следующем цикле в первый раз все опять таки правильно выполнится. А второй вызов будет считать переменную уже только целочисленной. У меня нечто такое происходит почему то. Так и должно быть? |
Ответ: Имитация водной поверхности.
Цитата:
vectory#=(y1#+y3#*d#)/Sqr#(1.0+Tan#(angle#)) vectorz#=(z1#+z3#*d#)/Sqr#(1.0+Tan#(angle#)) :cool: :-D |
Ответ: Имитация водной поверхности.
Спасибо, я сам не просек бы в этом году точно :) Правда я уже сделал вывод через массив и там вроде пофиг на такие ньансы.
|
Ответ: Имитация водной поверхности.
![]() Результат экспериментов с векторами. Сделал: Cross(x1#,y1#,z1#,x2#,y2#,z2#) векторное произведение. RollVector(angle#,x1#,y1#,z1#,x2#,y2#,z2#) -поворот вектора 1 в плоскости векторов 1 и 2. Normalize(x#,y#,z#) эмм... думаю большинство догадывается, что оно делает. GetAnyOrt(x#,y#,z#) выдает перпендикуляр к вектору. Bisec(x1#,y1#,z1#,x2#,y2#,z2#) возвращает биссектрису. VecLength#(x#,y#,z#) возвращает длину. MirVec(x1#,y1#,z1#,x2#,y2#,z2#) отражает вектор 1 от плоскости с нормалью 2 |
Ответ: Имитация водной поверхности.
codeblocks-10.05mingw-setup.exe
Кака или делишиос? |
Ответ: Имитация водной поверхности.
![]() Рисование траектории за объектом. Из-за того, что хорс, походу, наивно полагает, что меш всегда лежит в пределах ((-мешширина;мешширина);(-мешвысота;мешвысота);(-мешглубина;мешглубина)) пришлось прикручивать траекторию не мешом, а сюрфейсом, чтобы хорс её рисовал когда действительно надо, а не когда как ему кажется нужно. |
Ответ: Имитация водной поверхности.
Есть функция для переназначения BoundingBox'а. Т.к. именно по нему происходит вычисление Frustum Culling'а.
|
Ответ: Имитация водной поверхности.
Это?
Цитата:
Цитата:
Шо це? BBDECL void BBCALL xVertexTangent ( Surface * surface, int vertex, float x, float y, float z ) Sets the tangent of an existing vertex. Parameters: surface Surface handle vertex Vertex index x Tangent x of vertex y Tangent y of vertex z Tangent z of vertex BBDECL void BBCALL xVertexBinormal ( Surface * surface, int vertex, float x, float y, float z ) Sets the binormal of an existing vertex. Parameters: surface Surface handle vertex Vertex index x Binormal x of vertex y Binormal y of vertex z Binormal z of vertex |
Ответ: Имитация водной поверхности.
Во-первых, для таких целей есть шейдеры.
Во-вторых, зачем каждый раз удалять поверхность и создавать ее заново? В-третьих, есть волшебный флаг Код:
xCreateSurface (Entity *entity, Brush *brush=NULL, bool dynamic=false) |
Ответ: Имитация водной поверхности.
Лениво было выводить формулы соответствия ячеек массива и индексов вершин.
Просто в шейдерах я совсем дебил. И пока не догоню векторы не особо хочу в них лезть. |
Часовой пояс GMT +4, время: 21:29. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot