Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.05.2009, 20:17   #1
amdbodia
Пользователь
 
Аватар для amdbodia
 
Регистрация: 13.05.2009
Сообщений: 71
По умолчанию 3D-объекты в grapics.h

Я хочу сделать кубик, который будет вращаться вокруг одной из своих осей (x,y,z), при нажатии на соответствующую кнопку. То-есть, он вращается вокруг оси X, к примеру, я нажимаю на кнопку и он меняет своё вращение, начиная вращаться вокруг оси Z.
У меня получилось написать функции для вращения кубика вокруг одной из своих осей в зависимости от параметров, но на этом я запутался. Проблема в том, что параметры будут меняться после работы функции с начальными параметрами. Вот код, для наглядности выводит 3 кубика.
Код:
#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
#include <iostream.h>
#include<math.h>
#include<dos.h>
#define x getmaxx()/2
#define y getmaxy()/2
#define pi 3.14159

int cub_rotation(int xcl, int ycl, int xc2, int yc2, int rx, int ry, double i, int col);
int gdriver = DETECT, gmode, errorcode;
int initialization();
double i;



int main()
	{
	initialization();
	i=10;
	do
		{
		cub_rotation(x,y,x,y-75,50,25,i,RED);
		cub_rotation(x-75,y,x,y,25,75,i,15);
		cub_rotation(x-40,y+40,x-80,y+80,60,60,i,3);
		delay(10);
		cleardevice();
		i++;
		}
	while(!kbhit());
	getch();
	return 0;
	}

int initialization ()
	{
	initgraph(&gdriver, &gmode, "");
	errorcode = graphresult();
	if (errorcode != grOk)
		{
		cout<<"Graphics error: %s\n"<<grapherrormsg(errorcode);
		cout<<"Press any key to continue:";
		getch();
		exit(1);
		}
	return 0;
	}
	
int cub_rotation(int xc1,int yc1,int xc2,int yc2,int rx,int ry,double i,int col)
	{
	setcolor(col);
	line(xc1+rx*sin(i*pi/180),yc1-ry*cos(i*pi/180),xc1+rx*sin(i*pi/180+pi/2),yc1-ry*cos(i*pi/180+pi/2));
	line(xc1+rx*sin(i*pi/180+pi/2),yc1-ry*cos(i*pi/180+pi/2),xc1+rx*sin(i*pi/180+pi),yc1-ry*cos(i*pi/180+pi));
	line(xc1+rx*sin(i*pi/180+pi),yc1-ry*cos(i*pi/180+pi),xc1+rx*sin(i*pi/180+(pi*3)/2),yc1-ry*cos(i*pi/180+(pi*3)/2));
	line(xc1+rx*sin(i*pi/180+(pi*3)/2),yc1-ry*cos(i*pi/180+(pi*3)/2),xc1+rx*sin(i*pi/180),yc1-ry*cos(i*pi/180));

	line(xc2+rx*sin(i*pi/180),yc2-ry*cos(i*pi/180),xc2+rx*sin(i*pi/180+pi/2),yc2-ry*cos(i*pi/180+pi/2));
	line(xc2+rx*sin(i*pi/180+pi/2),yc2-ry*cos(i*pi/180+pi/2),xc2+rx*sin(i*pi/180+pi),yc2-ry*cos(i*pi/180+pi));
	line(xc2+rx*sin(i*pi/180+pi),yc2-ry*cos(i*pi/180+pi),xc2+rx*sin(i*pi/180+(pi*3)/2),yc2-ry*cos(i*pi/180+(pi*3)/2));
	line(xc2+rx*sin(i*pi/180+(pi*3)/2),yc2-ry*cos(i*pi/180+(pi*3)/2),xc2+rx*sin(i*pi/180),yc2-ry*cos(i*pi/180));

	line(xc1+rx*sin(i*pi/180),yc1-ry*cos(i*pi/180),xc2+rx*sin(i*pi/180),yc2-ry*cos(i*pi/180));
	line(xc1+rx*sin(i*pi/180+pi/2),yc1-ry*cos(i*pi/180+pi/2),xc2+rx*sin(i*pi/180+pi/2),yc2-ry*cos(i*pi/180+pi/2));
	line(xc1+rx*sin(i*pi/180+pi),yc1-ry*cos(i*pi/180+pi),xc2+rx*sin(i*pi/180+pi),yc2-ry*cos(i*pi/180+pi));
	line(xc1+rx*sin(i*pi/180+(pi*3)/2),yc1-ry*cos(i*pi/180+(pi*3)/2),xc2+rx*sin(i*pi/180+(pi*3)/2),yc2-ry*cos(i*pi/180+(pi*3)/2));
	return 0;
	}
Как дальше - хз.
amdbodia вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Объекты или... Lich Общие вопросы Delphi 1 03.06.2008 23:22
объекты в си Барби Помощь студентам 1 13.05.2008 01:10
3D объекты в Си g0liath Помощь студентам 2 20.04.2008 21:39
Потоки и объекты OrdJONY Общие вопросы Delphi 3 28.11.2007 21:59
com-объекты b-code Общие вопросы Delphi 0 15.03.2007 11:17