Математика для программирования 3D

Модератор: Модераторы разделов

Аватара пользователя
Ink-85
Сообщения: 222
Статус: полный привет
ОС: Mac OS, Ubuntu 8.04

Математика для программирования 3D

Сообщение Ink-85 »

Всем Привет,

Я занялся изучением С++ и программированием 3D, но по образованию я архитектор и математика в вузе была только 1 год.(Уже все забыл :))
Помогите какие можно почитать учебники (с задачами) по 3D? Какой раздел алгебры или геометрии изучает 3D пространство и 3D фигуры (Линейная алгебра, Аналитическая геометрия)?
Нужны учебники и справочники по этой теме?Желательно с интересными примерами! Часто встречаются очень сухие учебники, а есть очень захватывающие и интересные!
Понимаю ,что изучение разделов математики который занимается 3D очень сложные так что можно посоветовать или хороший справочник или учебник по высшей математике.
Интересуют Сферы кубы поверхности , параметрические поверхности и т.д.

Большое всем спасибо.
Спасибо сказали:
Аватара пользователя
Red Gremlin
Сообщения: 512
Статус: самоучка
ОС: Rosa 2016 Fresh

Re: Математика для программирования 3D

Сообщение Red Gremlin »

"В мире есть случайность, есть предопределенность и есть то, что ты планируешь совершить."
Спасибо сказали:
Аватара пользователя
Ink-85
Сообщения: 222
Статус: полный привет
ОС: Mac OS, Ubuntu 8.04

Re: Математика для программирования 3D

Сообщение Ink-85 »

Кто заниматься программированием для 3D насколько все это важно знать, и дайте несколько советов. С чего Вы начинали?
Спасибо сказали:
Аватара пользователя
Ink-85
Сообщения: 222
Статус: полный привет
ОС: Mac OS, Ubuntu 8.04

Re: Математика для программирования 3D

Сообщение Ink-85 »

Насколько сложно написать такую программу. Создание плоскости по двум направляющим. И чтобы ее точки и направляющие можно было динамически изменять.
http://www.opencascade.org/_popup/379/

И в чем состоит сложность в программировании параметрического 3D?
Спасибо сказали:
Аватара пользователя
Denjs
Сообщения: 1685
ОС: SuSe 10.2

Re: Математика для программирования 3D

Сообщение Denjs »

Ink-85 писал(а):
11.02.2010 15:16
Какой раздел алгебры или геометрии изучает 3D пространство и 3D фигуры (Линейная алгебра, Аналитическая геометрия)?

Кажется дискретная математика. По крайней мере именно там определяются уравнения трех/двух/N-мерных фигур (плоскость, шар, прямая), решаются различные (в институтском курсе АСУ например - относительно простые) задачи по поиску уравнения линии пересечения плоскостей, точки пересечения плоскости и прямой, поиск координат проекций точки на плоскость; поиск расстояния между прямыми; расстояние между прямой и точкой и т.п. ваот например кусок лекции найденный случайно на просторах инета - http://www.rodikova.ru/analitic/plos_and_pros/index.html - полагаю это примерно то что вам нужно?

Думаю в большинстве случаев, для программирования 3D в современных средах это _возможно_ необходимо знать только как теоретическую основу.

В свое время я рисовал как курсовую(?) программку которая позволяет "вращать на экране какую-то трехмерную фигуру"..

Основы были почерпнуты за несколько лет до этого из книжки "Графика ZX-Spectrum" ( http://www.zxpress.ru/book.php?id=13 ). В принципе была такая-же книга и для IBM-PC и тогдашнего QuickBasic, но найти оную на просторах инета сейчас не смог.

В книжке рассказывается об основах 3D-графики, типах проекций, даже дается 2 алгоритма удаления невидимых линий. (Единственное - они описывают преобразования через матрицы, а я их никогда не любил и особо понять не старался, потому я рисовал некоторые вещи более простыми способами по мотивам уравнений, которые как потом выяснилось относятся к разделу "дискретная математика")
В приципе этих знаний вполне должно хватить что бы сваять игрушку с графикой типа ELITE ( http://www.elite-games.ru/elite/museum.shtml ) (и даже лучшую, потому что в оригинальной элите используется простой алгоритм удаления невидимых линий для выпуклых фигур)

Вот заставка ELITE например :
Изображение ИзображениеИзображение
взято с http://www.bbcmicrogames.com/acornsoft.html и Википедии
QDroid - Среда исполнения и фреймворк для QtScript.
OTPD - Открытые драйвера промышленных принтеров чеков и этикеток (кроссплатформенная подсистема печати).
Спасибо сказали:
Аватара пользователя
gramozeka
Сообщения: 204
ОС: Slackware-14

Re: Математика для программирования 3D

Сообщение gramozeka »

... ну я же просил четыреста капель , а сдесь четыреста две ...
Спасибо сказали:
NickLion
Сообщения: 3408
Статус: аватар-невидимка
ОС: openSUSE Tumbleweed x86_64

Re: Математика для программирования 3D

Сообщение NickLion »

Ink-85
Ну, знания аналитической геометрии и линейной алгебры - обязательны. Либо использовать готовые библиотеки, которые это будут делать за Вас. Но даже в этом случае необходимы, хотя бы поверхностные знания, чтобы знать что искать.
Я уже приводил в пример книгу:
Эдвард Энджел "Интерактивная компьютерная графика. Вводный курс на базе OpenGL", ISBN: 5-8459-0209-6.
Хороша тем, что сначала даются красивые примерчики, можно сразу попробовать и уделяется достаточно много внимания основам 3D.

gramozeka
А ассемблер там каким боком то? Высшая математика тоже разная бывает, пределы, интегралы, дифференциалы и диффуры тут нужны будут разве что при работе с плотными телами и расчёте упругих и не очень деформаций. Так тут и знания физики понадобятся.
Спасибо сказали:
Аватара пользователя
Ink-85
Сообщения: 222
Статус: полный привет
ОС: Mac OS, Ubuntu 8.04

Re: Математика для программирования 3D

Сообщение Ink-85 »

Я вот нашел книгу :
1.Фундаментальные алгоритмы на C++ (1-5 части) Роберт Седжвик.
2.Компьютерная Геометрия и Алгоритмы, Никулин

Может кому-то будет интересно.
Так же достал свой старый справочник по математике :) буду в него смотреть если что-то не понятно будет.

TO NickLion глянул книгу которую вы посоветовал, очень хорошая и все доступно объясняться. Большое спасибо

iУведомление от модератора Portnov

Ссылки убрал. Варез на форуме запрещён.
Спасибо сказали:
Аватара пользователя
gramozeka
Сообщения: 204
ОС: Slackware-14

Re: Математика для программирования 3D

Сообщение gramozeka »

NickLion писал(а):
12.02.2010 10:26
Ink-85
Ну, знания аналитической геометрии и линейной алгебры - обязательны. Либо использовать готовые библиотеки, которые это будут делать за Вас. Но даже в этом случае необходимы, хотя бы поверхностные знания, чтобы знать что искать.
Я уже приводил в пример книгу:
Эдвард Энджел "Интерактивная компьютерная графика. Вводный курс на базе OpenGL", ISBN: 5-8459-0209-6.
Хороша тем, что сначала даются красивые примерчики, можно сразу попробовать и уделяется достаточно много внимания основам 3D.

gramozeka
А ассемблер там каким боком то? Высшая математика тоже разная бывает, пределы, интегралы, дифференциалы и диффуры тут нужны будут разве что при работе с плотными телами и расчёте упругих и не очень деформаций. Так тут и знания физики понадобятся.

как зачем !? Учиться програмировать(!) на С++ , да ещё 3D графику и не иметь представлений об Ассемблере ( хотя бы начальные ) - это пустая трата времени в итоге .(ИМХО так сказать ).
про физику согласен - тоже нужна , как для общего развития в общем ,так и для отдельных задач в частности . Да и некоторые методы решения задач математики в физике имеют более удобоваримое решение для переложения на С++, но ... на любителя ...
... ну я же просил четыреста капель , а сдесь четыреста две ...
Спасибо сказали:
Аватара пользователя
Portnov
Модератор
Сообщения: 1786
Статус: Матёрый линуксоид
ОС: Debian testing/unstable

Re: Математика для программирования 3D

Сообщение Portnov »

gramozeka писал(а):
12.02.2010 20:05
Учиться програмировать(!) на С++ , да ещё 3D графику и не иметь представлении об Ассемблере ( хотя бы начальные ) - это пустая трата времени в итоге .(ИМХО так сказать ).

Имеет смысл только в игрострое, да и то далеко не во всяком. Топикстартер далеко не игры писать собрался.
Работа: Ubuntu 9.10
Дом: Debian testing/unstable и на всякий случай winxp в virtualbox.
Для разнообразия: моя домашняя страница -http://iportnov.ru
Спасибо сказали:
Аватара пользователя
Ink-85
Сообщения: 222
Статус: полный привет
ОС: Mac OS, Ubuntu 8.04

Re: Математика для программирования 3D

Сообщение Ink-85 »

А почему Вы не советуете С++?
Учится программированию начел так как под Мак и Линукс мало программ параметрического моделирования. Сейчас новые движения в архитектуре - пытаються генерировать дизайн(образ) здания при помощи скриптов. В основном делают это на VB,C++ (Rhinoceros, Grasshopper), Mel (Autodesk Maya).
Сейчас ведеться разработка iRhino (Rhinoceros под Мак), но говорят что многие плагины они не будут переписывать так, как сам Рино написан на С++ и его легко перенести на Мак, а вот плагины на VB и C#!
Вот думаю начать программировать с плагинов на С++ для Рино, думаю сделать параметрическю сетку осей под колонны. А дальше если пойдет может и программки небольшие но полезные буду писать.Но с уклоном в 3D и параметризацию.

Вот сайты программ ,примеры скриптов и работы других архитекторов:

1.Rhinoceros/plugins: http://www.rhino3d.com/ http://wiki.mcneel.com/labs/home
2.iRhino: http://community.irhino3d.com/
3.Grasshopper for Rhino: http://www.grasshopper3d.com/
4. Работа архитекторов в компании Zaha Hadid : http://data-tribe.net/wework4her/index.php

Есть еще много примеров , но думаю этого хватит.
Спасибо сказали:
Аватара пользователя
begin2009
Сообщения: 349
Статус: Ламер со стажем
ОС: без глюков

Re: Математика для программирования 3D

Сообщение begin2009 »

Если я правильно Вас понял, то главное для Вас - аффинные преобразования. Ну и все соответствующее из линейной алгебры, конечно.
Пессимист видит темный туннель, оптимист видит свет в конце туннеля, реалист видит свет, туннель и поезд.
И только машинист видит этих трех идиотов, сидящих на рельсах.
Спасибо сказали:
Аватара пользователя
gramozeka
Сообщения: 204
ОС: Slackware-14

Re: Математика для программирования 3D

Сообщение gramozeka »

Portnov писал(а):
12.02.2010 20:51
gramozeka писал(а):
12.02.2010 20:05
Учиться програмировать(!) на С++ , да ещё 3D графику и не иметь представлении об Ассемблере ( хотя бы начальные ) - это пустая трата времени в итоге .(ИМХО так сказать ).

Имеет смысл только в игрострое, да и то далеко не во всяком. Топикстартер далеко не игры писать собрался.


мне лично помогло параллельное изучение С++ и Ассемблера - так сказать "стерео эффект", легче понимать какие-то фичи языка ...
... ну я же просил четыреста капель , а сдесь четыреста две ...
Спасибо сказали:
Аватара пользователя
Ink-85
Сообщения: 222
Статус: полный привет
ОС: Mac OS, Ubuntu 8.04

Re: Математика для программирования 3D

Сообщение Ink-85 »

А кто-то глянул на примеры которые я привел? На сколько это сложно и насколько надо углубляться в изучения математики программирования?
Что посоветуете?
И по делу в течении следующей неделе хочу начать делать параметрические строительные оси (просто сетка линий с размерами при изменении размера или угла все меняется)
Создам новую тему и сделаю презентацию по теме чтобы было наглядно что хочу создать.

Спасибо
Спасибо сказали:
NickLion
Сообщения: 3408
Статус: аватар-невидимка
ОС: openSUSE Tumbleweed x86_64

Re: Математика для программирования 3D

Сообщение NickLion »

Ink-85 писал(а):
13.02.2010 00:58
А кто-то глянул на примеры которые я привел? На сколько это сложно и насколько надо углубляться в изучения математики программирования?
Что посоветуете?

Ну, основная сложность там, вроде бы в создании самого объекта :) А это уже не программист делает.
Тут вопрос какой инструментарий надо предоставить. Если распишете это - скажем насколько сложно, а так я не представляю что нужно конечному пользователю.
Что касается http://data-tribe.net/wework4her/index.php , то тут придётся познакомиться ещё и с физикой протекающих процессов. Но думаю расчёт прочности конструкции, вентиляцию и т.п. стоит оставить на следующий этап. Всё и сразу не получится.
Спасибо сказали:
Аватара пользователя
Ink-85
Сообщения: 222
Статус: полный привет
ОС: Mac OS, Ubuntu 8.04

Re: Математика для программирования 3D

Сообщение Ink-85 »

После долгого отсутствия, продолжаю заниматься программированием С++.
Пока изучение С++ на уровне написания маленьких программ типа калькулятора базы данных семейного бюджета :) и еще написал в офисе прогу контроля выполнения проектов с графиком времени. Но это все в очень примитивных графических оболочках до NURBS и OpenGL не дошел. И вот свежие вопросы :)

Посмотрите ссылки.(видео и картинки) Архитектурная компания которая создала группу разработчиков маленьких программ для архитекторов. Говорят что пишут в Java и OpenGL.
Подскажите:

1. На сколько сложные эти примеры и намного ли они станут сложнее если туда добавит функции рассекания объектов?
2. Если это у них Nurbs, то они скорее всего используют уже готовую библиотеку?
3.Интересно как они в свою программу загоняют 3D объекты? И можно ли их экспортировать от туда?

http://aedasresearch.com/features/view/all...e-for-wingardhs
http://aedasresearch.com/features/view/all...ect/fxy-seating
http://aedasresearch.com/features/view/all...cies-and-layout
Спасибо сказали: