Технологии
Решено
Из 2D фигуры в 3D (ввод третьей координаты) - вопрос №1698986
Заданы координаты точек некой фигуры
- tochk[0][0]=0; tochk[0][1]=130;
- tochk[1][0]=40; tochk[1][1]=90;
- tochk[2][0]=40; tochk[2][1]=40;
- tochk[3][0]=110; tochk[3][1]=40;
- tochk[4][0]=150; tochk[4][1]=0;
- tochk[5][0]=190; tochk[5][1]=40;
- tochk[6][0]=260; tochk[6][1]=40;
- tochk[7][0]=260; tochk[7][1]=90;
- tochk[8][0]=300; tochk[8][1]=130;
- tochk[9][0]=260; tochk[9][1]=170;
- tochk[10][0]=260;tochk[10][1]=220;
- tochk[11][0]=190;tochk[11][1]=220;
- tochk[12][0]=150;tochk[12][1]=260;
- tochk[13][0]=110;tochk[13][1]=220;
- tochk[14][0]=40;tochk[14][1]=220;
- tochk[15][0]=40;tochk[15][1]=170;
Можете объяснить, как лучше реализовать преобразование этой фигуры в 3д, не используя всяких навороченных методов?
Попытался немного схитрить и просто сделал дубликат этих точек с некоторым смещением.
- tochk[0][0]=0; tochk[0][1]=130; tochk[0][2]=tochk[0][0]+floor(tol*cos(ug)); tochk[0][3]=tochk[0][1]+floor(tol*sin(ug));
- tochk[1][0]=40; tochk[1][1]=90; tochk[1][2]=tochk[1][0]+floor(tol*cos(ug)); tochk[1][3]=tochk[1][1]+floor(tol*sin(ug));
- tochk[2][0]=40; tochk[2][1]=40; tochk[2][2]=tochk[2][0]+floor(tol*cos(ug)); tochk[2][3]=tochk[2][1]+floor(tol*sin(ug));
- tochk[3][0]=110; tochk[3][1]=40; tochk[3][2]=tochk[3][0]+floor(tol*cos(ug)); tochk[3][3]=tochk[3][1]+floor(tol*sin(ug));
- tochk[4][0]=150; tochk[4][1]=0; tochk[4][2]=tochk[4][0]+floor(tol*cos(ug)); tochk[4][3]=tochk[4][1]+floor(tol*sin(ug));
- tochk[5][0]=190; tochk[5][1]=40; tochk[5][2]=tochk[5][0]+floor(tol*cos(ug)); tochk[5][3]=tochk[5][1]+floor(tol*sin(ug));
- tochk[6][0]=260; tochk[6][1]=40; tochk[6][2]=tochk[6][0]+floor(tol*cos(ug)); tochk[6][3]=tochk[6][1]+floor(tol*sin(ug));
- tochk[7][0]=260; tochk[7][1]=90; tochk[7][2]=tochk[7][0]+floor(tol*cos(ug)); tochk[7][3]=tochk[7][1]+floor(tol*sin(ug));
- tochk[8][0]=300; tochk[8][1]=130; tochk[8][2]=tochk[8][0]+floor(tol*cos(ug)); tochk[8][3]=tochk[8][1]+floor(tol*sin(ug));
- tochk[9][0]=260; tochk[9][1]=170; tochk[9][2]=tochk[9][0]+floor(tol*cos(ug)); tochk[9][3]=tochk[9][1]+floor(tol*sin(ug));
- tochk[10][0]=260;tochk[10][1]=220; tochk[10][2]=tochk[10][0]+floor(tol*cos(ug));tochk[10][3]=tochk[10][1]+floor(tol*sin(ug));
- tochk[11][0]=190;tochk[11][1]=220; tochk[11][2]=tochk[11][0]+floor(tol*cos(ug));tochk[11][3]=tochk[11][1]+floor(tol*sin(ug));
- tochk[12][0]=150;tochk[12][1]=260; tochk[12][2]=tochk[12][0]+floor(tol*cos(ug));tochk[12][3]=tochk[12][1]+floor(tol*sin(ug));
- tochk[13][0]=110;tochk[13][1]=220; tochk[13][2]=tochk[13][0]+floor(tol*cos(ug));tochk[13][3]=tochk[13][1]+floor(tol*sin(ug));
- tochk[14][0]=40;tochk[14][1]=220; tochk[14][2]=tochk[14][0]+floor(tol*cos(ug));tochk[14][3]=tochk[14][1]+floor(tol*sin(ug));
- tochk[15][0]=40;tochk[15][1]=170; tochk[15][2]=tochk[15][0]+floor(tol*cos(ug));tochk[15][3]=tochk[15][1]+floor(tol*sin(ug));
Как это проще всего реализовать? В сети в основном с помощью OpenGL решается и т.п., мне такое не подходит)
Вопрос задан анонимно ноябрь 7, 2015 г.
-
Всего ответов: 1
-
Здравствуйте! Вы можете и не переходить в чистое 3d и не строить 3d фигуры, матрицы поворота и преобразования есть и в двумерном пространстве (см статью) — можете использовать однородные координаты.
Или добавить всем Вашим точкам z-координату, можно построить еще точек с другим z, чтобы потом построить полноценную 3d-фигуру и делать преобразования с ней.
Просто надо смотреть задание, какие вводные и что требуется добиться.Лучший ответ по мнению автора
Похожие вопросы
Решено
Дан текстовый файл F. Переписать в другой файл G все строки, содержащие цифры.
февраль 16, 2012 г.