Форум программистов, компьютерный форум, киберфорум
OpenGL
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.81/47: Рейтинг темы: голосов - 47, средняя оценка - 4.81
1977 / 833 / 115
Регистрация: 01.10.2012
Сообщений: 5,145
Записей в блоге: 2

Что делает координата "w"?

18.07.2017, 08:34. Показов 11405. Ответов 29
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте

Если возникло желание ответить типа
кури "однородные координаты"
То сразу сообщаю: курил. Собсно достаточно запомнить пару простых вещей - для точки даем w = 1, для вектора w = 0. Ну и появляется приятная возможность множить точку и вектор на одну и ту же матрицу. Забавно, но "не густо". Что еще? Могу ли я как-то разумно использовать это w? Напр дал не 1 а 2 или 0.5 - чем это мне грозит?

Мне кажется что разработчики действовали по принципу "с паршивой овцы хоть шерсти клок". Подравняться на 16 - желязячникам кайф, тем более 4 числа все равно нужны для цвета. Или я не прав, и есть какой-то глубинный смысл?

С уважением
Игорь
1
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
18.07.2017, 08:34
Ответы с готовыми решениями:

Связь: координата пикселя и координата вершины
Не могу никак разобраться с одной вещью: как координату вершины (OpenGL) получить в координате пикселя на экране. Если сцена не...

Описать структуру Трехмерный вектор с полями Координата х, Координата у, Координата z
Помогите исправить ! #include <stdlib.h> #include <stdio.h> #include <math.h> int main() { struct { double x; ...

Описать структуру Трехмерный вектор с полями Координата х, Координата у, Координата z
Описать структуру Трехмерный вектор с полями Координата х, Координата у, Координата z. Создать функцию длина (v), возвращающую дину...

29
 Аватар для snake32
3590 / 1720 / 236
Регистрация: 26.02.2009
Сообщений: 8,710
Записей в блоге: 5
31.07.2017, 14:53
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Igor3D Посмотреть сообщение
Все это понятно, ну и что с того? Пока я не видел ни одного примера где оперируют с вертексным w.
Хм. На ум приходят расчёты с кривизной пространства-времени(привет Эншейн). Например, нужно увидеть как сместиться группа вершин возле чёрной дыры. В W каждой вершины устанавливаем "коэф. кривизны пространства" в зависимости от расстояния до центра чёрной дыры и применяем к ним всем одну матрицу переноса. Можно конечно и по другому это сделать... просто как вариант... возможно не правильный
0
0 / 0 / 0
Регистрация: 07.07.2014
Сообщений: 3
31.07.2017, 21:03
Цитата Сообщение от Igor3D Посмотреть сообщение
Ну дам я его 0.5, в камере он окажется вдвое ближе - зачем мне такие хитрости? Я мог просто отодвинуть вертекс по z.
W для каждой координаты(XYZ) можно взять разный изменяя пропорции фигур и пространства.
0
Модератор
 Аватар для vxg
3410 / 2182 / 354
Регистрация: 13.01.2012
Сообщений: 8,473
01.08.2017, 06:36
Иногда в литературе можно увидеть геометрическую интерпретацию w на примере 2D - каждая точка представлена тремя координатами (2D + w), причём 2D компонента не используется напрямую - используются 2D координаты точки пересечения луча проходящего через центр координат и нашу точку и плоскости w = 1 (можно взять любое w - важно лишь то что плоскость не меняется). К сожалению это не столько наглядно сколько экзотично (точка - луч - WOW) так как это лишь интерпретация преобразований которые суть преобразования и не обязаны быть представимыми в материальной форме.
0
1977 / 833 / 115
Регистрация: 01.10.2012
Сообщений: 5,145
Записей в блоге: 2
01.08.2017, 06:38  [ТС]
Цитата Сообщение от snake32 Посмотреть сообщение
Хм. На ум приходят расчёты с кривизной пространства-времени(привет Эншейн).
Аналогично Но уж очень хитро-"делано". Хотелось бы увидеть простой, "земной" пример применения w, но его не видно. Ну ладно, надо так надо, будем заполнять единичками, это нетрудно.
0
Модератор
 Аватар для vxg
3410 / 2182 / 354
Регистрация: 13.01.2012
Сообщений: 8,473
01.08.2017, 06:44
snake32, да, внешне по принципу чём-то похоже на сферу Римана )
0
 Аватар для snake32
3590 / 1720 / 236
Регистрация: 26.02.2009
Сообщений: 8,710
Записей в блоге: 5
01.08.2017, 12:56
Цитата Сообщение от Igor3D Посмотреть сообщение
будем заполнять единичками, это нетрудно.
Вроде по стандарту OpenGL заполняет атрибут с единичками в конце автоматически, то есть не нужно явно передавать их в вершинный шейдер.
Например, атрибут можно описать в шейдере как vec4
glSlang
1
2
3
4
5
6
#version 330
uniform mat4 MVP;
in vec4 vertex;
void main(){
  gl_Position = MVP * vertex;
}
А в основной программе передать только одну X компоненту на вершину
glVertexAttribPointer( loc, 1, GL_FLOAT, GL_FALSE, 0, NULL);
vertex в шейдере дополнится так vec4(x,0,0,1)

для XY
glVertexAttribPointer( loc, 2, GL_FLOAT, GL_FALSE, 0, NULL);
vertex = vec4(x,y,0,1)

для XYZ
glVertexAttribPointer( loc, 3, GL_FLOAT, GL_FALSE, 0, NULL);
vertex = vec4(x,y,z,1)

Таким образом один и тот же шейдер используется с "разно-компонентными" атрибутами.

PS: Сколько памяти при этом ест атрибут мне не известно и как он заполнится с ivec4/dvec4 тоже.

Добавлено через 4 минуты
Ну это так, для справки, мы же в теме OpenGL )
0
1977 / 833 / 115
Регистрация: 01.10.2012
Сообщений: 5,145
Записей в блоге: 2
01.08.2017, 12:56  [ТС]
Цитата Сообщение от snake32 Посмотреть сообщение
Вроде по стандарту OpenGL заполняет атрибут с единичками в конце автоматически, то есть не нужно явно передавать их в вершинный шейдер.
То ясно, я имел ввиду извлечь какую-то практическую (утилитарную) пользу. А то затратили 4 байта на вертекс но ничего не имеем, как-то не по-хозяйски
0
60 / 2 / 0
Регистрация: 01.03.2017
Сообщений: 20
02.08.2017, 10:28
А мне нравится тема, интересная, я даже не задумывался о нетривиальных w в вертексах до умножения на mvp. Правильно ли я понял, получается w масштабирует перенос?
Еще такой момент, в ортографической проекции в матрице mvp m44=1. Получается, в этой проекции можно рисовать всякие трапеции меняя только w у пар точек?) Прикольно.
0
1977 / 833 / 115
Регистрация: 01.10.2012
Сообщений: 5,145
Записей в блоге: 2
08.08.2017, 10:15  [ТС]
А можно ли использовать W (однородные) чтобы определить пересечение отрезка (2 точки) с пресловутым "фрустумом"? Или, в общем случае, для определения пересечения луча/отрезка с пирамидой? Если да то как?
0
60 / 2 / 0
Регистрация: 01.03.2017
Сообщений: 20
09.08.2017, 09:38
Цитата Сообщение от Igor3D Посмотреть сообщение
А можно ли использовать W (однородные) чтобы определить пересечение отрезка (2 точки) с пресловутым "фрустумом"? Или, в общем случае, для определения пересечения луча/отрезка с пирамидой? Если да то как?
У меня так для фрастума получилось вроде - я искал в шейдере min,max значение параметра t в параметрической записи v = v0 + dv*t при условиях -w < x,y,z < w, w > 0 (ну точнее я избавлялся от отрицательного w у одной точки, поэтому искал только min - одну точку).
Даже работает как-то. Там правда есть один тонкий момент - неравенства вроде как строгие, а я на это несколько забил. Надеюсь, мне сейчас не откроют глаза, почему так делать нельзя - пришлость помучаться
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
09.08.2017, 09:38

Класс «Точка». В классе определить поля «координата X», «координата Y», автовычисляемое поле, хранящее расстояние от точки до начала координат,
Класс «Точка». В классе определить поля «координата X», «координата Y», автовычисляемое поле, хранящее расстояние от точки до начала...

Что такое угловая координата первой вершины у правильного n-угольника?
Добрый день уважаемые. Объясните пожалуйста, вот читаю статью про правильные n угольники Статья из Википедии ...

Класс "Точка". В классе определить поля "координата X", "координата Y"
В классе определить поля «координата X», «координата Y», автовычисляемое поле, хранящее расстояние от точки до начала координат,...

Не могу понять на что способен sort, и что делает его компаратор
Недавно мой знакомый рассказывал что-то про sort,говорил что с помощью него можно сортировать как хочешь и что хочешь,с сортировкой qSort и...

Объясните пожалуйста что за знак, что он делает и вычислить методом Куайна
Здравствуйте, задание 1.2, прошу вас объяснить знак (там палочка с полоской), и помочь решить, пытался найти и разобраться, но получилось...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
30
Ответ Создать тему
Новые блоги и статьи
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет: 1. Использовать системное время и дату, 2. Есть возможность вводить время и дату вручную. 3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber. Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео: https:/ / vkvideo. ru/ video-240781534_456239017 YouTube: eY5-5PyI9NM Текстовая версия
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства. Родственных связей существует 8 ступеней, такие как: p - отец P - мать q - муж Q - жена b - брат B - сестра s - сын S - дочь
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире. Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru