Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2009.12.13;
Скачать: [xml.tar.bz2];

Вниз

Построение пространства из точек.   Найти похожие ветки 

 
Dimon Dimonich   (2008-12-02 23:58) [0]

Здрасте, товарищи. Пишу диплом, нужен Ваш совет. Есть совокупность точек(допустим 100). Каждая имеет свои координаты по Х У Z. Мне надо построить это пространство в трехмерном виде с возможностью масштабирования. OpenGL совсем не хочется, а в голову мысли кроме изощренной геометрии с пересчетом координат при изменении масштабирования, ничего не лезет. Насоветуйте дельных мыслей) Tchart не предлагать. Заранее спасибо.


 
KilkennyCat ©   (2008-12-03 00:12) [1]

Уроки черчения в школе были?


 
Dimon Dimonich   (2008-12-03 11:04) [2]

Конечно были. Вот под эти я и имею ввиду изощренную геометрию. Я думал, мб есть элемент подобный для построения 3-х мерных объектов по точкам


 
@!!ex ©   (2008-12-03 11:06) [3]

DrawPolygon


 
@!!ex ©   (2008-12-03 11:07) [4]

Только перспективу надо саму расчитать. Это одна строчка кода. нету ничего страшного. Я помойму тут выкладывал класс, который по массиву точек строит 3Д графики через Canvas.


 
Сергей М. ©   (2008-12-03 11:08) [5]


> думал, мб есть элемент


Что ты называешь "элементом" ?
OpenGL и TChart ведь тоже своего рода "элементы" ..


 
@!!ex ©   (2008-12-03 11:13) [6]

> [5] Сергей М. ©   (03.12.08 11:08)

элемент == компонент?
:))


 
Dimon Dimonich   (2008-12-03 11:26) [7]

Да, конечно же компонент, прошу прощения за мой прогаммерский)
@!!ex, если не сложно, выложите плз еще раз этот класс. Мне кажется это то, что нужно.
Спасибо за ответы.


 
Dimon Dimonich   (2008-12-03 11:30) [8]

Да, и прошелся поиском, не нашел ничего про DrawPoligon. Стыдно, за дельфи последнй раз садился лет 5 назад, по образованию не программер, а диплом вот дали программу написать. Не серчайте за глупые вопросы)


 
Сергей М. ©   (2008-12-03 11:33) [9]


> Dimon Dimonich


Так тебя интересует проволочная модель что ли ?
Или тебе все в одном компоненте подавай - и текстурирование, и освещение, и сглаживание, и удаление невидимых граней ?


 
Dimon Dimonich   (2008-12-03 11:40) [10]

Сергей М
Мне ни освещение, ни сглаживание не надо. Мне нужно чтобы я
1)Задал для компонента точку начала координат
2)построил 100 точек по 3(трем) координатам и получил некое облако, состоящее из 100 точек разного цвета))
Это в идеале. Я представляю, как это можно сделать математически с помощью канвы, но решил спросить, может быть есть менее изощренные способы.
http://plandin.narod.ru/allprog.files/image086.jpg - то ч то в идеале хотелось бы видеть на экране


 
Сергей М. ©   (2008-12-03 11:52) [11]


> Задал .. точку начала координат


Этого не достаточно.
Нужен еще как минимум вектор взгляда, без него ни одна 3Д-сцена немыслима


 
Dimon Dimonich   (2008-12-03 11:58) [12]

Сергей М.
Есть мысли, как строить график, как на рисунке по ссылке?

> Этого не достаточно.Нужен еще как минимум вектор взгляда,
>  без него ни одна 3Д-сцена немыслима

Да, я уже понял, что не достаточно.


 
Сергей М. ©   (2008-12-03 12:03) [13]


> Dimon Dimonich   (03.12.08 11:58) [12]


На рисунке явно изометрическая проекция, это даже упорощает дело, и TChart с этим успешно справится.. Не знаю почему ты от него отказываешься ..


 
Dimon Dimonich   (2008-12-03 12:10) [14]

Сергей М.
Нижние два графика-да, проекция... Но Тчарт не хочет с тремя координатами работать, а мне нужен вид такой, как верхний график( как трехмерный рельеф местности). Или я что-то не знаю, про Тчарт? о_0 =)


 
Сергей М. ©   (2008-12-03 12:16) [15]


> Тчарт не хочет с тремя координатами работать


Пардон, TChartFx (см. закладка ActiveX)


 
oxffff ©   (2008-12-03 12:19) [16]

Зря пугаешься Projection Matrix.
Как считать.
http://msdn.microsoft.com/en-us/library/bb205350(VS.85).aspx

что это
http://www.intuit.ru/department/graphics/direct3dhlsl/6/4.html

Далее умножаешь свой вектор на эту матрицу это и есть проекция на плоскость.


 
oxffff ©   (2008-12-03 12:21) [17]

Импортируй из d3dx9dll функцию D3DXMatrixPerspectiveFovLH


 
oxffff ©   (2008-12-03 12:27) [18]

Ну и о чем тебе написали в Сергей М. ©   (03.12.08 11:52) [11]

D3DXMATRIX *D3DXMatrixLookAtLH(          D3DXMATRIX *pOut,
   CONST D3DXVECTOR3 *pEye,
   CONST D3DXVECTOR3 *pAt,
   CONST D3DXVECTOR3 *pUp
);


 
Dimon Dimonich   (2008-12-03 12:47) [19]

Спасибо за советы. Буду пробовать.


 
@!!ex ©   (2008-12-03 14:15) [20]

> [10] Dimon Dimonich   (03.12.08 11:40)

Вот так выглядит у меня:
http://img229.imageshack.us/my.php?image=software3deu4.jpg

К сожалению сделать корректный High Quality Render руки так и не дошли. Что-то там не так с растеризацией треугольника. Заказчику вполне было достаточно низкокачественного рендера, поэтому так и осталось.
Теней нет, но можно сделать довольно просто.

То, что тебе нужно, находится в uCanvas3D.pas, там класс, реализующий отрисовку поверхности. DrawSurface по массиву точек строит поверхность в high Quality, как виндо из скрина - некорретктно строит, поэтому пользуйся методами Triangle,Quad или DrawPoly, они выглядят похуже, зато корректно работают.

Здесь лежат сорсы и пример отрисовки bmpшной карты высот.
http://www.mediafire.com/?zmynjyvodv1

Я помочь ничем больше не смогу, ибо до пятницы у меня нет инета.
Удачи.



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2009.12.13;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.49 MB
Время: 0.006 c
13-1124196631
Bronco
2005-08-16 16:50
2009.12.13
ADO.NET: можно ли преобразовать DBNull ?


2-1256117947
xyz
2009-10-21 13:39
2009.12.13
перебор выделенных строк в DBGridEh


2-1256543498
mw_Kronos
2009-10-26 10:51
2009.12.13
Глюкии ввода-вывода ReWrite


2-1256168975
TIF
2009-10-22 03:49
2009.12.13
Отобразить кнопку на панели задач (TaskBar)


2-1256816360
Morgan128
2009-10-29 14:39
2009.12.13
Как отследить последнее действие клавы/мыши





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский