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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.03.2015, 18:03   #1
nastenakawai
Новичок
Джуниор
 
Регистрация: 01.03.2015
Сообщений: 1
Радость Движение ромба по окружности

Ромб начинает вращение, но сжимается в точку, помогите исправить?
Нужно реализовать два варианта, либо по окружности, либо вокруг своего центра, как здесь(почти)
Код:
#include <stdio.h>
#include <iostream.h>
#include <conio.h>
#include <graphics.h>
#include <dos.h>
#include <math.h>

class Rhomb
	{
	private:
		int x,y,a,b,D;
	public:
		Rhomb(int,int,int,int,int);
		void PutX(int);
		void PutY(int);
		void PutD(int);
		int GetX();
		int GetY();
		void Show();
		void Hide();
		void TurnSelf(int);
	};
void Rhomb::Rhomb(int x,int y,int a,int b,int D)
		{
		this->x=x;
		this->y=y;
		this->a=a;
		this->b=b;
		this->D=D;
		}
void Rhomb::PutX(int x){this->x=x;}

void Rhomb::PutY(int y){this->y=y;}

void Rhomb::PutD(int D){this->D=D;}

int Rhomb::GetX(){return(x);}

int Rhomb::GetY(){return(y);}

void Rhomb::Show()
		{
		line(x-a/2+cos(D+3.14)*a/2,y+sin(D+3.14)*a/2,x+cos(D+3.14/2)*b/2,y+b/2+sin(D+3.14/2)*b/2);
		line(x-a/2+cos(D+3.14)*a/2,y+sin(D+3.14)*a/2,x+cos(D+3.14*3/2)*b/2,y-b/2+sin(D+3.14*3/2)*b/2);
		line(x+a/2+cos(D+3.14*2)*a/2,y+sin(D+3.14*2)*a/2,x+cos(D+3.14/2)*b/2,y+b/2+sin(D+3.14/2)*b/2);
		line(x+a/2+cos(D+3.14*2)*a/2,y+sin(D+3.14*2)*a/2,x+cos(D+3.14*3/2)*b/2,y-b/2+sin(D+3.14*3/2)*b/2);
		}
void Rhomb::Hide()
		{
		unsigned TempColor;
		TempColor=getcolor();
		setcolor(getbkcolor());
		line(x-a/2+cos(D+3.14)*a/2,y+sin(D+3.14)*a/2,x+cos(D+3.14/2)*b/2,y+b/2+sin(D+3.14/2)*b/2);
		line(x-a/2+cos(D+3.14)*a/2,y+sin(D+3.14)*a/2,x+cos(D+3.14*3/2)*b/2,y-b/2+sin(D+3.14*3/2)*b/2);
		line(x+a/2+cos(D+3.14*2)*a/2,y+sin(D+3.14*2)*a/2,x+cos(D+3.14/2)*b/2,y+b/2+sin(D+3.14/2)*b/2);
		line(x+a/2+cos(D+3.14*2)*a/2,y+sin(D+3.14*2)*a/2,x+cos(D+3.14*3/2)*b/2,y-b/2+sin(D+3.14*3/2)*b/2);
		setcolor(TempColor);
		}
void Rhomb::TurnSelf(int DX)
		{
		Hide();
		PutD(D+DX);
		Show();
		}
int main()
{
int gdriver=DETECT,gmode,errorcode;
initgraph(&gdriver,&gmode,"");
errorcode=graphresult();
if(errorcode!=grOk)
	{
	cout<<"Grahics error: "<<grapherrormsg(errorcode)<<endl;
	cout<<"Press any key to halt:"<<endl;
	getch();
	return(1);
	}
Rhomb R1(200,200,10,50,0);
R1.Show();
getch();
while(!kbhit())
{
R1.TurnSelf(1);
delay(1000);
};
getch();
closegraph();
return(0);
};

Последний раз редактировалось Stilet; 01.03.2015 в 19:46. Причина: Неправильный заголовок
nastenakawai вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
движение по окружности(C#) liisasha Помощь студентам 0 13.06.2012 17:03
Движение окружности What's_That? Паскаль, Turbo Pascal, PascalABC.NET 11 28.07.2011 21:19
движение окружности по окружности MyQwErTy Помощь студентам 13 04.11.2008 22:52
Движение окружности Ensoph Помощь студентам 4 25.09.2008 12:11
Движение по окружности Mickle Общие вопросы Delphi 3 13.04.2007 16:24