Форум 3DNews
Вернуться   Форум 3DNews > Программирование > Программирование

Ответ Создать новую тему
Опции темы Опции просмотра
Непрочитано 27.02.2006, 00:20   [включить плавающее окно]   #1
Nas
Мужской Бывалый
Автор темы
 
Аватар для Nas
 
Регистрация: 31.05.2003
Адрес: Москва
Выровнять фигуру по центру экрана после аффинных преобразований (С++).

Здравствуйте! Написал программу, которая строит фигуру по точкам и делает над ней аффинные преобразования (повороты на углы и сжатие-растягивание).

Проблема возникла, когда я захотел реализовать выравнивание фигуры по центру экрана после каждого аффинного преобразования.

Вот нужная часть кода:

Цитата
// Указываем макс. кол-во вершин фигуры
const max_num=12;

// Создаем структуру "точка"
struct point
{
long double x;
long double y;
};

// Создаем структуру "многоугольник"
struct polygon
{
int num;
point v[max_num];
};

// Описываем двенадцатиугольник
polygon dvenug=
{
12,
{{250,300},{250,250},{200,250},{200,150},{250,150},{250,100},
{450,100},{450,150},{500,150},{500,250},{450,250},{450,300}}
};
// Описываем "эталонный" двенадцатиугольник
polygon Fdvenug=dvenug;

TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}

И еще (сама функция):

Цитата
// ФУНКЦИЯ ВЫРАВНИВАНИЯ ПО ЦЕНТРУ ЭКРАНА



void center()
{
int centerX=346;
int centerY=217;
for (int i=0;i<dvenug.num;i++)
{
dvenug.v[i].x=dvenug.v[i].x+(centerX-Fdvenug[i].x);
dvenug.v[i].y=dvenug.v[i].y+(centerY-Fdvenug[i].y);
}


};
Все вроде правильно, но при компиляции выдается ошибка:

Цитата
[C++ Error] Unit1.cpp(95): E2094 'operator+' not implemented in type 'polygon' for arguments of type 'int'
Помогите пожалуйста разобраться, что я сделал не так.
__________________
Для умного сказано достаточно...

Последний раз редактировалось Nas; 27.02.2006 в 00:24.
Nas вне форума  
Конфигурация ПК
Ответить с цитированием
Непрочитано 01.03.2006, 19:42   [включить плавающее окно]   #2
Phodopus
Мужской Продвинутый
 
Регистрация: 05.10.2005
Адрес: Санкт-Петербург
Судя по сообщению (код не анализировал) ты пытаешься прибавить целое число к полигону..
А он (компилер) не знает как это сделать!!!
Phodopus вне форума  
Ответить с цитированием
Непрочитано 01.03.2006, 20:02   [включить плавающее окно]   #3
Nas
Мужской Бывалый
Автор темы
 
Аватар для Nas
 
Регистрация: 31.05.2003
Адрес: Москва
Ты не прав и прав одновременно. Короче, с твоей подачи я понял где ошибка.

Я не так обращался к координатам объекта Fdvenug.
Я обращался так: Fdvenug[i].x .
А надо: Fdvenug.v[i].x .

Phodopus, спасибо тебе большое! .
__________________
Для умного сказано достаточно...
Nas вне форума  
Конфигурация ПК
Ответить с цитированием
Непрочитано 03.03.2006, 16:45   [включить плавающее окно]   #4
Phodopus
Мужской Продвинутый
 
Регистрация: 05.10.2005
Адрес: Санкт-Петербург
Да нет проблем!
Phodopus вне форума  
Ответить с цитированием
Ответ Создать новую тему

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 01:12. Часовой пояс GMT +3.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 2000-2017 3DNews. All Rights Reserved.
Администрация 3DNews требует соблюдения на форуме правил и законов РФ
Серверы размещены в Hostkey