Текущее время: Ср 27 ноя 2024 8:33

Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ Сообщений: 259 ]  На страницу Пред.  1, 2, 3, 4, 5, 6, 7 ... 9  След.

Насколько хорошо Вы знаете язык программирования С++?
Я проффесиональный разработчик 2%  2%  [ 1 ]
Программирование - моё хобби 20%  20%  [ 10 ]
Я только начинающий 44%  44%  [ 22 ]
А что такое С++? 34%  34%  [ 17 ]
Всего голосов : 50
Автор Сообщение
 Сообщение Чт 22 янв 2009 4:12
Профиль  
Скриптизёр
Сообщения: 10646
Откуда: Мариуполь
Зарегистрирован: Пт 13 апр 2007 17:15
А правильно ли я говорю, что разные оси не могут лежать на одной прямой рассматриваемой плоскости? :hm:

Добавлено спустя 1 минуту 19 секунд:

Razum писал(а):
Чем рисовал?
PaintBrush!
Но не целиком.
Основное в Delphi через простенький алгоритм, потом подкорректировал PaintBrush'ом, а затем обработал в PhotoShop'е.)))

Добавлено спустя 9 минут 35 секунд:

2 Razum
Если у тебя получится смоделировать оси, то, имхо, должно получиться что-то похожее на те кривулины (которые соответствуют 4Д).
Если, конечно, у меня там хоть что-то правильно.


 Сообщение Пт 23 янв 2009 23:21
Профиль  
#105d99
Аватара пользователя
Сообщения: 15233
Откуда: Москва, сектор бетонных домов
Зарегистрирован: Пн 20 фев 2006 3:56
Товарищи, заявленная программа готова где-то на 2/3. Сейчас можно поглядеть интерфейс, который путем взаимодействия с мышой будет управлять преобразованиями координат. Кому интересно - дам исходники, перекомпильте их под венду и отдайте остальным екзешник.

Добавлено спустя 1 минуту 22 секунды:

Ах, да. Программа требует библиотеки GLUT.

Добавлено спустя 3 часа 9 минут 42 секунды:

Программа условно говоря, готова. Она функционирует и может поворачивать четверку взаимно перпендикулярных векторов в любой из шести взаимноперпендикулярных плоскостей. проекция пока что осуществляется на плоскость, натянутую на базис из двух первых координат.

Добавлено спустя 24 секунды:

Ща исходники выложу.

Добавлено спустя 8 минут 56 секунд:

http://devouringone.narod.ru/Ishodniki/4d/math4d.cpp
http://devouringone.narod.ru/Ishodniki/4d/main.cpp
http://devouringone.narod.ru/Ishodniki/4d/4d.h
Типа вот. Скомпильте под венду кто нето.


 Сообщение Сб 24 янв 2009 1:40
Профиль  
Скриптизёр
Сообщения: 10646
Откуда: Мариуполь
Зарегистрирован: Пт 13 апр 2007 17:15
GLUT есть. C++ нету.


 Сообщение Сб 24 янв 2009 2:07
Профиль  
#105d99
Аватара пользователя
Сообщения: 15233
Откуда: Москва, сектор бетонных домов
Зарегистрирован: Пн 20 фев 2006 3:56
Нам нужен Шаман, чтоб нашаманил экзешник.

Добавлено спустя 12 минут 16 секунд:

Что-то народ не прется. Выложу-ка скрин.
Изображение

Добавлено спустя 1 минуту 13 секунд:

Фигулька внизу - приблуда для управления проекциями. Юзается при помощи мышки.


 Сообщение Сб 24 янв 2009 2:11
Профиль  
Скриптизёр
Сообщения: 10646
Откуда: Мариуполь
Зарегистрирован: Пт 13 апр 2007 17:15
А если развернуть передом, какая картинка получается? (Т.е. симметричная)


 Сообщение Сб 24 янв 2009 2:35
Профиль  
#105d99
Аватара пользователя
Сообщения: 15233
Откуда: Москва, сектор бетонных домов
Зарегистрирован: Пн 20 фев 2006 3:56
Как понять "передом"? Ща попробую сделать симметричную...

Добавлено спустя 10 минут 1 секунду:

Все проекции на плоскость {(1,0,0,0)(0,1,0,0)}
Симметрия может быть такой.
Изображение
Вектора:
Код:
( 0.81093   0.039194   0.583829 0)
(-0.444935  0.689314   0.571733 0)
(-0.380032 -0.723402   0.576425 0)
( 0         0          0        1)

Желтый - первый вектор, фиолетовый - второй, бирюзовый - третий, белый - последний, четвертый.

Чтобы все четыре были одинаковы, пока не получается, когда получится - заскриню.

Добавлено спустя 8 минут 5 секунд:

Во, почти получилось.
Изображение
Код:
( 0.00592678   0.760155   0.582723   0.287339)
(-0.792531    -0.00215194 0.278406  -0.542568)
( 0.609783    -0.00494575 0.35071   -0.710734)
( 0.00491737  -0.64972    0.678179   0.343386)


Последний раз редактировалось Razum Сб 24 янв 2009 5:39, всего редактировалось 3 раз(а).

 Сообщение Сб 24 янв 2009 2:47
Профиль  
Скриптизёр
Сообщения: 10646
Откуда: Мариуполь
Зарегистрирован: Пт 13 апр 2007 17:15
Уу.. Жесть. Повертеть надо.
Кстати, если вставить туда тессеракт, и получится правильная картинка, значит, метод правильный.)


 Сообщение Сб 24 янв 2009 2:49
Профиль  
#105d99
Аватара пользователя
Сообщения: 15233
Откуда: Москва, сектор бетонных домов
Зарегистрирован: Пн 20 фев 2006 3:56
Кстати, у программы есть серьезный недостаток. Каждый поворот векторов вызывает их изменение в памяти. Поэтому со временем копится ошибка в каждой координате. Поэтому, если программу долго использовать, и активно вертеть картинку, то со временем вектора станут не очень-то ортогональными. Как вы можете убедиться, скалярное произведение двух первых векторов имеет модуль около 0.0000003. То-есть сильно, вообще говоря, от нуля отличается, что категорически очень плохо. И это при том, что был использован типа данных double, если использовать float, все будет еще более плачевно.


 Сообщение Сб 24 янв 2009 2:50
Профиль  
Скриптизёр
Сообщения: 10646
Откуда: Мариуполь
Зарегистрирован: Пт 13 апр 2007 17:15
Razum писал(а):
Чтобы все четыре были одинаковы, пока не получается, когда получится - заскриню.
Но они тогда не будут перпендикулярны. И, скорее всего, углы будут разные. Так, наверное, и должно быть. Самая первая картинка на правду похожа.


 Сообщение Сб 24 янв 2009 2:53
Профиль  
#105d99
Аватара пользователя
Сообщения: 15233
Откуда: Москва, сектор бетонных домов
Зарегистрирован: Пн 20 фев 2006 3:56
Обе картинки получены, не закрывая программу. А что насчет того, что невозможно сделать прямые углы и равные вектора - то это вряд ли, нужно просто постараться и грамотно их подогнать.


 Сообщение Сб 24 янв 2009 3:05
Профиль  
Скриптизёр
Сообщения: 10646
Откуда: Мариуполь
Зарегистрирован: Пт 13 апр 2007 17:15
Просто я не совсем понимаю как... С 3D ведь не сделаешь, верно? (Или это потому что их 3?) Там визуально по 120.
Это все если вдоль оси следующей (для 4Д это уже пятая) размерности смотреть.

Добавлено спустя 8 минут 29 секунд:

Качаю компилятор...........


 Сообщение Сб 24 янв 2009 3:09
Профиль  
#105d99
Аватара пользователя
Сообщения: 15233
Откуда: Москва, сектор бетонных домов
Зарегистрирован: Пн 20 фев 2006 3:56
Krogoth писал(а):
Качаю компилятор...........

Если еще не докачал, рекомендую MinGW.
В 3d невозможно сделать проекцию с тремя векторами, перпендикулярными друг другу и при этом одинаковой длины, в 4д это должно быть возможно засчет того, что один из векторов можно укоротить за счет четвертого измерения.


 Сообщение Сб 24 янв 2009 5:16
