Модераторы: Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [Алгоритм] ну как же сделать-то??? поворот фигуры 
:(
    Опции темы
choodo
Дата 6.1.2008, 01:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 66
Регистрация: 28.5.2007

Репутация: нет
Всего: 0



Код

#include <math.h>
class TTriangle:public TRF
{
    //private://-------------------private

    public://--------------------public

    void Paint(int iColor);

    //constructors & destructors
    TTriangle();
    TTriangle(int ax,int ay, int iColor, int iSize, int iAngle);
    //~Triangle();
};
//public
//-----------------------------------------------------------
void TTriangle::Paint(int iColor)
{
    setcolor(iColor);

    circle(x,y,Size/2);

    //top
    int xt = x;
    int yt = y-(Size/2);
    //moveto(xt,yt);

    //1st
    int x1 = xt+(Size/2)*cos(Angle);
    int y1 = yt +(Size/2)*sin(Angle);

    moveto(x1,y1);

    //right
    int x2 = x1+(Size/2)*cos(120+Angle);
    int y2 = y1+(Size/2)*sin(120+Angle)+(Size/2);

    lineto(x2,y2);

    //left
    int x3 = x1-(Size/2)*cos(120+Angle);
    int y3 = y1+(Size/2)*sin(120+Angle)+(Size/2);

    lineto(x3,y3);

    //
    lineto(x1,y1);//3d line

}


собсно сабж. не догоняю как повернуть треугольник. помогите, пожалуйста

в основной прогрмамме в конструктор передаем координаты, размер и случайный угол, а потом еще вращть надо его, вращение на заданный угол не могу написать(
тока, плиз, не отсылайте никуда, там я был(codenet и тд.)
PM   Вверх
cardinal
Дата 6.1.2008, 02:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: 15
Всего: 99



choodo, ну про матрицы поворота почитай чтоли тогда...


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
choodo
Дата 6.1.2008, 17:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 66
Регистрация: 28.5.2007

Репутация: нет
Всего: 0



Код


void TTriangle::Paint(int iColor)
{
    setcolor(iColor);
    circle(x,y,size);

    float k=180/pi;

    int x0=size;
    int y0=0;
    //putpixel(x+x0,y+y0,8);

    int x1=(int)x0*cos(-90/k)+y0*(-sin(-90/k));
    int y1=(int)x0*sin(-90/k)+y0*cos(-90/k);

    //moveto(x1+x,y1+y);

    putpixel(x+x1,y+y1,iColor);

    int x2=(int)x0*cos(330/k)+y0*(-sin(330/k));
    int y2=(int)x0*sin(330/k)+y0*cos(330/k);
    //lineto(x2+x,y2+y);

    putpixel(x+x2,x+y2,iColor);

    int x3=(int)x0*cos(210/k)+y0*(-sin(210/k));
    int y3=(int)x0*sin(210/k)+y0*cos(210/k);

    putpixel(x+x3,x+y3,iColor);
    //lineto(x3+x,y3+y);




блиииин, ребят, ну че тут не так? 


верхнюю точку вывожу правильно, а 2 нижние гораздо ниже(
PM   Вверх
cardinal
Дата 6.1.2008, 17:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: 15
Всего: 99



А углы почему разные, если ты треугольник на один определенный угол повернуть хочешь?


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
choodo
Дата 6.1.2008, 18:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 66
Регистрация: 28.5.2007

Репутация: нет
Всего: 0



я вообще хочу нарисовать его сначала: 90, 210,330 градусов - вершины

сперва хоть точки расставить, а потом буду линии чертить. вот 2 нижние вершины у меня уходят ниже описанной окружности

Это сообщение отредактировал(а) choodo - 6.1.2008, 18:04
PM   Вверх
cardinal
Дата 6.1.2008, 18:45 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: 15
Всего: 99



В этих строках ошибка:
Код

putpixel(x+x2,x+y2,iColor);

Код

putpixel(x+x3,x+y3,iColor);

К чему ты y2 и y3 прибавляешь?


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
choodo
Дата 6.1.2008, 20:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 66
Регистрация: 28.5.2007

Репутация: нет
Всего: 0



нда... точно!
жаль не могу поднять рейтинг: не хватает постов.
спасибо
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Центр помощи | Следующая тема »


 




[ Время генерации скрипта: 0.0454 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.