Профиль  
Скриптизёр
Сообщения: 10646
Откуда: Мариуполь
Зарегистрирован: Пт 13 апр 2007 17:15
Razum писал(а):
MinGW
Скачал и его.
Очень долго пытался скомпилировать, но ругается на мой glut. 27,5 Кб это тот, который надо?

Добавлено спустя 11 минут 4 секунды:

Всё. Скомпилировал.

Добавлено спустя 4 минуты 12 секунд:

Кстати говоря:
Изображение
=
Изображение
(№3)
Крута. :mrgreen:
Надо теперь понять, как оно (т.е. программа) получилось так. :smile:


 Сообщение Сб 24 янв 2009 5:22
Профиль  
#105d99
Аватара пользователя
Сообщения: 15233
Откуда: Москва, сектор бетонных домов
Зарегистрирован: Пн 20 фев 2006 3:56
Не знаю. Что именно ругает? Глютов, насколько я знаю, есть два - простой и glut32. Далее, проверь путь в директивах #include. Если в этих путях он не находит, поставь правильные. возможно, заместо GL/glut проканает gl/glut. Так же проверь, может слеш не в ту сторону.
Если ошибка в том, что не может найти какие-то функции из тех, что использованы в программе, то это, вероятно, из-за того, что библиотека glut не прилинкована. Под gcc это лечится указанием параметра -lglut, под мингвом наверно в настройках где-то можно указать, или указать непосредственно строку опций, которую дадут компилеру.
сам я компилировал отдельно math4d и main, а потом линковал. Под gcc это делается так:
# g++ math4d.cpp -c
# g++ main4d.cpp -c
Создадутся файлы main.o и math4d.o
# g++ -lglut math4d.o main.o -o exe
ехе - это имя результирующего экзешника.

Добавлено спустя 36 секунд:

2 Krogoth
А че не так то-было?
И выложи экзешник!

Добавлено спустя 26 секунд:

Как вертеть-то разобрался?


 Сообщение Сб 24 янв 2009 5:23
Профиль  
Скриптизёр
Сообщения: 10646
Откуда: Мариуполь
Зарегистрирован: Пт 13 апр 2007 17:15
2 Razum
Я с компилятором не сразу разобрался. Компилировал неправильно. (Забыл указать библиотеки OpenGl32 и Glu32)
Скомпилированный ВОТ. Вроде бы все, что нужно.


Последний раз редактировалось Krogoth Сб 24 янв 2009 14:01, всего редактировалось 2 раз(а).

 Сообщение Сб 24 янв 2009 5:24
Профиль  
#105d99
Аватара пользователя
Сообщения: 15233
Откуда: Москва, сектор бетонных домов
Зарегистрирован: Пн 20 фев 2006 3:56
На правую кнопку мышки - дамп векторных координат в терминал.


 Сообщение Сб 24 янв 2009 5:24
Профиль  
Скриптизёр
Сообщения: 10646
Откуда: Мариуполь
Зарегистрирован: Пт 13 апр 2007 17:15
Razum писал(а):
Как вертеть-то разобрался?
Да не, я не разобрался еще. От фонаря накрутил чего-то.
Но крутилка, конечно, оригинально реализована! :shock:


 Сообщение Сб 24 янв 2009 5:32
Профиль  
#105d99
Аватара пользователя
Сообщения: 15233
Откуда: Москва, сектор бетонных домов
Зарегистрирован: Пн 20 фев 2006 3:56
Крутилку я делал дольше всего, короче.
Базисные вектора, и символизирующие их в крутилке торчащие четыре линии:
1,0,0,0 - правая верхняя
0,1,0,0 - левая верхняя
0,0,1,0 - левая нижняя
0,0,0,1 - правая нижняя

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

Добавлено спустя 1 минуту 23 секунды:

Ах, да. При кручении имеет значение лишь сдвиг по горизонтали. В будущем, возможно сделаю задействованной обе оси мышки и упрощу крутилку.

Добавлено спустя 1 минуту 14 секунд:

Синяя плоскость на первый взгляд не работает, но это не так.


Последний раз редактировалось Razum Сб 24 янв 2009 5:36, всего редактировалось 1 раз.

 Сообщение Сб 24 янв 2009 5:36
Профиль  
Скриптизёр
Сообщения: 10646
Откуда: Мариуполь
Зарегистрирован: Пт 13 апр 2007 17:15
При...
Код:
( 0.5   0.5   -0.5   -0.5)
( 0.5   -0.5   -0.5   0.5)
( -0.5   -0.5   -0.5   -0.5)
( -0.5   0.5   -0.5   0.5)
...имеет вид следующее:
Изображение


 Сообщение Сб 24 янв 2009 5:37
Профиль  
#105d99
Аватара пользователя
Сообщения: 15233
Откуда: Москва, сектор бетонных домов
Зарегистрирован: Пн 20 фев 2006 3:56
Читак! Как шустро сделал! Руками задал?

Добавлено спустя 48 секунд:

Как подобрал правильные координаты? колись!


 Сообщение Сб 24 янв 2009 5:44
Профиль  
Скриптизёр
Сообщения: 10646
Откуда: Мариуполь
Зарегистрирован: Пт 13 апр 2007 17:15
2 Razum
Сначала желтенькой и зелененькой крутилкой уравниваю белый и желтый, бирюзовый и фиолетовый вектора соответственно так, чтобы их концы совпали, а потом разворачиваю их же (попарно уравненные) с помощью оранжевого и бирюзового уголочка в центре крутилки, пока между ними не установится прямой угол. А красная, как я понимаю, просто проекцию вращает.


 Сообщение Сб 24 янв 2009 5:53
Профиль  
#105d99
Аватара пользователя
Сообщения: 15233
Откуда: Москва, сектор бетонных домов
Зарегистрирован: Пн 20 фев 2006 3:56
Красная влияет на последующие преобразования. Это только в данной проекции кажется, что просто вращает, а на самом деле красная делает то же самое, что и все остальные.

Добавлено спустя 1 минуту 19 секунд:

Хм, как просто-то оказывается... А сам я что-то не догадался сразу...


 Сообщение Сб 24 янв 2009 5:53
Профиль  
Скриптизёр
Сообщения: 10646
Откуда: Мариуполь
Зарегистрирован: Пт 13 апр 2007 17:15
Классная штуковина получилась, однако.
И, наверное, все-таки правильная. В принципе, имея это, уже можно рассматривать какие-то объекты, такие, как тот же тессеракт, к примеру.


 Сообщение Сб 24 янв 2009 6:09
Профиль  
#105d99
Аватара пользователя
Сообщения: 15233
Откуда: Москва, сектор бетонных домов
Зарегистрирован: Пн 20 фев 2006 3:56
Исли будет интерес, сделаю какие-нето фигуры, возможно даже с закраской, а может, потом еще и свет сделаем.

Добавлено спустя 3 минуты 40 секунд:

Вообще, идеально было бы писать модули по отдельности... В смысле, я вам говорю, например, сделать функцию, которая делает то-то и то-то, и имеет такой-то прототип, а потом вместе все это собираем. Получится практичеки программирование по-взрослому...

Добавлено спустя 11 минут 14 секунд:

Интересная статейка "на тему"
http://www.michurin.com.ru/tetracub.shtml


 Сообщение Сб 24 янв 2009 15:54
Профиль  
Скриптизёр
Сообщения: 10646
Откуда: Мариуполь
Зарегистрирован: Пт 13 апр 2007 17:15
Сначала вот с синтаксисом хоть разберусь! А то кроме скриптов C-подобных не писал ничего.)))


 Сообщение Ср 28 янв 2009 4:56
Профиль  
#105d99
Аватара пользователя
Сообщения: 15233
Откуда: Москва, сектор бетонных домов
Зарегистрирован: Пн 20 фев 2006 3:56
Хочу спросить у вас совет.
Задача: Нужно организовать класс, где одно из полей данных будет представлять собой матрицу. То-есть двумерный массив, в простейшем варианте. Однако! Мне хотелось бы сделать этот класс обобщенным, чтобы можно было выставлять произвольные значения ширины и высоты матрицы, и чтобы это никак не сказывалось на всем остальном коде. Реализацию с использованием динамической памяти и определением ширины и высоты в период выполнения я делать не хочу, так как код станет менее наглядным и навряд ли более эффективным. Я хочу сделать определение матрицы в период компиляции.
То-есть, вероятно, придется использовать шаблоны. А как сделать такой шаблон, чтобы он параметризовался значениями ширины и высоты матрицы, причем произвольными.
Кто-нето знает, как такое сделать, не прибегая к дополнительным типам навроде
double array1[];
array1 array2[];

Добавлено спустя 1 час 8 минут 17 секунд:

Решил проблему. Решается элементарно и очевидно. Просто надо С++ хорошо знать. А вот Страуструп, зараза, и не написал в своей книжке, что так можно... Точнее, написал, но найти можно, либо читая все подряд(более чем 1000 страниц), либо уже зная, что и где искать.
В общем, если кому-то тоже не очевидно и интересно решение данной проблемы, напишу вам.


 Сообщение Ср 28 янв 2009 17:26
Профиль  
Механоид 5 поколения
Аватара пользователя
Сообщения: 1260
Откуда: island Syberia
Зарегистрирован: Ср 10 янв 2007 9:14
Мне интересно :)
Я Страуструпа только начал.

_________________
_=S.A.L.K.E.R.=_
"Кто кого еще порвет" - сказала Тузику грелка, надутая до 10 атмосфер
"У нас большие леса. Они способны без остатка поглотить любое воинское формирование" (с)


 Сообщение Ср 28 янв 2009 17:36
Профиль  
#105d99
Аватара пользователя
Сообщения: 15233
Откуда: Москва, сектор бетонных домов
Зарегистрирован: Пн 20 фев 2006 3:56
У Страуструпа нигде не написано простым и понятным языком, что вообще может быть в шаблоне.
template<class C> - наиболее часто встречающийся пример в его книжке. Создается впечатление, что только так и можно. Однако, могут быть и такие конструкции:
template <typename C>
template <template <class> class C> Шаблон - как параметр шаблона.
И вот, собственно, решившая мою задачу:
template <unsigned int C>
Насколько я понимаю формулы, при помощи которых описан синтаксис в приложении А, в угловых скобках может быть любая конструкция, которая объявляет переменную. По крайней мере со встроенными типами точно должно канать, насчет сложных типов навроде структур надо проверить.


 Сообщение Чт 29 янв 2009 15:33
Профиль  
Механоид 5 поколения
Аватара пользователя
Сообщения: 1260
Откуда: island Syberia
Зарегистрирован: Ср 10 янв 2007 9:14
Ааа... шаблоны.
Это тема. Со сложными обьектами тоже на ура идет.
Вот сегодня только столкнулся с конструкцией:
template<class> std::auto_ptr<T> Singleton<T>::instance_(0);
Это кстати к ОГРУ отношение имеет непосредственное.

_________________
_=S.A.L.K.E.R.=_
"Кто кого еще порвет" - сказала Тузику грелка, надутая до 10 атмосфер
"У нас большие леса. Они способны без остатка поглотить любое воинское формирование" (с)


 Сообщение Сб 31 янв 2009 12:10
Профиль  
Ограничитель
Аватара пользователя
Сообщения: 7028
Откуда: От верблюда!
Зарегистрирован: Ср 11 май 2005 9:48
http://www.mushware.com/
Программа вывода тессеракта (гиперкуб) (Tesseract Trainer) и четырёхмерный шутер от первого лица (Adanaxis).

Добавлено спустя 47 секунд:

Сам ещё не смотрел. Качаю. :smile:

Добавлено спустя 26 секунд:

Нашёл в википедии.

_________________
Земля, Земля - я Юпитер!
Зарисовка в стиле AIM - https://www.youtube.com/watch?v=JiWtIz9g3Uw


Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 259 ]  На страницу Пред.  1, 2, 3, 4, 5, 6, 7 ... 9  След.

Часовой пояс: UTC + 4 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB